{
  "info": {
    "_postman_id": "oncoCoreClincal-api-v1",
    "name": "OncoCore Clinical API",
    "description": "Complete API collection for OncoCore Clinical backend. Set {{base_url}} to http://localhost/OncoCoreClincal/public and {{token}} will auto-populate on login.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url", "value": "http://localhost/OncoCoreClincal/public", "type": "string" },
    { "key": "token", "value": "", "type": "string" },
    { "key": "refresh_token", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Health",
      "item": [
        {
          "name": "Health Check",
          "request": { "method": "GET", "url": "{{base_url}}/api/v1/public/health" }
        }
      ]
    },
    {
      "name": "Auth",
      "item": [
        {
          "name": "Register",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": "{{base_url}}/api/v1/auth/register",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"newuser@example.com\",\n  \"password\": \"Password123!\",\n  \"full_name\": \"New User\"\n}"
            }
          }
        },
        {
          "name": "Login",
          "event": [{
            "listen": "test",
            "script": {
              "exec": [
                "var json = pm.response.json();",
                "if (json.data && json.data.access_token) {",
                "  pm.environment.set('token', json.data.access_token);",
                "  pm.environment.set('refresh_token', json.data.refresh_token);",
                "  pm.collectionVariables.set('token', json.data.access_token);",
                "  pm.collectionVariables.set('refresh_token', json.data.refresh_token);",
                "  console.log('✅ token saved:', json.data.access_token.substring(0, 20) + '...');",
                "}"
              ]
            }
          }],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": "{{base_url}}/api/v1/auth/login",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"admin@oncocore.com\",\n  \"password\": \"Admin@123\"\n}"
            }
          }
        },
        {
          "name": "Refresh Token",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": "{{base_url}}/api/v1/auth/refresh",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"refresh_token\": \"{{refresh_token}}\"\n}"
            }
          }
        },
        {
          "name": "Logout",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/auth/logout"
          }
        },
        {
          "name": "Get Profile",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/auth/profile"
          }
        },
        {
          "name": "Get Menus",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/auth/menus"
          }
        },
        {
          "name": "Google Login",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": "{{base_url}}/api/v1/auth/google/login",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id_token\": \"GOOGLE_ID_TOKEN_HERE\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Doctor",
      "item": [
        {
          "name": "Search Doctors (public)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/api/v1/doctors/search?specialty=oncology&gender=male&limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "doctors", "search"],
              "query": [
                { "key": "specialty", "value": "oncology" },
                { "key": "gender", "value": "male" },
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Get My Profile",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/doctor/profile"
          }
        },
        {
          "name": "Update My Profile",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/profile",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"display_name\": \"Dr. John Smith\",\n  \"license_no\": \"PMD-12345\",\n  \"gender\": \"male\",\n  \"bio\": \"Experienced oncologist\",\n  \"years_experience\": 10,\n  \"specialties\": [1, 2]\n}"
            }
          }
        },
        {
          "name": "Submit for Verification",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/verification/submit"
          }
        },
        {
          "name": "Get Availability Rules",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/doctor/availability/rules"
          }
        },
        {
          "name": "Set Availability Rule",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/availability/rules",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"day_of_week\": 1,\n  \"start_time\": \"09:00:00\",\n  \"end_time\": \"17:00:00\",\n  \"slot_duration_minutes\": 30,\n  \"appointment_type\": \"in_person\"\n}"
            }
          }
        },
        {
          "name": "Set Availability Exception",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/availability/exceptions",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"exception_date\": \"2026-05-01\",\n  \"is_blocked\": 1,\n  \"reason\": \"Public holiday\"\n}"
            }
          }
        },
        {
          "name": "Set Fee Rule",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/fee-rules",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"appointment_type\": \"in_person\",\n  \"fee_amount\": 1500,\n  \"follow_up_fee\": 500,\n  \"currency\": \"PKR\"\n}"
            }
          }
        },
        {
          "name": "Delete Availability Rule",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/availability/rules",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 1\n}" }
          }
        },
        {
          "name": "Set Weekly Availability (bulk)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/availability/weekly",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"replace\": true,\n  \"rules\": [\n    {\n      \"day_of_week\": 1,\n      \"start_time\": \"09:00:00\",\n      \"end_time\": \"17:00:00\",\n      \"slot_duration_minutes\": 30,\n      \"appointment_type\": \"in_person\"\n    },\n    {\n      \"day_of_week\": 2,\n      \"start_time\": \"09:00:00\",\n      \"end_time\": \"17:00:00\",\n      \"slot_duration_minutes\": 30,\n      \"appointment_type\": \"in_person\"\n    },\n    {\n      \"day_of_week\": 3,\n      \"start_time\": \"14:00:00\",\n      \"end_time\": \"18:00:00\",\n      \"slot_duration_minutes\": 30,\n      \"appointment_type\": \"online\"\n    },\n    {\n      \"day_of_week\": 4,\n      \"start_time\": \"09:00:00\",\n      \"end_time\": \"17:00:00\",\n      \"slot_duration_minutes\": 30,\n      \"appointment_type\": \"in_person\"\n    },\n    {\n      \"day_of_week\": 5,\n      \"start_time\": \"09:00:00\",\n      \"end_time\": \"13:00:00\",\n      \"slot_duration_minutes\": 30,\n      \"appointment_type\": \"in_person\"\n    }\n  ]\n}"
            }
          }
        },
        {
          "name": "List Availability Exceptions",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/doctor/availability/exceptions?from_date=2026-05-01",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "doctor", "availability", "exceptions"],
              "query": [{ "key": "from_date", "value": "2026-05-01" }]
            }
          }
        },
        {
          "name": "Delete Availability Exception",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/availability/exceptions",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 1\n}" }
          }
        },
        {
          "name": "List My Documents",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/doctor/documents"
          }
        },
        {
          "name": "Upload Document",
          "request": {
            "method": "POST",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/doctor/documents",
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "doc_type", "value": "degree", "type": "text" },
                { "key": "file", "type": "file", "src": "" },
                { "key": "verification_request_id", "value": "", "type": "text", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Delete Document",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/documents",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 1\n}" }
          }
        },
        {
          "name": "Doctor Stats",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/doctor/stats"
          }
        },
        {
          "name": "List My Clinics",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/doctor/clinics"
          }
        },
        {
          "name": "Add Clinic",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/clinics",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"City Medical Center\",\n  \"type\": \"clinic\",\n  \"phone\": \"+923001234567\",\n  \"email\": \"clinic@citymed.pk\",\n  \"description\": \"Multi-specialty clinic\",\n  \"is_primary\": 1\n}"
            }
          }
        },
        {
          "name": "Remove Clinic",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/doctor/clinics",
            "body": { "mode": "raw", "raw": "{\n  \"clinic_id\": 1\n}" }
          }
        }
      ]
    },
    {
      "name": "Patient",
      "item": [
        {
          "name": "Get My Profile",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/patient/profile"
          }
        },
        {
          "name": "Update My Profile",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/patient/profile",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"full_name\": \"Jane Doe\",\n  \"gender\": \"female\",\n  \"dob\": \"1990-05-15\",\n  \"blood_group\": \"A+\"\n}"
            }
          }
        },
        {
          "name": "Update Medical Profile",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/patient/medical-profile",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"allergies\": \"Penicillin\",\n  \"chronic_conditions\": \"Hypertension\",\n  \"current_medications\": \"Amlodipine 5mg\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Admin",
      "item": [
        {
          "name": "List Users",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/users?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "users"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Update User Status",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/users/status",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"user_id\": 2,\n  \"status\": \"suspended\"\n}"
            }
          }
        },
        {
          "name": "List Doctors",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/doctors?approval_status=submitted",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "doctors"],
              "query": [{ "key": "approval_status", "value": "submitted" }]
            }
          }
        },
        {
          "name": "Doctor Documents (Admin)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/doctors/documents?doctor_id=1",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "doctors", "documents"],
              "query": [{ "key": "doctor_id", "value": "1" }]
            }
          }
        },
        {
          "name": "Pending Verifications",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/verifications/pending"
          }
        },
        {
          "name": "Review Verification",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/verifications/review",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"request_id\": 1,\n  \"decision\": \"approved\",\n  \"notes\": \"All documents verified.\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Appointments",
      "item": [
        {
          "name": "Get Available Slots (public)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/api/v1/appointments/slots?doctor_id=1&date=2026-05-15&appointment_type=in_person",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "appointments", "slots"],
              "query": [
                { "key": "doctor_id", "value": "1" },
                { "key": "date", "value": "2026-05-15" },
                { "key": "appointment_type", "value": "in_person" }
              ]
            }
          }
        },
        {
          "name": "Book Appointment",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/appointments/book",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"doctor_id\": 1,\n  \"appointment_date\": \"2026-05-10\",\n  \"appointment_start_time\": \"10:00:00\",\n  \"appointment_type\": \"in_person\",\n  \"reason\": \"Follow up consultation\"\n}"
            }
          }
        },
        {
          "name": "List My Appointments",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/appointments/list?status=booked",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "appointments", "list"],
              "query": [{ "key": "status", "value": "booked" }]
            }
          }
        },
        {
          "name": "Appointment Detail",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/appointments/detail?uuid=APPOINTMENT_UUID",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "appointments", "detail"],
              "query": [{ "key": "uuid", "value": "APPOINTMENT_UUID" }]
            }
          }
        },
        {
          "name": "Cancel Appointment",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/appointments/cancel",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"uuid\": \"APPOINTMENT_UUID\",\n  \"notes\": \"Patient request\"\n}"
            }
          }
        },
        {
          "name": "Complete Appointment",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/appointments/complete",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"uuid\": \"APPOINTMENT_UUID\",\n  \"notes\": \"Appointment completed successfully\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Payments",
      "item": [
        {
          "name": "Create Payment Order",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/payments/order",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"appointment_uuid\": \"APPOINTMENT_UUID\",\n  \"gateway\": \"stripe\",\n  \"discount_amount\": 0,\n  \"wallet_amount\": 0\n}"
            }
          }
        },
        {
          "name": "Get Payment Order",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/payments/order?uuid=ORDER_UUID",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "payments", "order"],
              "query": [{ "key": "uuid", "value": "ORDER_UUID" }]
            }
          }
        },
        {
          "name": "List My Orders",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/payments/orders?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "payments", "orders"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Wallet",
      "item": [
        {
          "name": "Get Balance",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/wallet/balance"
          }
        },
        {
          "name": "Get Ledger",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/wallet/ledger?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "wallet", "ledger"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Discounts",
      "item": [
        {
          "name": "Validate Code (public)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/api/v1/discounts/validate?code=SAVE10",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "discounts", "validate"],
              "query": [{ "key": "code", "value": "SAVE10" }]
            }
          }
        },
        {
          "name": "Apply Discount",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/discounts/apply",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"SAVE10\",\n  \"fee_amount\": 1500\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Prescriptions",
      "item": [
        {
          "name": "Create Prescription (Doctor)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/prescriptions/create",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"appointment_uuid\": \"APPOINTMENT_UUID\",\n  \"notes\": \"Take after meals\",\n  \"items\": [\n    {\n      \"medicine_name\": \"Paracetamol\",\n      \"dosage\": \"500mg\",\n      \"frequency\": \"3 times daily\",\n      \"duration\": \"5 days\",\n      \"instructions\": \"After meals\"\n    }\n  ]\n}"
            }
          }
        },
        {
          "name": "List My Prescriptions (Patient)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/prescriptions/list?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "prescriptions", "list"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Prescription Detail",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/prescriptions/detail?uuid=PRESCRIPTION_UUID",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "prescriptions", "detail"],
              "query": [{ "key": "uuid", "value": "PRESCRIPTION_UUID" }]
            }
          }
        }
      ]
    },
    {
      "name": "Content",
      "item": [
        {
          "name": "List Articles (public)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/api/v1/content/articles?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "content", "articles"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Get Article by Slug (public)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/api/v1/content/article?slug=my-article-slug",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "content", "article"],
              "query": [{ "key": "slug", "value": "my-article-slug" }]
            }
          }
        },
        {
          "name": "List Categories (public)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/api/v1/content/categories"
          }
        }
      ]
    },
    {
      "name": "Auth - Password Reset",
      "item": [
        {
          "name": "Forgot Password",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": "{{base_url}}/api/v1/auth/forgot-password",
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"testuser@example.com\"\n}" }
          }
        },
        {
          "name": "Reset Password",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": "{{base_url}}/api/v1/auth/reset-password",
            "body": { "mode": "raw", "raw": "{\n  \"token\": \"PLAIN_TOKEN_FROM_FORGOT_PASSWORD\",\n  \"password\": \"NewPassword123!\"\n}" }
          }
        },
        {
          "name": "Change Password (JWT)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/auth/change-password",
            "body": { "mode": "raw", "raw": "{\n  \"current_password\": \"Test123!\",\n  \"new_password\": \"NewTest123!\"\n}" }
          }
        }
      ]
    },
    {
      "name": "Notifications",
      "item": [
        {
          "name": "List Notifications",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/notifications?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "notifications"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Mark Notification Read",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/notifications/mark-read",
            "body": { "mode": "raw", "raw": "{\n  \"uuid\": \"NOTIFICATION_UUID\"\n}" }
          }
        },
        {
          "name": "Mark All Notifications Read",
          "request": {
            "method": "POST",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/notifications/mark-all-read"
          }
        }
      ]
    },
    {
      "name": "Appointments - Extended",
      "item": [
        {
          "name": "Change Appointment Status",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/appointments/change-status",
            "body": { "mode": "raw", "raw": "{\n  \"uuid\": \"APPOINTMENT_UUID\",\n  \"status\": \"confirmed\",\n  \"notes\": \"Confirmed by doctor\"\n}" }
          }
        },
        {
          "name": "Reschedule Appointment",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/appointments/reschedule",
            "body": { "mode": "raw", "raw": "{\n  \"uuid\": \"APPOINTMENT_UUID\",\n  \"appointment_date\": \"2026-05-15\",\n  \"appointment_start_time\": \"10:00:00\",\n  \"reason\": \"Patient requested reschedule\"\n}" }
          }
        }
      ]
    },
    {
      "name": "Admin - Dashboard",
      "item": [
        {
          "name": "Dashboard Stats",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/stats"
          }
        },
        {
          "name": "All Appointments (Admin)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/appointments?status=booked&limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "appointments"],
              "query": [
                { "key": "status", "value": "booked" },
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Credit Patient Wallet",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/wallet/credit",
            "body": { "mode": "raw", "raw": "{\n  \"user_id\": 3,\n  \"amount\": 500,\n  \"note\": \"Promotional credit\"\n}" }
          }
        }
      ]
    },
    {
      "name": "Admin - RBAC",
      "item": [
        {
          "name": "List Roles",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/rbac/roles"
          }
        },
        {
          "name": "Create Role",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/roles",
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Moderator\",\n  \"code\": \"moderator\",\n  \"description\": \"Content moderator role\"\n}" }
          }
        },
        {
          "name": "Update Role",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/roles",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 5,\n  \"name\": \"Moderator Updated\"\n}" }
          }
        },
        {
          "name": "Delete Role",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/roles",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 5\n}" }
          }
        },
        {
          "name": "List Permissions",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/rbac/permissions"
          }
        },
        {
          "name": "Create Permission",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/permissions",
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"View Reports\",\n  \"code\": \"reports.view\",\n  \"module\": \"reports\"\n}" }
          }
        },
        {
          "name": "Update Permission",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/permissions",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 10,\n  \"name\": \"View Reports Updated\"\n}" }
          }
        },
        {
          "name": "Delete Permission",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/permissions",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 10\n}" }
          }
        },
        {
          "name": "List Menus (tree)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/rbac/menus"
          }
        },
        {
          "name": "List Menus (flat)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/rbac/menus?flat=1",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "rbac", "menus"],
              "query": [{ "key": "flat", "value": "1" }]
            }
          }
        },
        {
          "name": "Create Menu",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/menus",
            "body": { "mode": "raw", "raw": "{\n  \"label\": \"Analytics\",\n  \"route\": \"/admin/analytics\",\n  \"icon\": \"chart-bar\",\n  \"sort_order\": 10\n}" }
          }
        },
        {
          "name": "Update Menu",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/menus",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 7,\n  \"label\": \"Analytics Updated\"\n}" }
          }
        },
        {
          "name": "Delete Menu",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/menus",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 7\n}" }
          }
        },
        {
          "name": "Get Role Permissions",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/rbac/role-permissions?role_id=1",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "rbac", "role-permissions"],
              "query": [{ "key": "role_id", "value": "1" }]
            }
          }
        },
        {
          "name": "Assign Permission to Role",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/role-permissions",
            "body": { "mode": "raw", "raw": "{\n  \"role_id\": 2,\n  \"permission_id\": 5\n}" }
          }
        },
        {
          "name": "Revoke Permission from Role",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/role-permissions",
            "body": { "mode": "raw", "raw": "{\n  \"role_id\": 2,\n  \"permission_id\": 5\n}" }
          }
        },
        {
          "name": "Sync Permissions for Role",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/role-permissions/sync",
            "body": { "mode": "raw", "raw": "{\n  \"role_id\": 2,\n  \"permission_ids\": [1, 2, 3]\n}" }
          }
        },
        {
          "name": "Get Role Menus",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/rbac/role-menus?role_id=1",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "rbac", "role-menus"],
              "query": [{ "key": "role_id", "value": "1" }]
            }
          }
        },
        {
          "name": "Assign Menu to Role",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/role-menus",
            "body": { "mode": "raw", "raw": "{\n  \"role_id\": 2,\n  \"menu_id\": 3\n}" }
          }
        },
        {
          "name": "Revoke Menu from Role",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/role-menus",
            "body": { "mode": "raw", "raw": "{\n  \"role_id\": 2,\n  \"menu_id\": 3\n}" }
          }
        },
        {
          "name": "Sync Menus for Role",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/role-menus/sync",
            "body": { "mode": "raw", "raw": "{\n  \"role_id\": 2,\n  \"menu_ids\": [1, 2, 4]\n}" }
          }
        },
        {
          "name": "Get User Roles",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/rbac/user-roles?user_id=2",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "rbac", "user-roles"],
              "query": [{ "key": "user_id", "value": "2" }]
            }
          }
        },
        {
          "name": "Assign Role to User",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/user-roles",
            "body": { "mode": "raw", "raw": "{\n  \"user_id\": 3,\n  \"role_id\": 2\n}" }
          }
        },
        {
          "name": "Revoke Role from User",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/rbac/user-roles",
            "body": { "mode": "raw", "raw": "{\n  \"user_id\": 3,\n  \"role_id\": 2\n}" }
          }
        }
      ]
    },
    {
      "name": "Admin - Settings",
      "item": [
        {
          "name": "List All Settings",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/settings"
          }
        },
        {
          "name": "Get Single Setting",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/settings/get?key=platform_name",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "settings", "get"],
              "query": [{ "key": "key", "value": "platform_name" }]
            }
          }
        },
        {
          "name": "Set Setting",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/settings",
            "body": { "mode": "raw", "raw": "{\n  \"key\": \"platform_name\",\n  \"value\": \"OncoCore Clinical\",\n  \"type\": \"string\",\n  \"description\": \"Platform display name\"\n}" }
          }
        },
        {
          "name": "Set Bulk Settings",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/settings/bulk",
            "body": { "mode": "raw", "raw": "{\n  \"settings\": [\n    { \"key\": \"platform_name\", \"value\": \"OncoCore\", \"type\": \"string\" },\n    { \"key\": \"max_booking_days\", \"value\": \"30\", \"type\": \"integer\" }\n  ]\n}" }
          }
        },
        {
          "name": "Delete Setting",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/settings",
            "body": { "mode": "raw", "raw": "{\n  \"key\": \"old_setting\"\n}" }
          }
        }
      ]
    },
    {
      "name": "Admin - Specialties",
      "item": [
        {
          "name": "List Specialties",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/specialties"
          }
        },
        {
          "name": "Create Specialty",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/specialties",
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Neurology\",\n  \"slug\": \"neurology\",\n  \"icon\": \"brain\",\n  \"is_active\": 1\n}" }
          }
        },
        {
          "name": "Update Specialty",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/specialties",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 1,\n  \"name\": \"Neurology & Brain\"\n}" }
          }
        },
        {
          "name": "Delete Specialty",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/specialties",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 5\n}" }
          }
        }
      ]
    },
    {
      "name": "Admin - CMS",
      "item": [
        {
          "name": "List Articles (Admin)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": {
              "raw": "{{base_url}}/api/v1/admin/content/articles?limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "admin", "content", "articles"],
              "query": [
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Create Article",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/content/articles",
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"Health Tips for Cancer Patients\",\n  \"slug\": \"health-tips-cancer-patients\",\n  \"body\": \"Article body content here...\",\n  \"status\": \"published\"\n}" }
          }
        },
        {
          "name": "Update Article",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/content/articles",
            "body": { "mode": "raw", "raw": "{\n  \"uuid\": \"ARTICLE_UUID\",\n  \"title\": \"Updated Title\"\n}" }
          }
        },
        {
          "name": "Delete Article",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/content/articles",
            "body": { "mode": "raw", "raw": "{\n  \"uuid\": \"ARTICLE_UUID\"\n}" }
          }
        },
        {
          "name": "List Categories (Admin)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{base_url}}/api/v1/admin/content/categories"
          }
        },
        {
          "name": "Create Category",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/content/categories",
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Oncology News\",\n  \"description\": \"Latest oncology news and updates\"\n}" }
          }
        },
        {
          "name": "Update Category",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/content/categories",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 1,\n  \"name\": \"Oncology News Updated\"\n}" }
          }
        },
        {
          "name": "Delete Category",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "url": "{{base_url}}/api/v1/admin/content/categories",
            "body": { "mode": "raw", "raw": "{\n  \"id\": 5\n}" }
          }
        }
      ]
    }
  ]
}
