{
  "info": {
    "name": "Famlynk FastAPI",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "All backend APIs for FamilyApp"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{access_token}}",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "Health",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/health"
      }
    },
    {
      "name": "Auth",
      "item": [
        {
          "name": "Login Super Admin",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/auth/login",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"admin@famlynk.com\",\n  \"password\": \"Admin@12345\"\n}"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200) {",
                  "  const json = pm.response.json();",
                  "  pm.environment.set('access_token', json.access_token);",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Profile",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/auth/profile"
          }
        },
        {
          "name": "Logout",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/auth/logout"
          }
        },
        {
          "name": "Register Family Admin",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/auth/register-family-admin",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"family_name\": \"Demo Family\",\n  \"admin_name\": \"Demo Admin\",\n  \"email\": \"demo.admin@famlynk.com\",\n  \"phone\": \"+1-555-123-0000\",\n  \"password\": \"DemoAdmin@123\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Families",
      "item": [
        {
          "name": "List Families",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/families"
          }
        },
        {
          "name": "Approve Family",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/families/3/approve"
          }
        },
        {
          "name": "Reject Family",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/families/3/reject"
          }
        },
        {
          "name": "Toggle Family Status",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/families/2/status",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"is_enabled\": true\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Users",
      "item": [
        {
          "name": "List Users",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/users"
          }
        },
        {
          "name": "Create User",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/users",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"API Member\",\n  \"email\": \"api.member@famlynk.com\",\n  \"password\": \"ApiMember@123\",\n  \"phone\": \"+1-555-000-0001\",\n  \"role_code\": \"member\",\n  \"blood_group\": \"O+\"\n}"
            }
          }
        },
        {
          "name": "Update User",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/users/3",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"+1-555-000-1111\"\n}"
            }
          }
        },
        {
          "name": "Promote User",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/users/3/promote-admin"
          }
        }
      ]
    },
    {
      "name": "Finance",
      "item": [
        {
          "name": "List Transactions",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/finance/transactions"
          }
        },
        {
          "name": "Create Transaction",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/finance/transactions",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"txn_type\": \"expense\",\n  \"amount\": 250.5,\n  \"category\": \"Snacks\",\n  \"notes\": \"Postman test\",\n  \"txn_date\": \"2026-03-05\"\n}"
            }
          }
        },
        {
          "name": "Update Transaction",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/finance/transactions/1",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"notes\": \"updated\"\n}"
            }
          }
        },
        {
          "name": "Delete Transaction",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/finance/transactions/1"
          }
        },
        {
          "name": "Analytics",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/finance/analytics"
          }
        },
        {
          "name": "Approvals List",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/finance/approvals"
          }
        },
        {
          "name": "Approval Action",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/finance/approvals/1/action",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"approved\",\n  \"remarks\": \"ok\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Tasks",
      "item": [
        {
          "name": "List Columns",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/tasks/columns"
          }
        },
        {
          "name": "Create Column",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/tasks/columns",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Review\",\n  \"code\": \"review\",\n  \"sort_order\": 4\n}"
            }
          }
        },
        {
          "name": "List Tasks",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/tasks"
          }
        },
        {
          "name": "Create Task",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/tasks",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"New task from postman\",\n  \"description\": \"verify task API\",\n  \"assigned_to\": 3,\n  \"due_date\": \"2026-03-10\",\n  \"column_code\": \"todo\"\n}"
            }
          }
        },
        {
          "name": "Update Task Status",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/tasks/1/status",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"column_code\": \"inprogress\"\n}"
            }
          }
        },
        {
          "name": "Task Comment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/tasks/1/comments",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"comment_text\": \"Looks good\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Shopping",
      "item": [
        {
          "name": "List Lists",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/shopping/lists"
          }
        },
        {
          "name": "Create List",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/shopping/lists",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Weekend List\"\n}"
            }
          }
        },
        {
          "name": "List Items",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/shopping/lists/1/items"
          }
        },
        {
          "name": "Add Item",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/shopping/lists/1/items",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"item_name\": \"Rice\",\n  \"quantity\": 2,\n  \"category\": \"Groceries\",\n  \"assigned_member_id\": 3,\n  \"purchase_date\": \"2026-03-06\"\n}"
            }
          }
        },
        {
          "name": "Item Status",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/shopping/items/1/status",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"purchased\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Calendar / Contacts / Automation / Location / EAV",
      "item": [
        {
          "name": "List Events",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/calendar/events"
          }
        },
        {
          "name": "Create Event",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/calendar/events",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Fee Due\",\n  \"event_type\": \"bill\",\n  \"event_date\": \"2026-03-09\",\n  \"event_time\": \"09:00 AM\",\n  \"reminder_enabled\": true\n}"
            }
          }
        },
        {
          "name": "Delete Event",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/calendar/events/1"
          }
        },
        {
          "name": "List Contacts",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/contacts"
          }
        },
        {
          "name": "Create Contact",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/contacts",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Police Helpline\",\n  \"phone\": \"100\",\n  \"relationship\": \"Emergency\",\n  \"email\": null,\n  \"is_emergency\": true\n}"
            }
          }
        },
        {
          "name": "List Devices",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/automation/devices"
          }
        },
        {
          "name": "Create Device",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/automation/devices",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Kitchen Light\",\n  \"device_type\": \"light\",\n  \"room_name\": \"Kitchen\"\n}"
            }
          }
        },
        {
          "name": "List Rules",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/automation/rules"
          }
        },
        {
          "name": "Create Rule",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/automation/rules",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Night Mode\",\n  \"condition_expression\": \"time >= 22:00\",\n  \"action_expression\": \"turn_off_lights()\",\n  \"priority_order\": 1,\n  \"is_enabled\": true\n}"
            }
          }
        },
        {
          "name": "Connect Alexa",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/automation/integrations/connect",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"provider\": \"alexa\",\n  \"access_token\": \"dummy-access\",\n  \"refresh_token\": \"dummy-refresh\"\n}"
            }
          }
        },
        {
          "name": "List Location",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/location"
          }
        },
        {
          "name": "Location Checkin",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/location/check-in",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"latitude\": 12.9715987,\n  \"longitude\": 77.5945627,\n  \"near_home\": true,\n  \"checkin_note\": \"Reached home\"\n}"
            }
          }
        },
        {
          "name": "Create EAV Attribute",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/eav/attributes",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"entity_type\": \"member\",\n  \"attribute_code\": \"passport_no\",\n  \"data_type\": \"text\",\n  \"is_required\": false\n}"
            }
          }
        },
        {
          "name": "Upsert EAV Value",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/eav/entities/member/3/values",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"attribute_id\": 1,\n  \"value_text\": \"P1234567\"\n}"
            }
          }
        },
        {
          "name": "Update Device",
          "request": {
            "method": "PATCH",
            "url": "{{base_url}}/automation/devices/1",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"on\"\n}"
            }
          }
        },
        {
          "name": "Delete Device",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/automation/devices/1"
          }
        },
        {
          "name": "Update Rule",
          "request": {
            "method": "PATCH",
            "url": "{{base_url}}/automation/rules/1",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"is_enabled\": false\n}"
            }
          }
        },
        {
          "name": "Delete Rule",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/automation/rules/1"
          }
        },
        {
          "name": "List Integrations",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/automation/integrations"
          }
        }
      ]
    },
    {
      "name": "Reports",
      "item": [
        {
          "name": "Monthly",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/reports/monthly"
          }
        },
        {
          "name": "Yearly",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/reports/yearly"
          }
        },
        {
          "name": "Member Analytics",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/reports/member-analytics"
          }
        }
      ]
    },
    {
      "name": "Loans V2",
      "item": [
        {
          "name": "Create Loan",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/loans",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"loan_name\": \"Home Loan\",\n  \"bank_name\": \"State Bank\",\n  \"principal_amount\": 500000,\n  \"interest_rate\": 9.0,\n  \"interest_type\": \"reducing\",\n  \"tenure_months\": 60,\n  \"start_date\": \"2026-03-01\",\n  \"emi_day\": 5,\n  \"description\": \"Primary home loan\"\n}"
            }
          }
        },
        {
          "name": "List Loans",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/loans"
          }
        },
        {
          "name": "Loan Dashboard",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/loans/dashboard"
          }
        },
        {
          "name": "Loan Schedule",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/loans/1/schedule"
          }
        },
        {
          "name": "Loan Report",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/loans/1/report"
          }
        },
        {
          "name": "Edit Loan",
          "request": {
            "method": "PUT",
            "url": "{{base_url}}/loans/1",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"interest_rate\": 10.0,\n  \"tenure_months\": 72,\n  \"emi_day\": 10,\n  \"effective_date\": \"2026-04-01\"\n}"
            }
          }
        },
        {
          "name": "Extra Payment",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/loans/1/extra-payment",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"payment_amount\": 5000,\n  \"payment_date\": \"2026-04-10\"\n}"
            }
          }
        },
        {
          "name": "Loan Tracking",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/loans/1/tracking"
          }
        },
        {
          "name": "Edit Schedule Entry",
          "request": {
            "method": "PUT",
            "url": "{{base_url}}/loans/1/schedule/1",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"emi_date\": \"2026-08-11\",\n  \"status\": \"pending\"\n}"
            }
          }
        },
        {
          "name": "Delete Schedule Entry",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/loans/1/schedule/1"
          }
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "http://localhost:8000"
    },
    {
      "key": "access_token",
      "value": ""
    }
  ]
}