{"openapi":"3.1.0","info":{"title":"School Management API","version":"1.0.0","description":"Multi-tenant school management REST API. Most routes require `Authorization: Bearer <token>` and `X-Tenant-Subdomain` headers."},"servers":[{"url":"http://localhost:3000","description":"Current server"}],"tags":[{"name":"System","description":"Health and metadata"},{"name":"Tenant","description":"Public tenant resolution"},{"name":"Auth","description":"Authentication"},{"name":"Business","description":"Organization settings"},{"name":"Attendance","description":"Geo-fenced attendance"},{"name":"Academic","description":"Academic structure"},{"name":"Portal","description":"Student/parent portal"},{"name":"Onboarding","description":"Student onboarding"},{"name":"Grading","description":"Score sheets"},{"name":"Plans","description":"Academic plans"},{"name":"Users","description":"User profiles"}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Supabase access token from POST /api/auth/login"},"TenantHeader":{"type":"apiKey","in":"header","name":"X-Tenant-Subdomain","description":"Organization subdomain slug"}}},"security":[{"BearerAuth":[]}],"paths":{"/health":{"get":{"tags":["System"],"summary":"Health check","responses":{"200":{"description":"API is running","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/tenant/current":{"get":{"tags":["Tenant"],"summary":"Get current tenant branding (public)","security":[{"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/auth/login":{"post":{"tags":["Auth"],"summary":"Login with email and password","security":[{"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/auth/logout":{"post":{"tags":["Auth"],"summary":"Logout current session","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/auth/me":{"get":{"tags":["Auth"],"summary":"Current user profile","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/auth/my-permissions":{"get":{"tags":["Auth"],"summary":"Current user permissions","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/business":{"patch":{"tags":["Business"],"summary":"Update business (logo, subdomain)","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/attendance/punch":{"post":{"tags":["Attendance"],"summary":"Punch in/out (geo-fence)","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/attendance/check-fence":{"get":{"tags":["Attendance"],"summary":"Check if coordinates are inside school fence","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/academic/tree":{"get":{"tags":["Academic"],"summary":"Academic hierarchy tree","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/academic/class-roster/{majorClassId}":{"get":{"tags":["Academic"],"summary":"Class roster","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/portal/notices":{"get":{"tags":["Portal"],"summary":"Student/parent notices","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/portal/assignments":{"get":{"tags":["Portal"],"summary":"Portal assignments list","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/portal/exams":{"get":{"tags":["Portal"],"summary":"Portal exams list","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/portal/assignments/{assignmentId}/answer":{"post":{"tags":["Portal"],"summary":"Submit assignment answer","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/onboarding/students/options":{"get":{"tags":["Onboarding"],"summary":"Student onboarding options","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/onboarding/students/{userId}/prefill":{"get":{"tags":["Onboarding"],"summary":"Prefill student form","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/onboarding/students":{"post":{"tags":["Onboarding"],"summary":"Onboard new student","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/grading/assignments/{id}/score-sheet":{"get":{"tags":["Grading"],"summary":"Assignment score sheet","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/grading/assignments/{id}/scores":{"put":{"tags":["Grading"],"summary":"Save assignment scores","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/grading/exams/{id}/score-sheet":{"get":{"tags":["Grading"],"summary":"Exam score sheet","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/grading/exams/{id}/scores":{"put":{"tags":["Grading"],"summary":"Save exam scores","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/plans/{id}/run":{"post":{"tags":["Plans"],"summary":"Run a plan","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/plans/{id}/inactivate":{"post":{"tags":["Plans"],"summary":"Inactivate a plan","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/plans/running/list":{"get":{"tags":["Plans"],"summary":"List running plans","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/users/{userId}/profile":{"get":{"tags":["Users"],"summary":"User profile","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/users/{userId}/detail":{"patch":{"tags":["Users"],"summary":"Upsert user detail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api/branches":{"get":{"tags":["Branch"],"summary":"List Branch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Branch"],"summary":"Create Branch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/branches/{id}":{"get":{"tags":["Branch"],"summary":"Get Branch by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Branch"],"summary":"Update Branch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Branch"],"summary":"Delete Branch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/roles":{"get":{"tags":["Role"],"summary":"List Role","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Role"],"summary":"Create Role","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/roles/{id}":{"get":{"tags":["Role"],"summary":"Get Role by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Role"],"summary":"Update Role","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Role"],"summary":"Delete Role","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/permissions":{"get":{"tags":["Permission"],"summary":"List Permission","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Permission"],"summary":"Create Permission","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/permissions/{id}":{"get":{"tags":["Permission"],"summary":"Get Permission by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Permission"],"summary":"Update Permission","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Permission"],"summary":"Delete Permission","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/role-groups":{"get":{"tags":["RoleGroup"],"summary":"List RoleGroup","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["RoleGroup"],"summary":"Create RoleGroup","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/role-groups/{id}":{"get":{"tags":["RoleGroup"],"summary":"Get RoleGroup by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["RoleGroup"],"summary":"Update RoleGroup","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["RoleGroup"],"summary":"Delete RoleGroup","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/users":{"get":{"tags":["User"],"summary":"List User","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["User"],"summary":"Create User","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/users/{id}":{"get":{"tags":["User"],"summary":"Get User by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["User"],"summary":"Update User","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["User"],"summary":"Delete User","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/user-details":{"get":{"tags":["UserDetail"],"summary":"List UserDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["UserDetail"],"summary":"Create UserDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/user-details/{id}":{"get":{"tags":["UserDetail"],"summary":"Get UserDetail by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["UserDetail"],"summary":"Update UserDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["UserDetail"],"summary":"Delete UserDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/parent-children":{"get":{"tags":["ParentChild"],"summary":"List ParentChild","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["ParentChild"],"summary":"Create ParentChild","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/parent-children/{id}":{"get":{"tags":["ParentChild"],"summary":"Get ParentChild by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["ParentChild"],"summary":"Update ParentChild","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["ParentChild"],"summary":"Delete ParentChild","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/schools":{"get":{"tags":["School"],"summary":"List School","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["School"],"summary":"Create School","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/schools/{id}":{"get":{"tags":["School"],"summary":"Get School by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["School"],"summary":"Update School","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["School"],"summary":"Delete School","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/school-details":{"get":{"tags":["SchoolDetail"],"summary":"List SchoolDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["SchoolDetail"],"summary":"Create SchoolDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/school-details/{id}":{"get":{"tags":["SchoolDetail"],"summary":"Get SchoolDetail by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["SchoolDetail"],"summary":"Update SchoolDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["SchoolDetail"],"summary":"Delete SchoolDetail","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/plans":{"get":{"tags":["Plan"],"summary":"List Plan","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Plan"],"summary":"Create Plan","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/plans/{id}":{"get":{"tags":["Plan"],"summary":"Get Plan by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Plan"],"summary":"Update Plan","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Plan"],"summary":"Delete Plan","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/plan-enrollments":{"get":{"tags":["PlanEnrollment"],"summary":"List PlanEnrollment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["PlanEnrollment"],"summary":"Create PlanEnrollment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/plan-enrollments/{id}":{"get":{"tags":["PlanEnrollment"],"summary":"Get PlanEnrollment by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["PlanEnrollment"],"summary":"Update PlanEnrollment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["PlanEnrollment"],"summary":"Delete PlanEnrollment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/detail-types":{"get":{"tags":["DetailType"],"summary":"List DetailType","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["DetailType"],"summary":"Create DetailType","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/detail-types/{id}":{"get":{"tags":["DetailType"],"summary":"Get DetailType by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["DetailType"],"summary":"Update DetailType","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["DetailType"],"summary":"Delete DetailType","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/detail-values":{"get":{"tags":["DetailValue"],"summary":"List DetailValue","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["DetailValue"],"summary":"Create DetailValue","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/detail-values/{id}":{"get":{"tags":["DetailValue"],"summary":"Get DetailValue by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["DetailValue"],"summary":"Update DetailValue","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["DetailValue"],"summary":"Delete DetailValue","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/batches":{"get":{"tags":["Batch"],"summary":"List Batch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Batch"],"summary":"Create Batch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/batches/{id}":{"get":{"tags":["Batch"],"summary":"Get Batch by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Batch"],"summary":"Update Batch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Batch"],"summary":"Delete Batch","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/majors":{"get":{"tags":["Major"],"summary":"List Major","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Major"],"summary":"Create Major","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/majors/{id}":{"get":{"tags":["Major"],"summary":"Get Major by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Major"],"summary":"Update Major","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Major"],"summary":"Delete Major","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/major-classes":{"get":{"tags":["MajorClass"],"summary":"List MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["MajorClass"],"summary":"Create MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/major-classes/{id}":{"get":{"tags":["MajorClass"],"summary":"Get MajorClass by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["MajorClass"],"summary":"Update MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["MajorClass"],"summary":"Delete MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/class-members":{"get":{"tags":["ClassMember"],"summary":"List ClassMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["ClassMember"],"summary":"Create ClassMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/class-members/{id}":{"get":{"tags":["ClassMember"],"summary":"Get ClassMember by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["ClassMember"],"summary":"Update ClassMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["ClassMember"],"summary":"Delete ClassMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/major-class-teachers":{"get":{"tags":["MajorClass"],"summary":"List MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["MajorClass"],"summary":"Create MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/major-class-teachers/{id}":{"get":{"tags":["MajorClass"],"summary":"Get MajorClass by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["MajorClass"],"summary":"Update MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["MajorClass"],"summary":"Delete MajorClass","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/news":{"get":{"tags":["News"],"summary":"List News","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["News"],"summary":"Create News","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/news/{id}":{"get":{"tags":["News"],"summary":"Get News by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["News"],"summary":"Update News","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["News"],"summary":"Delete News","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignments":{"get":{"tags":["Assignment"],"summary":"List Assignment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Assignment"],"summary":"Create Assignment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignments/{id}":{"get":{"tags":["Assignment"],"summary":"Get Assignment by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Assignment"],"summary":"Update Assignment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Assignment"],"summary":"Delete Assignment","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignment-members":{"get":{"tags":["AssignmentMember"],"summary":"List AssignmentMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["AssignmentMember"],"summary":"Create AssignmentMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignment-members/{id}":{"get":{"tags":["AssignmentMember"],"summary":"Get AssignmentMember by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["AssignmentMember"],"summary":"Update AssignmentMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["AssignmentMember"],"summary":"Delete AssignmentMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignment-answers":{"get":{"tags":["AssignmentAnswer"],"summary":"List AssignmentAnswer","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["AssignmentAnswer"],"summary":"Create AssignmentAnswer","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignment-answers/{id}":{"get":{"tags":["AssignmentAnswer"],"summary":"Get AssignmentAnswer by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["AssignmentAnswer"],"summary":"Update AssignmentAnswer","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["AssignmentAnswer"],"summary":"Delete AssignmentAnswer","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignment-records":{"get":{"tags":["AssignmentRecord"],"summary":"List AssignmentRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["AssignmentRecord"],"summary":"Create AssignmentRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/assignment-records/{id}":{"get":{"tags":["AssignmentRecord"],"summary":"Get AssignmentRecord by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["AssignmentRecord"],"summary":"Update AssignmentRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["AssignmentRecord"],"summary":"Delete AssignmentRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exams":{"get":{"tags":["Exam"],"summary":"List Exam","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["Exam"],"summary":"Create Exam","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exams/{id}":{"get":{"tags":["Exam"],"summary":"Get Exam by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Exam"],"summary":"Update Exam","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Exam"],"summary":"Delete Exam","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exam-members":{"get":{"tags":["ExamMember"],"summary":"List ExamMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["ExamMember"],"summary":"Create ExamMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exam-members/{id}":{"get":{"tags":["ExamMember"],"summary":"Get ExamMember by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["ExamMember"],"summary":"Update ExamMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["ExamMember"],"summary":"Delete ExamMember","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exam-records":{"get":{"tags":["ExamRecord"],"summary":"List ExamRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["ExamRecord"],"summary":"Create ExamRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exam-records/{id}":{"get":{"tags":["ExamRecord"],"summary":"Get ExamRecord by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["ExamRecord"],"summary":"Update ExamRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["ExamRecord"],"summary":"Delete ExamRecord","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exam-certificates":{"get":{"tags":["ExamCertificate"],"summary":"List ExamCertificate","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["ExamCertificate"],"summary":"Create ExamCertificate","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/exam-certificates/{id}":{"get":{"tags":["ExamCertificate"],"summary":"Get ExamCertificate by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["ExamCertificate"],"summary":"Update ExamCertificate","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["ExamCertificate"],"summary":"Delete ExamCertificate","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/geo-fences":{"get":{"tags":["GeoFence"],"summary":"List GeoFence","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"tags":["GeoFence"],"summary":"Create GeoFence","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/geo-fences/{id}":{"get":{"tags":["GeoFence"],"summary":"Get GeoFence by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["GeoFence"],"summary":"Update GeoFence","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["GeoFence"],"summary":"Delete GeoFence","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/attendance-records":{"get":{"tags":["Attendance"],"summary":"List Attendance","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/attendance-records/{id}":{"get":{"tags":["Attendance"],"summary":"Get Attendance by id","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single record","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"tags":["Attendance"],"summary":"Update Attendance","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"tags":["Attendance"],"summary":"Delete Attendance","security":[{"BearerAuth":[],"TenantHeader":[]}],"parameters":[{"name":"X-Tenant-Subdomain","in":"header","required":true,"schema":{"type":"string","example":"demo"},"description":"Organization subdomain (tenant identifier)"},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}