{"info":{"_postman_id":"f96befcd-da71-4837-961f-653ee5de633b","name":"Church Management Platform API","description":"<html><head></head><body><p>REST API for the Church Management Platform — an ASP.NET Core 9 application providing member management, event check-in, small groups, giving, reporting, and communications.</p>\n<p>Authentication uses JWT Bearer tokens obtained via POST /api/auth/login or Google OAuth.</p>\n<p>Base URLs:</p>\n<ul>\n<li>Production: <a href=\"https://church.ilheureux.dev\">https://church.ilheureux.dev</a></li>\n<li>Development: <a href=\"http://localhost:5123\">http://localhost:5123</a></li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"53534571","collectionId":"f96befcd-da71-4837-961f-653ee5de633b","publishedId":"2sBXikoXEE","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-26T22:29:37.000Z"},"item":[{"name":"Authentication","item":[{"name":"Login","event":[{"listen":"test","script":{"type":"text/javascript","exec":["if (pm.response.code === 200) {","    var jsonData = pm.response.json();","    if (jsonData.token) {","        pm.collectionVariables.set(\"token\", jsonData.token);","        console.log(\"Token saved to collection variable.\");","    }","    pm.test(\"Login successful\", function () {","        pm.expect(pm.response.code).to.eql(200);","        pm.expect(jsonData.token).to.be.a(\"string\");","    });","}"],"id":"752e0c5f-1271-4909-93e8-34253de89a2b"}}],"id":"45751a14-0ea8-4fa7-8b7a-feea39b675d9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"email\": \"admin@example.com\",\n  \"password\": \"YourPassword123!\"\n}"},"url":"https://church.ilheureux.dev/api/auth/login","description":"<p>Authenticate with email and password. Returns a JWT token and a UserDto with profile info, roles, and family membership.</p>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"token\": \"eyJhbGciOiJIUzI1NiIs...\",\n  \"user\": {\n    \"id\": 1,\n    \"email\": \"admin@example.com\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Smith\",\n    \"roles\": [\"Admin\", \"CheckInAdmin\"],\n    \"familyId\": 5,\n    \"personId\": 12\n  }\n}\n</code></pre>\n","urlObject":{"path":["api","auth","login"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"45751a14-0ea8-4fa7-8b7a-feea39b675d9"},{"name":"Register","id":"1ddad683-d4db-4e4a-9c5d-d76f35c8c5ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Sarah\",\n  \"lastName\": \"Johnson\",\n  \"email\": \"sarah.johnson@example.com\",\n  \"phone\": \"5551234567\",\n  \"password\": \"SecurePass456!\"\n}"},"url":"https://church.ilheureux.dev/api/auth/register","description":"<p>Register a new user. Creates linked Person, Email, Phone, and User records in one transaction. Returns a JWT token so the user is immediately authenticated.</p>\n","urlObject":{"path":["api","auth","register"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"1ddad683-d4db-4e4a-9c5d-d76f35c8c5ed"},{"name":"Google OAuth Login","id":"b1709004-2914-4f0c-982f-19648022bdd6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"credential\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n}"},"url":"https://church.ilheureux.dev/api/auth/google","description":"<p>Login or register via Google OAuth. Send the Google ID token (credential) from the Google Sign-In flow. Returns a JWT token and user details, creating an account if needed.</p>\n","urlObject":{"path":["api","auth","google"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"b1709004-2914-4f0c-982f-19648022bdd6"},{"name":"Send Phone Verification","id":"0d420e90-a5f1-4a26-9fa8-20989f2f34c5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"phoneNumber\": \"5551234567\"\n}"},"url":"https://church.ilheureux.dev/api/auth/send-phone-verification","description":"<p>Generates a 6-digit verification code and sends it to the provided phone number via Twilio SMS. The code can then be submitted to verify phone ownership.</p>\n","urlObject":{"path":["api","auth","send-phone-verification"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"0d420e90-a5f1-4a26-9fa8-20989f2f34c5"}],"id":"95d14ac7-6c0a-4899-a20d-99781b7072c1","description":"<p>Endpoints for user authentication, registration, and phone verification.</p>\n","_postman_id":"95d14ac7-6c0a-4899-a20d-99781b7072c1"},{"name":"People & Families","item":[{"name":"Search People","id":"c244d58c-68bb-4fc6-81b8-10d67fc44d8e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/person/search?q=Johnson","description":"<p>Search people across the database. The query type is auto-detected:</p>\n<ul>\n<li>Digits → phone number search</li>\n<li>Contains @ → email search</li>\n<li>Otherwise → name search (first + last)</li>\n</ul>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"id\": 12,\n    \"firstName\": \"Sarah\",\n    \"lastName\": \"Johnson\",\n    \"familyId\": 5,\n    \"familyName\": \"Johnson Family\",\n    \"photoUrl\": \"/photos/person/12.jpg\",\n    \"emails\": [\"sarah.johnson@example.com\"],\n    \"phones\": [\"5551234567\"]\n  }\n]\n</code></pre>\n","urlObject":{"path":["api","person","search"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Search term — name, phone number, or email address</p>\n","type":"text/plain"},"key":"q","value":"Johnson"}],"variable":[]}},"response":[],"_postman_id":"c244d58c-68bb-4fc6-81b8-10d67fc44d8e"},{"name":"Get Family","id":"2cb7df82-7ffa-461f-9f1d-126a6376798f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/family/5","description":"<p>Get a family and all its members. Returns member details including family role (Head, Spouse, Child, Other), contact info, and photo URLs.</p>\n","urlObject":{"path":["api","family","5"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"2cb7df82-7ffa-461f-9f1d-126a6376798f"},{"name":"Create Family","id":"47574919-5c11-4773-a8e3-932b82b8349a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Martinez Family\",\n  \"address\": \"123 Oak Street\",\n  \"city\": \"Springfield\",\n  \"state\": \"IL\",\n  \"zip\": \"62704\"\n}"},"url":"https://church.ilheureux.dev/api/family","description":"<p>Create a new family record. After creation, use the 'Add Person to Family' endpoint to add members.</p>\n","urlObject":{"path":["api","family"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"47574919-5c11-4773-a8e3-932b82b8349a"},{"name":"Add Person to Family","id":"6005a38b-5d3c-4d7d-90af-d9e5bce5fc80","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Miguel\",\n  \"lastName\": \"Martinez\",\n  \"familyRole\": \"Head\",\n  \"dateOfBirth\": \"1985-06-15\",\n  \"gender\": \"Male\",\n  \"email\": \"miguel.martinez@example.com\",\n  \"phone\": \"5559876543\"\n}"},"url":"https://church.ilheureux.dev/api/family/8/person","description":"<p>Add a person to a family. Creates the Person record and links it to the specified family. Family roles: Head, Spouse, Child, Other.</p>\n","urlObject":{"path":["api","family","8","person"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"6005a38b-5d3c-4d7d-90af-d9e5bce5fc80"},{"name":"Upload Person Photo","id":"14072de1-eeab-4cbe-9036-05e172517286","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"photo","type":"file","description":"<p>Photo file (jpg, png, or webp, max 5 MB)</p>\n","value":""}]},"url":"https://church.ilheureux.dev/api/family/person/12/photo","description":"<p>Upload a profile photo for a person. Supported formats: JPG, PNG, WebP. Maximum size: 5 MB. The photo is stored and the person's photoUrl is updated.</p>\n","urlObject":{"path":["api","family","person","12","photo"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"14072de1-eeab-4cbe-9036-05e172517286"},{"name":"Verify Family (Admin)","id":"69d82d18-7d5e-4336-9dd6-7ba80924dc3f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{}"},"url":"https://church.ilheureux.dev/api/family/5/verify","description":"<p>Admin-only endpoint to mark a family as verified. Sets the verified flag and records the admin who verified it and the timestamp.</p>\n","urlObject":{"path":["api","family","5","verify"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"69d82d18-7d5e-4336-9dd6-7ba80924dc3f"}],"id":"84f8e63b-4f10-45f6-bb56-fc9f2ba9298c","description":"<p>Manage people, family units, photos, and verification. People belong to families and are the core entity throughout the system.</p>\n","_postman_id":"84f8e63b-4f10-45f6-bb56-fc9f2ba9298c"},{"name":"Events & Check-In","item":[{"name":"List Events","id":"aa2bd6a9-32ee-4c85-9a56-e6d7c64dcf6b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/event","description":"<p>List all events with their associated locations. Events are used as the basis for check-in sessions.</p>\n","urlObject":{"path":["api","event"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"aa2bd6a9-32ee-4c85-9a56-e6d7c64dcf6b"},{"name":"Create Recurring Events","id":"afe7f045-23aa-4722-9838-314a0404e2b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sunday Morning Service\",\n  \"locationId\": 1,\n  \"startDate\": \"2026-04-05\",\n  \"endDate\": \"2026-06-28\",\n  \"startTime\": \"09:00\",\n  \"endTime\": \"10:30\",\n  \"frequency\": \"weekly\"\n}"},"url":"https://church.ilheureux.dev/api/event/recurring","description":"<p>Create multiple events at once with a recurring schedule. Frequency options: daily, weekly, biweekly, monthly. Generates all event instances within the specified date range.</p>\n","urlObject":{"path":["api","event","recurring"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"afe7f045-23aa-4722-9838-314a0404e2b7"},{"name":"Kiosk Phone Lookup","id":"303f2925-e894-42e7-a90b-8730406141a1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"phoneNumber\": \"5551234567\"\n}"},"url":"https://church.ilheureux.dev/api/kiosk/lookup","description":"<p>Kiosk endpoint (no auth required). Looks up a family by phone number and returns family members eligible for check-in. Designed for lobby kiosk tablets.</p>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"familyId\": 5,\n  \"familyName\": \"Johnson Family\",\n  \"members\": [\n    { \"personId\": 12, \"firstName\": \"Sarah\", \"lastName\": \"Johnson\", \"photoUrl\": \"/photos/person/12.jpg\" },\n    { \"personId\": 13, \"firstName\": \"David\", \"lastName\": \"Johnson\", \"photoUrl\": null }\n  ]\n}\n</code></pre>\n","urlObject":{"path":["api","kiosk","lookup"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"303f2925-e894-42e7-a90b-8730406141a1"},{"name":"Kiosk Batch Check-In","id":"a9dc3a3e-daa0-4aae-a557-4e2ad31a09a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"eventId\": 42,\n  \"personIds\": [12, 13, 14],\n  \"familyId\": 5\n}"},"url":"https://church.ilheureux.dev/api/kiosk/checkin/batch","description":"<p>Kiosk endpoint (no auth required). Checks in multiple family members to an event in a single request. Returns a shared security code used for child pickup verification.</p>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"securityCode\": \"A7X3\",\n  \"checkins\": [\n    { \"personId\": 12, \"firstName\": \"Sarah\", \"label\": \"Main Auditorium\" },\n    { \"personId\": 13, \"firstName\": \"David\", \"label\": \"Youth Room\" },\n    { \"personId\": 14, \"firstName\": \"Emma\", \"label\": \"Kids Zone - Room 3\" }\n  ]\n}\n</code></pre>\n","urlObject":{"path":["api","kiosk","checkin","batch"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"a9dc3a3e-daa0-4aae-a557-4e2ad31a09a3"},{"name":"Admin: Check-Ins by Date","id":"3ee8a6c6-1314-4945-80db-9960864b3bd6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/checkin/admin/by-date?date=2026-03-22","description":"<p>Admin-only. Returns all check-ins for a given date with full family and person data. Used for attendance tracking dashboards and reports.</p>\n","urlObject":{"path":["api","checkin","admin","by-date"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Date in YYYY-MM-DD format</p>\n","type":"text/plain"},"key":"date","value":"2026-03-22"}],"variable":[]}},"response":[],"_postman_id":"3ee8a6c6-1314-4945-80db-9960864b3bd6"},{"name":"Admin: Visitor Check-Ins","id":"4e5e954d-86b9-4167-9f20-0af78162d72a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/checkin/admin/visitors?date=2026-03-22","description":"<p>Admin-only. Returns check-ins flagged as visitors (first-time attendees) for a given date. Includes suggested target groups for follow-up and engagement.</p>\n","urlObject":{"path":["api","checkin","admin","visitors"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Date in YYYY-MM-DD format</p>\n","type":"text/plain"},"key":"date","value":"2026-03-22"}],"variable":[]}},"response":[],"_postman_id":"4e5e954d-86b9-4167-9f20-0af78162d72a"}],"id":"4bc0caa0-02ab-4b33-9c1b-48f389af06ac","description":"<p>Event management, kiosk-based check-in, and admin check-in reporting. The kiosk endpoints are unauthenticated for lobby tablet use.</p>\n","_postman_id":"4bc0caa0-02ab-4b33-9c1b-48f389af06ac"},{"name":"Groups","item":[{"name":"Get Group Tree","id":"cbaeef0c-2e86-49d4-95f2-430f612642e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/churchgroup/tree","description":"<p>Returns the full hierarchical tree of church groups: Department → Area → Group. Used for organizational views and assigning people to groups.</p>\n","urlObject":{"path":["api","churchgroup","tree"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"cbaeef0c-2e86-49d4-95f2-430f612642e1"},{"name":"Browse Small Groups","id":"f2c9a651-f136-4035-badb-147ffea1707b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/smallgroup","description":"<p>Browse available small groups. Admins see all groups including private ones. Regular members see only groups marked as public. Returns group name, description, meeting schedule, leader info, and member count.</p>\n","urlObject":{"path":["api","smallgroup"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"f2c9a651-f136-4035-badb-147ffea1707b"},{"name":"Create Small Group","id":"d9f81df0-85db-4427-a5e0-622750358aae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Young Adults Bible Study\",\n  \"description\": \"Weekly Bible study for young adults ages 18-30. Come grow in faith together!\",\n  \"meetingDay\": \"Wednesday\",\n  \"meetingTime\": \"19:00\",\n  \"meetingLocation\": \"Fellowship Hall Room B\",\n  \"leaderPersonId\": 12,\n  \"isPublic\": true,\n  \"maxMembers\": 20\n}"},"url":"https://church.ilheureux.dev/api/smallgroup","description":"<p>Create a new small group. Specify meeting details, leader, visibility, and optional member cap.</p>\n","urlObject":{"path":["api","smallgroup"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"d9f81df0-85db-4427-a5e0-622750358aae"},{"name":"Submit Join Request","id":"4b15bf56-9a13-4a5f-b54e-2fee6ffc0ebe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"smallGroupId\": 3,\n  \"message\": \"Hi! I'm interested in joining your group. I'm new to the church and looking to connect.\"\n}"},"url":"https://church.ilheureux.dev/api/smallgroup/join-request","description":"<p>Submit a request to join a small group. An email notification is sent to the group leaders so they can approve or deny the request. The optional message is included in the notification.</p>\n","urlObject":{"path":["api","smallgroup","join-request"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"4b15bf56-9a13-4a5f-b54e-2fee6ffc0ebe"},{"name":"Message Group Leaders","id":"464b5db5-54a7-4a19-869c-bf1b5bf9b0db","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"message\": \"Will there be childcare available at this week's meeting?\"\n}"},"url":"https://church.ilheureux.dev/api/smallgroup/3/message-leader","description":"<p>Send a message to the leaders of a specific small group. The message is delivered via email to all designated leaders of the group.</p>\n","urlObject":{"path":["api","smallgroup","3","message-leader"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"464b5db5-54a7-4a19-869c-bf1b5bf9b0db"}],"id":"703fdc83-eb22-417e-8465-311bd2c080a6","description":"<p>Church group hierarchy (departments, areas, groups) and small group management with join requests and leader messaging.</p>\n","_postman_id":"703fdc83-eb22-417e-8465-311bd2c080a6"},{"name":"Giving & Donations","item":[{"name":"List Giving Funds","id":"c59e8fcd-571b-4989-99cc-e0f267636968","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/giving/funds","description":"<p>List all giving funds configured for the church. Funds represent donation categories such as General Fund, Missions, Building Fund, etc.</p>\n","urlObject":{"path":["api","giving","funds"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"c59e8fcd-571b-4989-99cc-e0f267636968"},{"name":"Record Donation","id":"94634c05-a1d0-4ef0-a9e7-31340c61ad7e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"personId\": 12,\n  \"fundId\": 1,\n  \"amount\": 150.00,\n  \"date\": \"2026-03-22\",\n  \"method\": \"Online\",\n  \"note\": \"Weekly tithe\"\n}"},"url":"https://church.ilheureux.dev/api/giving/donate","description":"<p>Record a donation for a person to a specific giving fund. Methods include: Cash, Check, Online, ACH, Text-to-Give.</p>\n","urlObject":{"path":["api","giving","donate"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"94634c05-a1d0-4ef0-a9e7-31340c61ad7e"},{"name":"My Giving History","id":"297857e8-b884-4a90-8065-1aba42dd6696","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/giving/my-giving?year=2026","description":"<p>Returns the authenticated user's giving history for the specified year, broken down by fund with totals.</p>\n","urlObject":{"path":["api","giving","my-giving"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Year to retrieve giving history for</p>\n","type":"text/plain"},"key":"year","value":"2026"}],"variable":[]}},"response":[],"_postman_id":"297857e8-b884-4a90-8065-1aba42dd6696"},{"name":"Admin: Giving Summary","id":"2c75241b-fbae-4d2b-8a36-a4528fd7d7f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/giving/admin/summary?year=2026","description":"<p>Admin-only. Returns a comprehensive giving summary for the specified year including totals by fund, monthly trends, donor counts, and year-over-year comparisons.</p>\n","urlObject":{"path":["api","giving","admin","summary"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Year for the giving summary</p>\n","type":"text/plain"},"key":"year","value":"2026"}],"variable":[]}},"response":[],"_postman_id":"2c75241b-fbae-4d2b-8a36-a4528fd7d7f8"}],"id":"4906e448-6c0d-4f21-900c-611ab4ab4ae2","description":"<p>Donation recording, giving funds management, personal giving history, and admin giving summaries.</p>\n","_postman_id":"4906e448-6c0d-4f21-900c-611ab4ab4ae2"},{"name":"Reports & Audit","item":[{"name":"Membership Report","id":"d342c613-b72c-4e7a-aadd-9d580e7b6539","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/report/membership","description":"<p>Returns membership overview statistics: total members, new members, age/gender demographics, membership status breakdown, and family counts.</p>\n","urlObject":{"path":["api","report","membership"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"d342c613-b72c-4e7a-aadd-9d580e7b6539"},{"name":"Attendance Report","id":"10baeeba-95a6-41aa-9d8f-6d4490c929b5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/report/attendance?year=2026","description":"<p>Returns attendance metrics for the specified year: average attendance by event, weekly/monthly trends, visitor vs. regular ratios, and year-over-year growth.</p>\n","urlObject":{"path":["api","report","attendance"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Year for attendance metrics</p>\n","type":"text/plain"},"key":"year","value":"2026"}],"variable":[]}},"response":[],"_postman_id":"10baeeba-95a6-41aa-9d8f-6d4490c929b5"},{"name":"Data Quality Report","id":"55039331-fd56-435a-817a-b436d1c0f6f2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/report/data-quality","description":"<p>Scans the database for data quality issues: missing emails/phones, incomplete profiles, potential duplicate people, families without a head, and other data integrity concerns.</p>\n","urlObject":{"path":["api","report","data-quality"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"55039331-fd56-435a-817a-b436d1c0f6f2"},{"name":"Audit Log","id":"16c03ba5-fb8f-4cde-adae-2dbec35549d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/audit/changes?page=1&pageSize=25","description":"<p>Browse the field-level audit log showing all data changes. Paginated results include: who changed what, old value, new value, timestamp, and entity type. Supports filtering by entity type, person ID, and date range.</p>\n","urlObject":{"path":["api","audit","changes"],"host":["https://church.ilheureux.dev"],"query":[{"description":{"content":"<p>Page number (1-based)</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>Number of results per page</p>\n","type":"text/plain"},"key":"pageSize","value":"25"}],"variable":[]}},"response":[],"_postman_id":"16c03ba5-fb8f-4cde-adae-2dbec35549d0"}],"id":"8fa5de72-020e-46da-82a1-11286c911ed1","description":"<p>Reporting endpoints for membership, attendance, data quality, and field-level audit logging.</p>\n","_postman_id":"8fa5de72-020e-46da-82a1-11286c911ed1"},{"name":"Communication","item":[{"name":"Send Broadcast","id":"63c91109-3138-47ac-b50a-e5c68f61a0d7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"channel\": \"email\",\n  \"subject\": \"This Week at Church\",\n  \"body\": \"<h2>Welcome!</h2><p>Join us this Sunday for worship at 9:00 AM and 11:00 AM. Childcare is available for both services.</p>\",\n  \"recipientGroupId\": 5,\n  \"sendAt\": null\n}"},"url":"https://church.ilheureux.dev/api/communication/send","description":"<p>Send an email or SMS broadcast. Specify the channel (email or sms), content, and recipient group. Email supports HTML body. Optional sendAt for scheduled delivery (null = send immediately).</p>\n","urlObject":{"path":["api","communication","send"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"63c91109-3138-47ac-b50a-e5c68f61a0d7"},{"name":"Twilio SMS Webhook","id":"44802a34-aa26-40ee-8808-7544d1d59bcb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"}],"body":{"mode":"urlencoded","urlencoded":[{"key":"From","value":"+15551234567","description":"<p>Sender phone number</p>\n"},{"key":"To","value":"+15559999999","description":"<p>Church phone number</p>\n"},{"key":"Body","value":"GIVE 50","description":"<p>SMS message body (e.g., 'GIVE 50', 'CONNECT')</p>\n"}]},"url":"https://church.ilheureux.dev/api/sms/incoming","description":"<p>Twilio webhook endpoint for incoming SMS messages. No auth required (validated via Twilio signature). Supports keywords:</p>\n<ul>\n<li><strong>GIVE [amount]</strong> — initiates SMS-to-Give flow</li>\n<li><strong>CONNECT</strong> — submits a digital connection card</li>\n<li>Other keywords can be configured in the admin panel</li>\n</ul>\n","urlObject":{"path":["api","sms","incoming"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"44802a34-aa26-40ee-8808-7544d1d59bcb"},{"name":"Get Church Branding","id":"7aa4075d-230b-47af-912b-9355d50eb030","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://church.ilheureux.dev/api/branding","description":"<p>Public endpoint (no auth required). Returns the church's branding configuration including name, logo URL, primary/secondary colors, and other theming values. Used by the frontend to render the white-labeled UI.</p>\n","urlObject":{"path":["api","branding"],"host":["https://church.ilheureux.dev"],"query":[],"variable":[]}},"response":[],"_postman_id":"7aa4075d-230b-47af-912b-9355d50eb030"}],"id":"952be645-9813-458e-8f8a-5572771ff20f","description":"<p>Email/SMS broadcasting, Twilio SMS webhook for text-to-give and connection card keywords, and church branding configuration.</p>\n","_postman_id":"952be645-9813-458e-8f8a-5572771ff20f"}],"variable":[{"key":"baseUrl","value":"https://church.ilheureux.dev"},{"key":"token","value":""}]}