{
  "openapi":"3.0.3",
  "info":{"title":"iEduPortal REST API","version":"1.0.0","description":"Read/write API foundation for the iEduPortal school management system."},
  "servers":[{"url":"/school-management-system/public/api/v1"}],
  "components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},
  "paths":{
    "/health/":{"get":{"summary":"API health","responses":{"200":{"description":"Health status"}}}},
    "/auth/login/":{"post":{"summary":"Authenticate a user","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["account_type","username","password"],"properties":{"account_type":{"type":"string","enum":["admin","staff","parent","pupil"]},"username":{"type":"string"},"password":{"type":"string","format":"password"}}}}}},"responses":{"200":{"description":"Authentication successful"},"401":{"description":"Invalid credentials"}}}},
    "/auth/logout/":{"post":{"summary":"Revoke current access token","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Token revoked"},"401":{"description":"Unauthorized"}}}},
    "/auth/refresh/":{"post":{"summary":"Rotate a refresh token","responses":{"200":{"description":"New access token"},"401":{"description":"Invalid refresh token"}}}},
    "/me/":{"get":{"summary":"Current authenticated identity","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Identity"},"401":{"description":"Unauthorized"}}}},
    "/profile/":{"get":{"summary":"Current profile","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Profile"},"401":{"description":"Unauthorized"}}}},
    "/permissions/":{"get":{"summary":"Current permissions","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Permissions"},"401":{"description":"Unauthorized"}}}},
    "/dashboard/":{"get":{"summary":"Role-specific dashboard summary","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Dashboard"},"401":{"description":"Unauthorized"}}}},
    "/classes/":{"get":{"summary":"List classes","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Classes"}}}},
    "/subjects/":{"get":{"summary":"List subjects","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Subjects"}}}},
    "/pupils/":{"get":{"summary":"List pupils","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Pupils"}}}},
    "/parents/":{"get":{"summary":"List parents","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Parents"}}}},
    "/staff/":{"get":{"summary":"List staff","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Staff"}}}},
    "/admins/":{"get":{"summary":"List administrators","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Administrators"}}}},
    "/attendance/":{"get":{"summary":"Attendance records","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Attendance"}}}},
    "/attendance-summary/":{"get":{"summary":"Attendance summary","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Attendance summary"}}}},
    "/fees/":{"get":{"summary":"Fee obligations and payment history","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Fees"}}}},
    "/fee-summary/":{"get":{"summary":"Fee summary","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Fee summary"}}}},
    "/results/":{"get":{"summary":"Academic results","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Results"}}}},
    "/timetable/":{"get":{"summary":"Timetable","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Timetable"}}}},
    "/events/":{"get":{"summary":"Events","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Events"}}}},
    "/sessions/":{"get":{"summary":"Sessions","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Sessions"}}}},
    "/terms/":{"get":{"summary":"Terms","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Terms"}}}},
    "/announcements/":{"get":{"summary":"Announcements","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Announcements"}}}},
    "/classwork/":{"get":{"summary":"Classwork","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Classwork"}}}},
    "/assignments/":{"get":{"summary":"Assignments","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Assignments"}}}},
    "/lesson-notes/":{"get":{"summary":"Lesson notes","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Lesson notes"}}}},
    "/elibrary/":{"get":{"summary":"E-library metadata","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"E-library"}}}},
    "/virtual-classes/":{"get":{"summary":"Virtual classes","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Virtual classes"}}}},
    "/messages/":{"get":{"summary":"Messages","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Messages"}}}},
    "/messages/send/":{"post":{"summary":"Send a message","security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Message sent"}}}},
    "/messages/read/":{"post":{"summary":"Mark a message read","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Message marked read"}}}},
    "/notifications/":{"get":{"summary":"Notifications","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Notifications"}}}},
    "/communication/":{"get":{"summary":"Communication contacts","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Contacts"}}}},
    "/search/":{"get":{"summary":"Search academic resources","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Search results"}}}},
    "/password/":{"post":{"summary":"Change current password","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Password changed"}}}},
    "/school-info/":{"get":{"summary":"School information","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"School information"}}}}
  }
}
