{
  "info": {
    "_postman_id": "member-api-collection",
    "name": "Gym Khana - Member API",
    "description": "Complete Member Management API Collection - POST, GET, PUT, DELETE Operations",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "PRIMARY MEMBER OPERATIONS",
      "item": [
        {
          "name": "Register New Primary Member",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 201) {",
                  "    var jsonData = pm.response.json();",
                  "    pm.environment.set(\"memberId\", jsonData.data.member.memberId);",
                  "    pm.test(\"Member registered successfully\", function () {",
                  "        pm.expect(jsonData.success).to.eql(true);",
                  "    });",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"memberId\": \"M-{{$randomInt}}\",\n  \"membershipTypeId\": \"{{membershipTypeId}}\",\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"fatherName\": \"Michael Doe\",\n  \"cnic\": \"12345-{{$randomInt}}-3\",\n  \"dateOfBirth\": \"1980-05-15\",\n  \"gender\": \"Male\",\n  \"phonePrimary\": \"03001234567\",\n  \"phoneSecondary\": \"03009876543\",\n  \"email\": \"john.doe@example.com\",\n  \"address\": \"123 Main Street, City, Country\",\n  \"emergencyContactName\": \"Jane Doe\",\n  \"emergencyContactPhone\": \"03001112222\",\n  \"membershipStartDate\": \"2026-02-12\",\n  \"membershipExpiryDate\": \"2027-02-12\",\n  \"password\": \"securePassword123\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/members/register",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "register"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get All Members",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members?page=1&limit=20&status=Active",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "20"
                },
                {
                  "key": "status",
                  "value": "Active"
                },
                {
                  "key": "search",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "membershipType",
                  "value": "",
                  "disabled": true
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Search Members",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/search?q=John",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "search"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "John"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Member by ID",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update Member Profile",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"John Updated\",\n  \"lastName\": \"Doe Updated\",\n  \"email\": \"newemail@example.com\",\n  \"phonePrimary\": \"03001234567\",\n  \"address\": \"Updated Address\",\n  \"emergencyContactName\": \"Jane Doe Updated\",\n  \"emergencyContactPhone\": \"03001112222\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}/profile",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}",
                "profile"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update Member Status",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"Suspended\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}/status",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}",
                "status"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Delete Primary Member",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test(\"Member deleted successfully\", function () {",
                  "    pm.expect(pm.response.code).to.eql(200);",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "FAMILY MEMBER OPERATIONS",
      "item": [
        {
          "name": "Add Family Member",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 201) {",
                  "    var jsonData = pm.response.json();",
                  "    pm.environment.set(\"familyMemberId\", jsonData.data.familyMember.memberId);",
                  "    pm.test(\"Family member added successfully\", function () {",
                  "        pm.expect(jsonData.success).to.eql(true);",
                  "    });",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"relationToPrimary\": \"Wife\",\n  \"dateOfBirth\": \"1982-08-20\",\n  \"gender\": \"Female\",\n  \"cnic\": \"87654-{{$randomInt}}-6\",\n  \"password\": \"familyPassword123\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}/family",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}",
                "family"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Family Members",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}/family",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}",
                "family"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Remove Family Member",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/{{memberId}}/family/{{familyMemberId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                "{{memberId}}",
                "family",
                "{{familyMemberId}}"
              ]
            }
          },
          "response": []
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "http://localhost:5000/api/v1",
      "type": "string"
    },
    {
      "key": "token",
      "value": "",
      "type": "string"
    },
    {
      "key": "memberId",
      "value": "",
      "type": "string"
    },
    {
      "key": "familyMemberId",
      "value": "",
      "type": "string"
    },
    {
      "key": "membershipTypeId",
      "value": "",
      "type": "string"
    }
  ]
}
