{
  "info": {
    "_postman_id": "8c5e2d6b-5d9c-4f1e-8a5b-6f7e8a9b0c1d",
    "name": "Blood Donation API",
    "description": "API collection for the Blood Donation management system, including Admin, User, and Volunteer functionality. All non-admin user accounts are donors by default.\n\nSeeded demo accounts:\n- Admin: `{{admin_email}}` / `{{admin_password}}`\n- User: `{{user_email}}` / `{{user_password}}`\n- Volunteer user: `{{volunteer_email}}` / `{{volunteer_password}}` (`role=user`, `is_volunteer=true`)\n\nVariable flow:\n- `Admin Login` stores `{{admin_token}}` automatically.\n- `User Register` generates a fresh email / phone and stores the new user credentials into `{{user_email}}` / `{{user_password}}`.\n- `User Login` stores `{{user_token}}` automatically.\n- `Admin Forgot Password` stores `{{admin_reset_token}}` automatically.\n- Donor, user, volunteer request, banner, and recharge target IDs are captured from API responses when possible.\n\nOTP flow:\n- `Send OTP Code` uses `{{verification_phone}}` and stores `{{otp_code}}` for normal user verification.\n- `Verify OTP Code` uses the same `{{verification_phone}}` and stores `{{otp_user_id}}` and `{{otp_user_token}}`.\n- For assisted donor registration, the volunteer enters `{{assisted_phone}}` on the volunteer device, runs `Volunteer Send OTP Code`, then runs `Register Donor (Assisted)` with the same volunteer token. That request stores the new donor id into `{{volunteer_target_user_id}}` for volunteer recharge testing.\n\nRecommended folders:\n- `Flows / Seeded Demo Flow` for the fastest seeded walkthrough.\n- `Flows / Fresh Registration Flow` for a brand-new generated user flow.\n- `Flows / OTP And Assisted Donor Flow` for OTP-based testing.\n\nCommission rule:\n- Admin sets only a percentage, not a fixed amount.\n- Volunteer commission is created only when a user with `is_volunteer=true` recharges a user that same volunteer user registered.\n- If a user recharges their own account, no volunteer commission should be expected.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Flows",
      "item": [
        {
          "name": "Seeded Demo Flow",
          "description": "Use the seeded demo accounts. This path assumes `admin@example.com / 123456`, `test@example.com / 123456`, and `volunteer@example.com / 123456` already exist from `db:seed`.",
          "item": [
            {
              "name": "Admin Login",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"email\": \"{{admin_email}}\",\n    \"password\": \"{{admin_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/login",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "login"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Get Donors",
              "request": {
                "description": "Blood request donor directory. Use this to load available donors by blood group first, then narrow by area filters. Response now includes `summary` and `filters` with available `blood_groups`, `divisions`, `districts`, and `upazilas` for the app filter UI.",
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/donors?blood_group={{donor_search_blood_group}}&division={{donor_search_division}}&district={{donor_search_district}}&upazila={{donor_search_upazila}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "donors"
                  ],
                  "query": [
                    {
                      "key": "blood_group",
                      "value": "{{donor_search_blood_group}}"
                    },
                    {
                      "key": "division",
                      "value": "{{donor_search_division}}"
                    },
                    {
                      "key": "district",
                      "value": "{{donor_search_district}}"
                    },
                    {
                      "key": "upazila",
                      "value": "{{donor_search_upazila}}"
                    }
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Get Donor Details",
              "request": {
                "description": "Get donor details by id. Set `{{donor_id}}` from a real donor returned by `Get Donors`.",
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/donors/{{donor_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "donors",
                    "{{donor_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "User Login",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"email\": \"{{user_email}}\",\n    \"password\": \"{{user_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/login",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "login"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Me (Profile)",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/me",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "me"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Check Volunteer Request Status",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/volunteer-request",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer-request"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Admin Login",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"email\": \"{{admin_email}}\",\n    \"password\": \"{{admin_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/login",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "login"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "List Users",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/users?search=&division=&district=&upazila=&per_page=15",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "users"
                  ],
                  "query": [
                    {
                      "key": "search",
                      "value": ""
                    },
                    {
                      "key": "division",
                      "value": ""
                    },
                    {
                      "key": "district",
                      "value": ""
                    },
                    {
                      "key": "upazila",
                      "value": ""
                    },
                    {
                      "key": "per_page",
                      "value": "15"
                    }
                  ]
                },
                "description": "List normal user accounts. If a volunteer user created a user, each list row can include `registered_by` and `registered_by_user` so you can see who created that account."
              },
              "response": []
            },
            {
              "name": "Volunteer Requests",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/volunteer-requests",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "volunteer-requests"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Get Volunteer Recharge Commission",
              "request": {
                "description": "Read the current volunteer recharge commission percentage configured by admin. Example: if percentage is `10`, a volunteer earns 10 BDT commission after recharging 100 BDT to a user they personally registered.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/volunteer-commission",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "volunteer-commission"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Volunteer Stats",
              "request": {
                "description": "Volunteer summary endpoint for a normal user account with `is_volunteer=true`. Also returns `recharge_commission_percentage`, which is the percentage configured by admin for recharges made to users registered by this volunteer user.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/volunteer/stats",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "stats"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Volunteer Wallet",
              "request": {
                "description": "Volunteer wallet summary and transaction history for a normal user account with `is_volunteer=true`. A `recharge_commission` transaction appears only when this volunteer user recharges a user account that was created by this same volunteer user.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/volunteer/wallet",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "wallet"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Recharge User Account",
              "request": {
                "description": "Recharge a user account using a user token where `is_volunteer=true`. The user receives the full recharge amount. The volunteer user earns commission only if that target user was registered by this same volunteer user. If a normal user recharges their own account, no volunteer commission is created.\n\nBefore running:\n- `{{user_token}}` must belong to a user with `is_volunteer=true`.\n- `{{volunteer_target_user_id}}` must belong to a user registered by this same volunteer user.\n- Configure admin commission percentage first if you want to verify wallet earnings clearly.\n- Best setup: run `Register Donor (Assisted)` first, which stores `{{volunteer_target_user_id}}` automatically.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"user_id\": {{volunteer_target_user_id}},\n    \"method\": \"bkash\",\n    \"amount\": 500\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/volunteer/recharge",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "recharge"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Withdraw Funds",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"amount\": 100.00\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/volunteer/withdraw",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "withdraw"
                  ]
                }
              },
              "response": []
            }
          ]
        },
        {
          "name": "Fresh Registration Flow",
          "description": "Creates a brand-new user with generated email / phone, stores the tokens automatically, and walks the basic registration to volunteer approval path.",
          "item": [
            {
              "name": "User Register",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"name\": \"{{register_name}}\",\n    \"email\": \"{{register_email}}\",\n    \"phone\": \"{{register_phone}}\",\n    \"password\": \"{{register_password}}\",\n    \"password_confirmation\": \"{{register_password}}\",\n    \"date_of_birth\": \"{{user_date_of_birth}}\",\n    \"gender\": \"{{user_gender}}\",\n    \"blood_group\": \"{{user_blood_group}}\",\n    \"division\": \"{{user_division}}\",\n    \"district\": \"{{user_district}}\",\n    \"upazila\": \"{{user_upazila}}\",\n    \"address\": \"{{user_address}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/register",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "register"
                  ]
                },
                "description": "Register a normal user account. Non-admin users are donors by default, so `is_donor` is not needed here."
              },
              "response": [],
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "const suffix = Date.now().toString().slice(-8);",
                      "pm.collectionVariables.set(\"register_name\", `Postman Demo User ${suffix}`);",
                      "pm.collectionVariables.set(\"register_email\", `postman.user.${suffix}@example.com`);",
                      "pm.collectionVariables.set(\"register_phone\", `+88017${suffix}`);",
                      "pm.collectionVariables.set(\"register_password\", pm.collectionVariables.get(\"register_password\") || \"123456\");"
                    ]
                  }
                }
              ]
            },
            {
              "name": "Me (Profile)",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/me",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "me"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Self Donor Registration",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"name\": \"{{user_name}}\",\n    \"gender\": \"{{user_gender}}\",\n    \"phone\": \"{{user_phone}}\",\n    \"blood_group\": \"{{user_blood_group}}\",\n    \"division\": \"{{user_division}}\",\n    \"district\": \"{{user_district}}\",\n    \"upazila\": \"{{user_upazila}}\",\n    \"address\": \"{{user_address}}\",\n    \"email\": \"{{user_email}}\",\n    \"date_of_birth\": \"{{user_date_of_birth}}\",\n    \"donations_count\": {{user_donations_count}}\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/donor-registration",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "donor-registration"
                  ]
                },
                "description": "Complete or update donor profile details for the logged-in user. The user is already a donor by default; this request is mainly for profile information."
              },
              "response": []
            },
            {
              "name": "Apply for Volunteer",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"profession\": \"Student\",\n    \"message\": \"I want to help people by managing blood requests.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/volunteer-request",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer-request"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Check Volunteer Request Status",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/volunteer-request",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer-request"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Admin Login",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"email\": \"{{admin_email}}\",\n    \"password\": \"{{admin_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/login",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "login"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Volunteer Requests",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/volunteer-requests",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "volunteer-requests"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Update Volunteer Request Status",
              "request": {
                "description": "Approve or suspend a volunteer request. Set `{{volunteer_request_id}}` from the `Volunteer Requests` response. Approving this sets `is_volunteer=true` for that user, which enables volunteer-only endpoints.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"status\": \"accepted\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/volunteer-requests/{{volunteer_request_id}}/status",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "volunteer-requests",
                    "{{volunteer_request_id}}",
                    "status"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "List Volunteers",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/volunteers",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "volunteers"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "User Login",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"email\": \"{{user_email}}\",\n    \"password\": \"{{user_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/login",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "login"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Volunteer Stats",
              "request": {
                "description": "Volunteer summary endpoint for a normal user account with `is_volunteer=true`. Also returns `recharge_commission_percentage`, which is the percentage configured by admin for recharges made to users registered by this volunteer user.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/volunteer/stats",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "stats"
                  ]
                }
              },
              "response": []
            }
          ]
        },
        {
          "name": "OTP And Assisted Donor Flow",
          "description": "Use OTP login / verification and assisted donor registration with auto-captured OTP code.",
          "item": [
            {
              "name": "Send OTP Code",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"phone\": \"{{verification_phone}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/send-code",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "send-code"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Verify OTP Code",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"phone\": \"{{verification_phone}}\",\n    \"code\": \"{{otp_code}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/verify-code",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "verify-code"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Volunteer Send OTP Code",
              "request": {
                "description": "Volunteer-side OTP request for assisted donor registration. The volunteer enters the donor phone number on their own device, sends the OTP, receives the code in development, then uses it in the assisted donor registration request.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"phone\": \"{{assisted_phone}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/volunteer/send-code",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "send-code"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Register Donor (Assisted)",
              "request": {
                "description": "Volunteer-side assisted donor registration. First send OTP from the volunteer session using the donor phone number, then submit this form with the same phone and received code.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{user_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"phone\": \"{{assisted_phone}}\",\n    \"code\": \"{{otp_code}}\",\n    \"name\": \"{{assisted_name}}\",\n    \"gender\": \"{{assisted_gender}}\",\n    \"blood_group\": \"{{assisted_blood_group}}\",\n    \"district\": \"{{assisted_district}}\",\n    \"upazila\": \"{{assisted_upazila}}\",\n    \"address\": \"{{assisted_address}}\",\n    \"email\": \"{{assisted_email}}\",\n    \"date_of_birth\": \"{{assisted_date_of_birth}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/user/volunteer/register-donor",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "volunteer",
                    "register-donor"
                  ]
                }
              },
              "response": [],
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "const suffix = Date.now().toString().slice(-8);",
                      "pm.collectionVariables.set(\"assisted_name\", pm.collectionVariables.get(\"assisted_name\") || `Assisted Donor ${suffix}`);",
                      "pm.collectionVariables.set(\"assisted_email\", pm.collectionVariables.get(\"assisted_email\") || `assisted.donor.${suffix}@example.com`);",
                      "pm.collectionVariables.set(\"assisted_phone\", pm.collectionVariables.get(\"assisted_phone\") || `+88019${suffix}`);",
                      "pm.collectionVariables.set(\"verification_phone\", pm.collectionVariables.get(\"assisted_phone\"));"
                    ]
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Public",
      "item": [
        {
          "name": "Get Banners",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/banners",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "banners"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Donors",
          "request": {
            "description": "Blood request donor directory. Use this to load available donors by blood group first, then narrow by area filters. Response now includes `summary` and `filters` with available `blood_groups`, `divisions`, `districts`, and `upazilas` for the app filter UI.",
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/donors?blood_group={{donor_search_blood_group}}&division={{donor_search_division}}&district={{donor_search_district}}&upazila={{donor_search_upazila}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "donors"
              ],
              "query": [
                {
                  "key": "blood_group",
                  "value": "{{donor_search_blood_group}}"
                },
                {
                  "key": "division",
                  "value": "{{donor_search_division}}"
                },
                {
                  "key": "district",
                  "value": "{{donor_search_district}}"
                },
                {
                  "key": "upazila",
                  "value": "{{donor_search_upazila}}"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Donor Details",
          "request": {
            "description": "Get donor details by id. Set `{{donor_id}}` from a real donor returned by `Get Donors`.",
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/donors/{{donor_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "donors",
                "{{donor_id}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Utility",
          "item": [
            {
              "name": "Storage Link",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/storage-link",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "storage-link"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Optimize Clear",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/optimize-clear",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "optimize-clear"
                  ]
                }
              },
              "response": []
            }
          ]
        }
      ]
    },
    {
      "name": "Auth",
      "item": [
        {
          "name": "Admin Login",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"email\": \"{{admin_email}}\",\n    \"password\": \"{{admin_password}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/login",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "login"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Admin Forgot Password",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"email\": \"{{admin_email}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/forgot-password",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "forgot-password"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Admin Reset Password",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"email\": \"{{admin_email}}\",\n    \"token\": \"{{admin_reset_token}}\",\n    \"password\": \"{{admin_password}}\",\n    \"password_confirmation\": \"{{admin_password}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/reset-password",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "reset-password"
              ]
            }
          },
          "response": []
        },
        {
          "name": "User Login",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"email\": \"{{user_email}}\",\n    \"password\": \"{{user_password}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/login",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "login"
              ]
            }
          },
          "response": []
        },
        {
          "name": "User Register",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"name\": \"{{register_name}}\",\n    \"email\": \"{{register_email}}\",\n    \"phone\": \"{{register_phone}}\",\n    \"password\": \"{{register_password}}\",\n    \"password_confirmation\": \"{{register_password}}\",\n    \"date_of_birth\": \"{{user_date_of_birth}}\",\n    \"gender\": \"{{user_gender}}\",\n    \"blood_group\": \"{{user_blood_group}}\",\n    \"division\": \"{{user_division}}\",\n    \"district\": \"{{user_district}}\",\n    \"upazila\": \"{{user_upazila}}\",\n    \"address\": \"{{user_address}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/register",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "register"
              ]
            },
            "description": "Register a normal user account. Non-admin users are donors by default, so `is_donor` is not needed here."
          },
          "response": [],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const suffix = Date.now().toString().slice(-8);",
                  "pm.collectionVariables.set(\"register_name\", `Postman Demo User ${suffix}`);",
                  "pm.collectionVariables.set(\"register_email\", `postman.user.${suffix}@example.com`);",
                  "pm.collectionVariables.set(\"register_phone\", `+88017${suffix}`);",
                  "pm.collectionVariables.set(\"register_password\", pm.collectionVariables.get(\"register_password\") || \"123456\");"
                ]
              }
            }
          ]
        },
        {
          "name": "Send OTP Code",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"phone\": \"{{verification_phone}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/send-code",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "send-code"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Verify OTP Code",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"phone\": \"{{verification_phone}}\",\n    \"code\": \"{{otp_code}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/verify-code",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "verify-code"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Admin",
      "item": [
        {
          "name": "Dashboard Stats",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/dashboard",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "dashboard"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Change Password",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"current_password\": \"{{admin_password}}\",\n    \"password\": \"123456\",\n    \"password_confirmation\": \"123456\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/change-password",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "change-password"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Volunteer Recharge Commission",
          "request": {
            "description": "Read the current volunteer recharge commission percentage configured by admin. Example: if percentage is `10`, a volunteer earns 10 BDT commission after recharging 100 BDT to a user they personally registered.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/volunteer-commission",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "volunteer-commission"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update Volunteer Recharge Commission",
          "request": {
            "description": "Set only the commission percentage. Example: if `percentage` is `10` and a volunteer recharges 100 BDT for a user they registered, the volunteer gets 10 BDT commission while the user still receives the full 100 BDT recharge.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"percentage\": {{commission_percentage}}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/volunteer-commission",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "volunteer-commission"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Support",
          "item": [
            {
              "name": "Get Support Settings",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/support",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Update Support Settings",
              "request": {
                "description": "Set the support call number and support email that will be shown on the user support screen.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PUT",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"phone\": \"{{support_phone}}\",\n    \"email\": \"{{support_email}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/support",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "List Support FAQs",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/support-faqs?search=&is_active=&per_page=15",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support-faqs"
                  ],
                  "query": [
                    {
                      "key": "search",
                      "value": ""
                    },
                    {
                      "key": "is_active",
                      "value": ""
                    },
                    {
                      "key": "per_page",
                      "value": "15"
                    }
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Create Support FAQ",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"question\": \"{{support_faq_question}}\",\n    \"answer\": \"{{support_faq_answer}}\",\n    \"is_active\": true,\n    \"sort_order\": {{support_faq_sort_order}}\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/support-faqs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support-faqs"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Get Support FAQ",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/support-faqs/{{support_faq_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support-faqs",
                    "{{support_faq_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Update Support FAQ",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PUT",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"question\": \"{{support_faq_question}}\",\n    \"answer\": \"{{support_faq_answer}}\",\n    \"is_active\": true,\n    \"sort_order\": {{support_faq_sort_order}}\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/support-faqs/{{support_faq_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support-faqs",
                    "{{support_faq_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Patch Support FAQ",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"question\": \"{{support_faq_question}}\",\n    \"answer\": \"{{support_faq_answer}}\",\n    \"is_active\": true,\n    \"sort_order\": {{support_faq_sort_order}}\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/support-faqs/{{support_faq_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support-faqs",
                    "{{support_faq_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Delete Support FAQ",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/support-faqs/{{support_faq_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "support-faqs",
                    "{{support_faq_id}}"
                  ]
                }
              },
              "response": []
            }
          ]
        },
        {
          "name": "Emergency Contacts",
          "item": [
            {
              "name": "List Emergency Contacts",
              "request": {
                "method": "GET",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/emergency-contacts?search=&service_type=&division=&district=&upazila=&is_active=&per_page=15",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "emergency-contacts"
                  ],
                  "query": [
                    {
                      "key": "search",
                      "value": ""
                    },
                    {
                      "key": "service_type",
                      "value": ""
                    },
                    {
                      "key": "division",
                      "value": ""
                    },
                    {
                      "key": "district",
                      "value": ""
                    },
                    {
                      "key": "upazila",
                      "value": ""
                    },
                    {
                      "key": "is_active",
                      "value": ""
                    },
                    {
                      "key": "per_page",
                      "value": "15"
                    }
                  ]
                },
                "description": "List area-based emergency contacts with admin filters for service type and location."
              }
            },
            {
              "name": "Create Emergency Contact",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"service_type\": \"hospital\",\n    \"name\": \"{{emergency_contact_name}}\",\n    \"phone\": \"{{emergency_contact_phone}}\",\n    \"division\": \"{{emergency_contact_division}}\",\n    \"district\": \"{{emergency_contact_district}}\",\n    \"upazila\": \"{{emergency_contact_upazila}}\",\n    \"notes\": \"{{emergency_contact_notes}}\",\n    \"is_active\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/emergency-contacts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "emergency-contacts"
                  ]
                },
                "description": "Create a new emergency contact for a specific service and area."
              },
              "event": []
            },
            {
              "name": "Get Emergency Contact",
              "request": {
                "method": "GET",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/emergency-contacts/{{emergency_contact_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "emergency-contacts",
                    "{{emergency_contact_id}}"
                  ]
                }
              }
            },
            {
              "name": "Update Emergency Contact",
              "request": {
                "method": "PUT",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"service_type\": \"ambulance\",\n    \"name\": \"{{emergency_contact_name}}\",\n    \"phone\": \"{{emergency_contact_phone}}\",\n    \"division\": \"{{emergency_contact_division}}\",\n    \"district\": \"{{emergency_contact_district}}\",\n    \"upazila\": \"{{emergency_contact_upazila}}\",\n    \"notes\": \"{{emergency_contact_notes}}\",\n    \"is_active\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/emergency-contacts/{{emergency_contact_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "emergency-contacts",
                    "{{emergency_contact_id}}"
                  ]
                }
              }
            },
            {
              "name": "Patch Emergency Contact",
              "request": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"service_type\": \"ambulance\",\n    \"name\": \"{{emergency_contact_name}}\",\n    \"phone\": \"{{emergency_contact_phone}}\",\n    \"division\": \"{{emergency_contact_division}}\",\n    \"district\": \"{{emergency_contact_district}}\",\n    \"upazila\": \"{{emergency_contact_upazila}}\",\n    \"notes\": \"{{emergency_contact_notes}}\",\n    \"is_active\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/emergency-contacts/{{emergency_contact_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "emergency-contacts",
                    "{{emergency_contact_id}}"
                  ]
                }
              }
            },
            {
              "name": "Delete Emergency Contact",
              "request": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/emergency-contacts/{{emergency_contact_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "emergency-contacts",
                    "{{emergency_contact_id}}"
                  ]
                }
              }
            }
          ]
        },
        {
          "name": "Content",
          "item": [
            {
              "name": "Get Content Settings",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/content",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "content"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Update Content Settings",
              "request": {
                "description": "Set the About Us and Privacy Policy content that will be shown on the user panel.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PUT",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"about_us\": \"{{about_us_content}}\",\n    \"privacy_policy\": \"{{privacy_policy_content}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{base_url}}/admin/content",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "content"
                  ]
                }
              },
              "response": []
            }
          ]
        },
        {
          "name": "List Users",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/users?search=&division=&district=&upazila=&per_page=15",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "users"
              ],
              "query": [
                {
                  "key": "search",
                  "value": ""
                },
                {
                  "key": "division",
                  "value": ""
                },
                {
                  "key": "district",
                  "value": ""
                },
                {
                  "key": "upazila",
                  "value": ""
                },
                {
                  "key": "per_page",
                  "value": "15"
                }
              ]
            },
            "description": "List normal user accounts. If a volunteer user created a user, each list row can include `registered_by` and `registered_by_user` so you can see who created that account."
          },
          "response": []
        },
        {
          "name": "List Donors",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/donors",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "donors"
              ]
            }
          },
          "response": []
        },
        {
          "name": "List Volunteers",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/volunteers",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "volunteers"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Banners CRUD",
          "item": [
            {
              "name": "List Banners",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/banners",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "banners"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Create Banner",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "title",
                      "value": "Summer Campaign",
                      "type": "text"
                    },
                    {
                      "key": "image",
                      "type": "file",
                      "src": ""
                    },
                    {
                      "key": "link",
                      "value": "https://example.com",
                      "type": "text"
                    },
                    {
                      "key": "is_active",
                      "value": "1",
                      "type": "text"
                    },
                    {
                      "key": "order",
                      "value": "1",
                      "type": "text"
                    }
                  ]
                },
                "url": {
                  "raw": "{{base_url}}/admin/banners",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "banners"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Update Banner",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PUT",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "title",
                      "value": "Updated Banner Title",
                      "type": "text"
                    },
                    {
                      "key": "image",
                      "src": "",
                      "type": "file"
                    },
                    {
                      "key": "link",
                      "value": "https://example.com/updated-banner",
                      "type": "text"
                    },
                    {
                      "key": "is_active",
                      "value": "true",
                      "type": "text"
                    },
                    {
                      "key": "order",
                      "value": "2",
                      "type": "text"
                    }
                  ]
                },
                "url": {
                  "raw": "{{base_url}}/admin/banners/{{banner_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "banners",
                    "{{banner_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Patch Banner",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "key": "title",
                      "value": "Updated Banner Title",
                      "type": "text"
                    },
                    {
                      "key": "image",
                      "src": "",
                      "type": "file"
                    },
                    {
                      "key": "link",
                      "value": "https://example.com/updated-banner",
                      "type": "text"
                    },
                    {
                      "key": "is_active",
                      "value": "true",
                      "type": "text"
                    },
                    {
                      "key": "order",
                      "value": "2",
                      "type": "text"
                    }
                  ]
                },
                "url": {
                  "raw": "{{base_url}}/admin/banners/{{banner_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "banners",
                    "{{banner_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Delete Banner",
              "request": {
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/banners/{{banner_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "banners",
                    "{{banner_id}}"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Get Banner",
              "request": {
                "method": "GET",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{admin_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/banners/{{banner_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "banners",
                    "{{banner_id}}"
                  ]
                }
              }
            }
          ]
        },
        {
          "name": "User Details",
          "request": {
            "description": "Get user details and recharge history. Set `{{managed_user_id}}` to the user you want to inspect. If the user was created by a volunteer user, the response includes `registered_by` and `registered_by_user`.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/users/{{managed_user_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "users",
                "{{managed_user_id}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update User Status",
          "request": {
            "description": "Block or unblock a user by id. Set `{{managed_user_id}}` first.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"status\": \"blocked\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/users/{{managed_user_id}}/status",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "users",
                "{{managed_user_id}}",
                "status"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Volunteer Requests",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/volunteer-requests",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "volunteer-requests"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update Volunteer Request Status",
          "request": {
            "description": "Approve or suspend a volunteer request. Set `{{volunteer_request_id}}` from the `Volunteer Requests` response. Approving this sets `is_volunteer=true` for that user, which enables volunteer-only endpoints.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"status\": \"accepted\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/volunteer-requests/{{volunteer_request_id}}/status",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "volunteer-requests",
                "{{volunteer_request_id}}",
                "status"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Broadcast Notification",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"title\": \"Emergency Blood Needed\",\n    \"details\": \"Urgent O+ blood needed at Dhaka Medical College.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/admin/notifications/broadcast",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "notifications",
                "broadcast"
              ]
            },
            "description": "Broadcast a notification to all active users. The backend accepts `details` and maps it to the stored message body."
          },
          "response": []
        },
        {
          "name": "Admin Logout",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/logout",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "logout"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "User",
      "item": [
        {
          "name": "Me (Profile)",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/me",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "me"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Emergency Contacts",
          "item": [
            {
              "name": "Get My Area Emergency Contacts",
              "request": {
                "method": "GET",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{user_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/emergency-contacts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "emergency-contacts"
                  ]
                },
                "description": "Load active emergency contacts automatically for the logged-in user area using their division, district, and upazila."
              }
            },
            {
              "name": "Filter Emergency Contacts By Area",
              "request": {
                "method": "GET",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{user_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/emergency-contacts?service_type={{emergency_contact_service_type}}&division={{emergency_contact_division}}&district={{emergency_contact_district}}&upazila={{emergency_contact_upazila}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "emergency-contacts"
                  ],
                  "query": [
                    {
                      "key": "service_type",
                      "value": "{{emergency_contact_service_type}}"
                    },
                    {
                      "key": "division",
                      "value": "{{emergency_contact_division}}"
                    },
                    {
                      "key": "district",
                      "value": "{{emergency_contact_district}}"
                    },
                    {
                      "key": "upazila",
                      "value": "{{emergency_contact_upazila}}"
                    }
                  ]
                },
                "description": "Override the default area and filter emergency contacts by service type and location."
              }
            }
          ]
        },
        {
          "name": "Notifications",
          "item": [
            {
              "name": "Get Notifications",
              "request": {
                "method": "GET",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{user_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/notifications",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "notifications"
                  ]
                },
                "description": "Load the user notification inbox with read and unread counts."
              },
              "event": []
            },
            {
              "name": "Mark Notification As Read",
              "request": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{user_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/notifications/{{notification_id}}/read",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "notifications",
                    "{{notification_id}}",
                    "read"
                  ]
                }
              }
            },
            {
              "name": "Mark All Notifications As Read",
              "request": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "token",
                    "value": "Bearer {{user_token}}",
                    "type": "text"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/user/notifications/read-all",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "user",
                    "notifications",
                    "read-all"
                  ]
                }
              }
            }
          ]
        },
        {
          "name": "Get Support",
          "request": {
            "description": "Load support contact info and active FAQs for the user panel.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/support",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "support"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Content",
          "request": {
            "description": "Load About Us and Privacy Policy content for the user panel.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/content",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "content"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update Availability",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"is_available\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/availability",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "availability"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Self Donor Registration",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"name\": \"{{user_name}}\",\n    \"gender\": \"{{user_gender}}\",\n    \"phone\": \"{{user_phone}}\",\n    \"blood_group\": \"{{user_blood_group}}\",\n    \"division\": \"{{user_division}}\",\n    \"district\": \"{{user_district}}\",\n    \"upazila\": \"{{user_upazila}}\",\n    \"address\": \"{{user_address}}\",\n    \"email\": \"{{user_email}}\",\n    \"date_of_birth\": \"{{user_date_of_birth}}\",\n    \"donations_count\": {{user_donations_count}}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/donor-registration",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "donor-registration"
              ]
            },
            "description": "Complete or update donor profile details for the logged-in user. The user is already a donor by default; this request is mainly for profile information."
          },
          "response": []
        },
        {
          "name": "Apply for Volunteer",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"profession\": \"Student\",\n    \"message\": \"I want to help people by managing blood requests.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/volunteer-request",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer-request"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Check Volunteer Request Status",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/volunteer-request",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer-request"
              ]
            }
          },
          "response": []
        },
        {
          "name": "User Logout",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/logout",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "logout"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Volunteer",
      "item": [
        {
          "name": "Volunteer Stats",
          "request": {
            "description": "Volunteer summary endpoint for a normal user account with `is_volunteer=true`. Also returns `recharge_commission_percentage`, which is the percentage configured by admin for recharges made to users registered by this volunteer user.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/volunteer/stats",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "stats"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Volunteer Performance",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/volunteer/performance",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "performance"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Volunteer Wallet",
          "request": {
            "description": "Volunteer wallet summary and transaction history for a normal user account with `is_volunteer=true`. A `recharge_commission` transaction appears only when this volunteer user recharges a user account that was created by this same volunteer user.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/volunteer/wallet",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "wallet"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Volunteer Send OTP Code",
          "request": {
            "description": "Volunteer-side OTP request for assisted donor registration. The volunteer enters the donor phone number on their own device, sends the OTP, receives the code in development, then uses it in the assisted donor registration request.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"phone\": \"{{assisted_phone}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/volunteer/send-code",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "send-code"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Register Donor (Assisted)",
          "request": {
            "description": "Volunteer-side assisted donor registration. First send OTP from the volunteer session using the donor phone number, then submit this form with the same phone and received code.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"phone\": \"{{assisted_phone}}\",\n    \"code\": \"{{otp_code}}\",\n    \"name\": \"{{assisted_name}}\",\n    \"gender\": \"{{assisted_gender}}\",\n    \"blood_group\": \"{{assisted_blood_group}}\",\n    \"district\": \"{{assisted_district}}\",\n    \"upazila\": \"{{assisted_upazila}}\",\n    \"address\": \"{{assisted_address}}\",\n    \"email\": \"{{assisted_email}}\",\n    \"date_of_birth\": \"{{assisted_date_of_birth}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/volunteer/register-donor",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "register-donor"
              ]
            }
          },
          "response": [],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const suffix = Date.now().toString().slice(-8);",
                  "pm.collectionVariables.set(\"assisted_name\", pm.collectionVariables.get(\"assisted_name\") || `Assisted Donor ${suffix}`);",
                  "pm.collectionVariables.set(\"assisted_email\", pm.collectionVariables.get(\"assisted_email\") || `assisted.donor.${suffix}@example.com`);",
                  "pm.collectionVariables.set(\"assisted_phone\", pm.collectionVariables.get(\"assisted_phone\") || `+88019${suffix}`);",
                  "pm.collectionVariables.set(\"verification_phone\", pm.collectionVariables.get(\"assisted_phone\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "Recharge User Account",
          "request": {
            "description": "Recharge a user account using a user token where `is_volunteer=true`. The user receives the full recharge amount. The volunteer user earns commission only if that target user was registered by this same volunteer user. If a normal user recharges their own account, no volunteer commission is created.\n\nBefore running:\n- `{{user_token}}` must belong to a user with `is_volunteer=true`.\n- `{{volunteer_target_user_id}}` must belong to a user registered by this same volunteer user.\n- Configure admin commission percentage first if you want to verify wallet earnings clearly.\n- Best setup: run `Register Donor (Assisted)` first, which stores `{{volunteer_target_user_id}}` automatically.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"user_id\": {{volunteer_target_user_id}},\n    \"method\": \"bkash\",\n    \"amount\": 500\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/volunteer/recharge",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "recharge"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Withdraw Funds",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"amount\": 100.00\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/user/volunteer/withdraw",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "withdraw"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Delete Volunteer Account",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{user_token}}",
                  "type": "string"
                }
              ]
            },
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/user/volunteer/account",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "user",
                "volunteer",
                "account"
              ]
            }
          },
          "response": []
        }
      ]
    }
  ],
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "const ensure = (key, value) => {",
          "    if (!pm.collectionVariables.get(key)) {",
          "        pm.collectionVariables.set(key, value);",
          "    }",
          "};",
          "ensure(\"admin_email\", \"admin@example.com\");",
          "ensure(\"admin_password\", \"123456\");",
          "ensure(\"user_email\", \"test@example.com\");",
          "ensure(\"user_password\", \"123456\");",
          "ensure(\"volunteer_email\", \"volunteer@example.com\");",
          "ensure(\"volunteer_password\", \"123456\");",
          "ensure(\"verification_phone\", pm.collectionVariables.get(\"otp_phone\") || \"+8801800000001\");",
          "ensure(\"register_password\", \"123456\");"
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "exec": [
          "let json = null;",
          "try {",
          "    json = pm.response.json();",
          "} catch (error) {",
          "    json = null;",
          "}",
          "",
          "if (!json) {",
          "    return;",
          "}",
          "",
          "const requestName = pm.info.requestName;",
          "const setVar = (key, value) => {",
          "    if (value !== undefined && value !== null && value !== \"\") {",
          "        pm.collectionVariables.set(key, String(value));",
          "    }",
          "};",
          "const firstItem = (items, predicate = () => true) => Array.isArray(items) ? items.find((item) => item && predicate(item)) : null;",
          "",
          "if (requestName === \"Admin Login\" && json.token) {",
          "    setVar(\"admin_token\", json.token);",
          "}",
          "",
          "if (requestName === \"Admin Forgot Password\" && json.token) {",
          "    setVar(\"admin_reset_token\", json.token);",
          "}",
          "",
          "if (requestName === \"User Register\") {",
          "    setVar(\"user_token\", json.token);",
          "    setVar(\"user_email\", pm.collectionVariables.get(\"register_email\"));",
          "    setVar(\"user_password\", pm.collectionVariables.get(\"register_password\"));",
          "    setVar(\"user_phone\", pm.collectionVariables.get(\"register_phone\"));",
          "    setVar(\"user_name\", json.user && json.user.name);",
          "    setVar(\"managed_user_id\", json.user && json.user.id);",
          "    if (json.user) {",
          "        setVar(\"donor_id\", json.user.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"User Login\" && json.token) {",
          "    setVar(\"user_token\", json.token);",
          "    setVar(\"managed_user_id\", json.user && json.user.id);",
          "    if (json.user) {",
          "        setVar(\"donor_id\", json.user.id);",
          "    }",
          "}",
          "",
          "if ((requestName === \"Send OTP Code\" || requestName === \"Volunteer Send OTP Code\") && json.code) {",
          "    setVar(\"otp_code\", json.code);",
          "}",
          "",
          "if (requestName === \"Verify OTP Code\" && json.token) {",
          "    setVar(\"otp_user_token\", json.token);",
          "    setVar(\"otp_user_id\", json.user && json.user.id);",
          "}",
          "",
          "if (requestName === \"Get Donors\" || requestName === \"List Donors\") {",
          "    const donor = firstItem(json.data);",
          "    if (donor) {",
          "        setVar(\"donor_id\", donor.id);",
          "        setVar(\"managed_user_id\", donor.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"Get Donor Details\" && json.data) {",
          "    setVar(\"donor_id\", json.data.id);",
          "}",
          "",
          "if (requestName === \"Register Donor (Assisted)\" && json.donor) {",
          "    setVar(\"volunteer_target_user_id\", json.donor.id);",
          "    setVar(\"managed_user_id\", json.donor.id);",
          "    setVar(\"donor_id\", json.donor.id);",
          "}",
          "",
          "if (requestName === \"List Users\") {",
          "    const user = firstItem(json.data, (item) => item.role === \"user\");",
          "    if (user) {",
          "        setVar(\"managed_user_id\", user.id);",
          "        if (user) {",
          "            setVar(\"donor_id\", user.id);",
          "        }",
          "    }",
          "}",
          "",
          "if (requestName === \"User Details\" && json.data) {",
          "    setVar(\"managed_user_id\", json.data.id);",
          "    if (json.data) {",
          "        setVar(\"donor_id\", json.data.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"Apply for Volunteer\") {",
          "    setVar(\"volunteer_request_id\", json.id);",
          "}",
          "",
          "if (requestName === \"Check Volunteer Request Status\" && json.data) {",
          "    setVar(\"volunteer_request_id\", json.data.id);",
          "}",
          "",
          "if (requestName === \"Volunteer Requests\") {",
          "    const volunteerRequest = firstItem(json.data);",
          "    if (volunteerRequest) {",
          "        setVar(\"volunteer_request_id\", volunteerRequest.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"Update Volunteer Request Status\") {",
          "    setVar(\"volunteer_request_id\", json.id);",
          "    setVar(\"managed_user_id\", json.user && json.user.id);",
          "}",
          "",
          "if (requestName === \"Create Banner\" && json.data) {",
          "    setVar(\"banner_id\", json.data.id);",
          "}",
          "",
          "if (requestName === \"List Banners\") {",
          "    const banner = firstItem(json.data);",
          "    if (banner) {",
          "        setVar(\"banner_id\", banner.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"Create Support FAQ\" && json.data) {",
          "    setVar(\"support_faq_id\", json.data.id);",
          "}",
          "",
          "if (requestName === \"List Support FAQs\") {",
          "    const faq = firstItem(json.data);",
          "    if (faq) {",
          "        setVar(\"support_faq_id\", faq.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"Create Emergency Contact\" && json.data) {",
          "    setVar(\"emergency_contact_id\", json.data.id);",
          "}",
          "",
          "if (requestName === \"List Emergency Contacts\") {",
          "    const contact = firstItem(json.data);",
          "    if (contact) {",
          "        setVar(\"emergency_contact_id\", contact.id);",
          "    }",
          "}",
          "",
          "if (requestName === \"Get Notifications\") {",
          "    const notification = firstItem(json.data);",
          "    if (notification) {",
          "        setVar(\"notification_id\", notification.id);",
          "    }",
          "}"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "http://localhost:8000/api/v1",
      "type": "string"
    },
    {
      "key": "donor_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "managed_user_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "volunteer_request_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "volunteer_target_user_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "user_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "admin_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "support_faq_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "about_us_content",
      "value": "We connect donors, volunteers, and patients across Bangladesh.",
      "type": "string"
    },
    {
      "key": "privacy_policy_content",
      "value": "We only use personal data to operate the blood donation service.",
      "type": "string"
    },
    {
      "key": "admin_email",
      "value": "admin@example.com",
      "type": "string"
    },
    {
      "key": "admin_reset_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "user_email",
      "value": "test@example.com",
      "type": "string"
    },
    {
      "key": "user_name",
      "value": "Postman Demo User",
      "type": "string"
    },
    {
      "key": "user_phone",
      "value": "+8801700000002",
      "type": "string"
    },
    {
      "key": "user_gender",
      "value": "female",
      "type": "string"
    },
    {
      "key": "user_blood_group",
      "value": "B+",
      "type": "string"
    },
    {
      "key": "user_division",
      "value": "Dhaka",
      "type": "string"
    },
    {
      "key": "user_district",
      "value": "Dhaka",
      "type": "string"
    },
    {
      "key": "user_upazila",
      "value": "Savar",
      "type": "string"
    },
    {
      "key": "user_address",
      "value": "Postman Demo Address",
      "type": "string"
    },
    {
      "key": "support_phone",
      "value": "+8801700009999",
      "type": "string"
    },
    {
      "key": "support_email",
      "value": "support@example.com",
      "type": "string"
    },
    {
      "key": "support_faq_question",
      "value": "How can I contact support?",
      "type": "string"
    },
    {
      "key": "support_faq_answer",
      "value": "Call the support number or send an email.",
      "type": "string"
    },
    {
      "key": "support_faq_sort_order",
      "value": "1",
      "type": "string"
    },
    {
      "key": "donor_search_blood_group",
      "value": "B+",
      "type": "string"
    },
    {
      "key": "donor_search_division",
      "value": "Dhaka",
      "type": "string"
    },
    {
      "key": "donor_search_district",
      "value": "Dhaka",
      "type": "string"
    },
    {
      "key": "donor_search_upazila",
      "value": "Savar",
      "type": "string"
    },
    {
      "key": "user_date_of_birth",
      "value": "1998-05-10",
      "type": "string"
    },
    {
      "key": "register_name",
      "value": "",
      "type": "string"
    },
    {
      "key": "register_email",
      "value": "",
      "type": "string"
    },
    {
      "key": "register_phone",
      "value": "",
      "type": "string"
    },
    {
      "key": "verification_phone",
      "value": "+8801800000001",
      "type": "string"
    },
    {
      "key": "otp_phone",
      "value": "+8801800000001",
      "type": "string"
    },
    {
      "key": "otp_code",
      "value": "",
      "type": "string"
    },
    {
      "key": "otp_user_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "otp_user_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "volunteer_email",
      "value": "volunteer@example.com",
      "type": "string"
    },
    {
      "key": "assisted_name",
      "value": "Assisted Donor",
      "type": "string"
    },
    {
      "key": "assisted_email",
      "value": "assisted.donor@example.com",
      "type": "string"
    },
    {
      "key": "assisted_phone",
      "value": "+8801900000001",
      "type": "string"
    },
    {
      "key": "assisted_gender",
      "value": "male",
      "type": "string"
    },
    {
      "key": "assisted_blood_group",
      "value": "A+",
      "type": "string"
    },
    {
      "key": "assisted_district",
      "value": "Dhaka",
      "type": "string"
    },
    {
      "key": "assisted_upazila",
      "value": "Savar",
      "type": "string"
    },
    {
      "key": "assisted_address",
      "value": "Assisted Donor Address",
      "type": "string"
    },
    {
      "key": "assisted_date_of_birth",
      "value": "1995-03-04",
      "type": "string"
    },
    {
      "key": "banner_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "admin_password",
      "value": "123456",
      "type": "string"
    },
    {
      "key": "user_password",
      "value": "123456",
      "type": "string"
    },
    {
      "key": "volunteer_password",
      "value": "123456",
      "type": "string"
    },
    {
      "key": "register_password",
      "value": "123456",
      "type": "string"
    },
    {
      "key": "commission_percentage",
      "value": "10",
      "type": "string"
    },
    {
      "key": "notification_id",
      "value": ""
    },
    {
      "key": "emergency_contact_id",
      "value": ""
    },
    {
      "key": "emergency_contact_name",
      "value": "Savar Upazila Health Complex"
    },
    {
      "key": "emergency_contact_phone",
      "value": "999"
    },
    {
      "key": "emergency_contact_service_type",
      "value": "hospital"
    },
    {
      "key": "emergency_contact_division",
      "value": "Dhaka"
    },
    {
      "key": "emergency_contact_district",
      "value": "Dhaka"
    },
    {
      "key": "emergency_contact_upazila",
      "value": "Savar"
    },
    {
      "key": "emergency_contact_notes",
      "value": "24/7 emergency support"
    },
    {
      "key": "user_donations_count",
      "value": "3"
    }
  ]
}
