openapi: 3.0.3 info: version: 'latest' title: HEI Admin API description: | _Programmatically connect to a computer programming [school](https://hei.school)._ After [joining us](mailto:contact@mail.hei.school), you can get an identification token from our [dev](https://dev-hei-admin.auth.eu-west-3.amazoncognito.com/oauth2/authorize?client_id=5s8cg50doahmu855rlc8fr6qmp&response_type=token&scope=email+openid&redirect_uri=https%3A%2F%2Fapi-dev.hei.school%2Fwhoami) or [prod](https://prod-hei-admin.auth.eu-west-3.amazoncognito.com/oauth2/authorize?client_id=i8bg538jpfu6mqmqb61m26trd&response_type=token&scope=email+openid&redirect_uri=https%3A%2F%2Fapi-prod.hei.school%2Fwhoami) authentication service. Then, start playing with our system! When the `FEES_ONLY` environment variable is set to `true`, the API operates in a restricted mode where only fees-related endpoints are accessible. All other endpoints return **HTTP 403** with `{"message": "This endpoint is disabled in FEES_ONLY mode"}`. The allowed prefixes are: `/fees`, `/students`, `/whoami`, `/ping`, `/authentication`, `/health`, `/mpbs`. The implementation of our API is [publicly disclosed](https://github.com/hei-school/hei-admin-api). You are welcome to try and compromise it. Happy hacking! servers: - url: 'https://api-dev.hei.school' - url: 'https://api-prod.hei.school' security: - BearerAuth: [ ] paths: # Health /health/db: $ref: './operations/health-api.yml#/operations/dummyTable_should_not_be_empty' # Security /whoami: $ref: './operations/security-api.yml#/operations/whoami' /ping: $ref: './operations/security-api.yml#/operations/ping' /non-accessible-by-suspended: $ref: './operations/security-api.yml#/operations/amISuspended' /authentication/login-url: $ref: './operations/security-api.yml#/operations/getLoginPageURL' /authentication/signin: $ref: './operations/security-api.yml#/operations/getToken' # Search /global_search/user: $ref: './operations/search-api.yml#/operations/globalSearchUser' # Groups '/groups/{id}': $ref: './operations/groups-api.yml#/operations/getGroupById' /groups: $ref: './operations/groups-api.yml#/operations/groups' '/groups/{id}/students/raw': $ref: './operations/groups-api.yml#/operations/generateStudentsGroupInXlsx' '/groups/{id}/students': $ref: './operations/groups-api.yml#/operations/getStudentsByGroupId' '/students/{id}/group_flows': $ref: './operations/groups-api.yml#/operations/moveOrDeleteStudentInGroup' # Users /groups/students/stats: $ref: './operations/users-api.yml#/operations/getGroupStats' /students/stats: $ref: './operations/users-api.yml#/operations/getStats' '/students/{id}/work_info': $ref: './operations/users-api.yml#/operations/studentsWorkInfo' '/students/{id}': $ref: './operations/users-api.yml#/operations/studentsById' '/students/{student_id}/level': $ref: './operations/users-api.yml#/operations/getStudentLevel' /students: $ref: './operations/users-api.yml#/operations/students' /students/import/template: $ref: './operations/users-api.yml#/operations/getStudentImportTemplateURL' /students/import: $ref: './operations/users-api.yml#/operations/importStudents' /students/result_overviews: $ref: './operations/users-api.yml#/operations/getStudentsResultOverviewsByStatus' '/monitors/{id}': $ref: './operations/users-api.yml#/operations/monitorsById' /monitors: $ref: './operations/users-api.yml#/operations/monitors' /teachers/raw: $ref: './operations/users-api.yml#/operations/generateTeachersInXlsx' /students/raw/xlsx: $ref: './operations/users-api.yml#/operations/generateStudentsInXlsx' '/teachers/{id}': $ref: './operations/users-api.yml#/operations/teachersById' /teachers: $ref: './operations/users-api.yml#/operations/teachers' '/managers/{id}': $ref: './operations/users-api.yml#/operations/managersById' '/admins/{id}': $ref: './operations/users-api.yml#/operations/adminsById' /managers: $ref: './operations/users-api.yml#/operations/getManagers' /staff_members: $ref: './operations/users-api.yml#/operations/staffMembers' /organizers: $ref: './operations/users-api.yml#/operations/organizers' '/organizers/{id}': $ref: './operations/users-api.yml#/operations/getOrganizerById' /staff_members/raw/xlsx: $ref: './operations/users-api.yml#/operations/getStaffMembersIntoXlsx' '/staff_members/{id}': $ref: './operations/users-api.yml#/operations/staffMembersById' '/teachers/{teacher_id}/picture/raw': $ref: './operations/users-api.yml#/operations/uploadTeacherProfilePicture' '/organizers/{organizer_id}/picture/raw': $ref: './operations/users-api.yml#/operations/uploadOrganizerProfilePicture' '/managers/{manager_id}/picture/raw': $ref: './operations/users-api.yml#/operations/uploadManagerProfilePicture' '/students/{student_id}/picture/raw': $ref: './operations/users-api.yml#/operations/uploadStudentProfilePicture' '/admins/{admin_id}/picture/raw': $ref: './operations/users-api.yml#/operations/uploadAdminProfilePicture' '/staff_members/{staff_id}/picture/raw': $ref: './operations/users-api.yml#/operations/uploadStaffMemberProfilePicture' # Grades '/students/{student_id}/grades': $ref: './operations/grades-api.yml#/operations/getGradesByStudentId' '/students/{student_id}/yearly_results/{student_level}': $ref: './operations/grades-api.yml#/operations/getYearlyResult' '/students/{student_id}/yearly_results/{student_level}/transcript': $ref: './operations/grades-api.yml#/operations/getYearlyResultTranscript' '/students/{student_id}/courses/{course_id}/grades': $ref: './operations/grades-api.yml#/operations/getCourseGrades' '/students/{student_id}/results_summary': $ref: './operations/grades-api.yml#/operations/getResultsSummary' '/students/{student_id}/results_summary_transcript': $ref: './operations/grades-api.yml#/operations/getResultsSummaryTranscript' '/courses/{course_id}/students/grades': $ref: './operations/grades-api.yml#/operations/getCourseStudentsGrade' '/courses/{course_id}/student/{student_id}/grade/stats': $ref: './operations/grades-api.yml#/operations/getStudentCourseGradeStats' '/courses/{course_id}/student/{student_id}/exams/grades': $ref: './operations/grades-api.yml#/operations/getStudentExamsGrade' '/exams/{exams_id}/grade/stats': $ref: './operations/grades-api.yml#/operations/getExamGradeStats' '/exams/{exam_id}/students/{student_id}/grade': $ref: './operations/grades-api.yml#/operations/examsStudentsGrade' '/exams/{exam_id}/students/{student_id}/grade/update': $ref: './operations/grades-api.yml#/operations/correctParticipantGrade' '/exams/{exam_id}/grades': $ref: './operations/grades-api.yml#/operations/examsGrades' '/exams/{exam_id}/grades/import': $ref: './operations/grades-api.yml#/operations/importStudentsExamGrade' '/exams/{exam_id}/grades/import/update': $ref: './operations/grades-api.yml#/operations/importStudentsExamGradeUpdated' '/exams/{exam_id}/grades/import/template': $ref: './operations/grades-api.yml#/operations/getStudentsGradesTemplateForExam' '/exams/{exam_id}/grades/update': $ref: './operations/grades-api.yml#/operations/correctParticipantsGradeForExam' '/grades/{grade_id}/history': $ref: './operations/grades-api.yml#/operations/getOrderedGradeHistory' # RetakeExam '/students/{student_id}/retake_exams': $ref: './operations/retake-exam-api.yml#/operations/getListStudentRetakeExams' /retake_exam_sessions: $ref: './operations/retake-exam-api.yml#/operations/retakeExamSessions' '/retake_exam_sessions/{session_id}': $ref: './operations/retake-exam-api.yml#/operations/getRetakeExamSessionById' /retake_exams: $ref: './operations/retake-exam-api.yml#/operations/getAllRetakeExams' /retake_exams/to_cancel: $ref: './operations/retake-exam-api.yml#/operations/requestToCancelRetakeExams' /retake_exams/cancel: $ref: './operations/retake-exam-api.yml#/operations/cancelRetakeExams' /retake_exams/reject: $ref: './operations/retake-exam-api.yml#/operations/rejectToCancelRetakeExamRequests' /retake_exams/status: $ref: './operations/retake-exam-api.yml#/operations/updateRetakeExamsStatus' '/retake_exam_sessions/{session_id}/retake_exams': $ref: './operations/retake-exam-api.yml#/operations/createOrUpdateRetakeExam' '/retake_exam_sessions/{session_id}/retake_exam_courses': $ref: './operations/retake-exam-api.yml#/operations/getRetakeExamCoursesBySessionId' '/retake_exam_sessions/{session_id}/retake_exam_courses/{course_id}/participants': $ref: './operations/retake-exam-api.yml#/operations/getRetakeExamParticipantByCourseIdAndSessionId' '/students/{student_id}/sessions/{session_id}/retake_exams': $ref: './operations/retake-exam-api.yml#/operations/getStudentRetakeExamBySession' # Monitoring /monitors/link: $ref: './operations/monitoring-api.yml#/operations/monitorsLink' '/monitors/{monitor_id}/students/{student_id}': $ref: './operations/monitoring-api.yml#/operations/getLinkedStudentByIdAndMonitorId' '/monitors/{id}/students': $ref: './operations/monitoring-api.yml#/operations/monitorsStudents' # Courses '/courses/{course_id}': $ref: './operations/courses-api.yml#/operations/getCourseById' '/courses/{course_id}/course_assignments': $ref: './operations/courses-api.yml#/operations/coursesCourseAssignments' /courses: $ref: './operations/courses-api.yml#/operations/courses' '/groups/{group_id}/course_assignments': $ref: './operations/courses-api.yml#/operations/getCourseAssignmentsByGroupId' '/teachers/{teacher_id}/course_assignments': $ref: './operations/courses-api.yml#/operations/getCourseAssignmentByTeacherId' /course_assignments: $ref: './operations/courses-api.yml#/operations/courseAssignments' # Exams '/course_assignments/{course_assignment_id}/exams': $ref: './operations/exams-api.yml#/operations/courseAssignmentsExams' /exams: $ref: './operations/exams-api.yml#/operations/exams' '/exams/{id}': $ref: './operations/exams-api.yml#/operations/getExamOneExamById' '/course_assignments/{course_assignment_id}/exams/{exam_id}': $ref: './operations/exams-api.yml#/operations/getExamById' # Events '/event/{event_id}/students/raw/xlsx': $ref: './operations/events-api.yml#/operations/generateEventStudentsParticipantInXlsx' /events: $ref: './operations/events-api.yml#/operations/events' '/events/{id}': $ref: './operations/events-api.yml#/operations/eventsById' '/events/{id}/participants': $ref: './operations/events-api.yml#/operations/eventsParticipants' /event_participants: $ref: './operations/events-api.yml#/operations/getAllEventParticipants' '/events/students/{student_id}/stats': $ref: './operations/events-api.yml#/operations/getEventParticipantStats' /events/stats: $ref: './operations/events-api.yml#/operations/getEventStats' # Promotions '/promotion/{promotion_id}/students/raw/xlsx': $ref: './operations/promotions-api.yml#/operations/generateStudentsPromotionInXlsx' /promotions: $ref: './operations/promotions-api.yml#/operations/promotions' '/promotions/{id}': $ref: './operations/promotions-api.yml#/operations/getPromotionById' '/promotions/{id}/students': $ref: './operations/promotions-api.yml#/operations/getStudentsByPromotion' '/promotions/{id}/groups': $ref: './operations/promotions-api.yml#/operations/updatePromotionGroups' # Paying /delay_penalty_change: $ref: './operations/paying-api.yml#/operations/createDelayPenaltyChange' /delay_penalty: $ref: './operations/paying-api.yml#/operations/getDelayPenalty' '/students/{student_id}/fees/{fee_id}/payments/{payment_id}/receipt/raw': $ref: './operations/paying-api.yml#/operations/getPaidFeeReceipt' /fees/payments/receipts/raw: $ref: './operations/paying-api.yml#/operations/generateFeeReceipts' '/students/{student_id}/fees/{fee_id}': $ref: './operations/paying-api.yml#/operations/studentsFeesById' '/students/{student_id}/fees': $ref: './operations/paying-api.yml#/operations/studentsFees' /fees/raw: $ref: './operations/paying-api.yml#/operations/generateFeesListAsXlsx' /fees: $ref: './operations/paying-api.yml#/operations/fees' /fees/stats: $ref: './operations/paying-api.yml#/operations/getFeesStats' /fees/advanced-stats-generate: $ref: './operations/paying-api.yml#/operations/generateAdvancedStats' /fees/advanced-stats: $ref: './operations/paying-api.yml#/operations/getAdvancedFeesStats' /fees/export: $ref: './operations/paying-api.yml#/operations/exportAllFees' /fees/advanced-stats/export: $ref: './operations/paying-api.yml#/operations/exportAdvancedFeesStats' /fees/templates: $ref: './operations/paying-api.yml#/operations/getFeeTemplates' '/fees/templates/{id}': $ref: './operations/paying-api.yml#/operations/feesTemplatesById' /feeTemplates: $ref: './operations/paying-api.yml#/operations/feeTemplatesOperations' /feeTemplates/{id}/content: $ref: './operations/paying-api.yml#/operations/feeTemplatesContentOperations' /feeCreationJobs: $ref: './operations/paying-api.yml#/operations/feeCreationJobsOperations' '/feeCreationJobs/{id}': $ref: './operations/paying-api.yml#/operations/getFeeCreationJob' '/feeCreationJobs/{id}/students': $ref: './operations/paying-api.yml#/operations/getFeeCreationJobStudents' /mpbs: $ref: './operations/paying-api.yml#/operations/getFetchedMobileTransactions' '/mpbs/{mpbs_id}/pend': $ref: './operations/paying-api.yml#/operations/pendFailedMpbs' '/students/{student_id}/fees/{fee_id}/mpbs': $ref: './operations/paying-api.yml#/operations/studentsFeesMpbs' /mpbs/verify: $ref: './operations/paying-api.yml#/operations/verifyMpbs' '/students/{student_id}/fees/{fee_id}/mpbs/verifications': $ref: './operations/paying-api.yml#/operations/getMpbsVerifications' '/students/{student_id}/fees/{fee_id}/payments': $ref: './operations/paying-api.yml#/operations/studentsFeesPayments' '/students/{student_id}/fees/{fee_id}/payments/{payment_id}': $ref: './operations/paying-api.yml#/operations/deleteStudentFeePaymentById' # Attendance /attendance/movement: $ref: './operations/attendance-api.yml#/operations/createAttendanceMovement' /attendance: $ref: './operations/attendance-api.yml#/operations/getStudentsAttendance' '/students/{id}/attendance': $ref: './operations/attendance-api.yml#/operations/getStudentAttendance' # Files /school/files: $ref: './operations/files-api.yml#/operations/getSchoolRegulations' '/school/files/{id}': $ref: './operations/files-api.yml#/operations/getSchoolRegulationById' /school/files/raw: $ref: './operations/files-api.yml#/operations/uploadSchoolFile' /school/files/share_link: $ref: './operations/files-api.yml#/operations/getSchoolFilesShareLink' '/users/{user_id}/files/{id}': $ref: './operations/files-api.yml#/operations/getUserFilesById' '/students/{student_id}/work_files': $ref: './operations/files-api.yml#/operations/getStudentWorkDocuments' '/students/{student_id}/work_files/{id}': $ref: './operations/files-api.yml#/operations/getStudentWorkDocumentsById' '/students/{student_id}/work_files/raw': $ref: './operations/files-api.yml#/operations/uploadStudentWorkFile' '/users/{user_id}/files/raw': $ref: './operations/files-api.yml#/operations/uploadUserFile' '/users/{user_id}/files': $ref: './operations/files-api.yml#/operations/getUserFiles' '/students/{id}/scholarship_certificate/raw': $ref: './operations/files-api.yml#/operations/getStudentScholarshipCertificate' # Comments /comments: $ref: './operations/comments-api.yml#/operations/getComments' '/students/{student_id}/comments': $ref: './operations/comments-api.yml#/operations/studentsComments' # Letters /students/letters: $ref: './operations/letters-api.yml#/operations/getStudentsLetters' /letters: $ref: './operations/letters-api.yml#/operations/letters' '/letters/{id}': $ref: './operations/letters-api.yml#/operations/getLetterById' /students/letters/stats: $ref: './operations/letters-api.yml#/operations/getStudentsLetterStats' /letters/stats: $ref: './operations/letters-api.yml#/operations/getLetterStats' '/users/{user_id}/letters': $ref: './operations/letters-api.yml#/operations/usersLetters' # Announcements /announcements: $ref: './operations/announcements-api.yml#/operations/announcements' '/announcements/{id}': $ref: './operations/announcements-api.yml#/operations/getAnnouncementById' '/announcements/{announcements_id}/reaction': $ref: './operations/announcements-api.yml#/operations/reactToAnnouncement' /students/announcements: $ref: './operations/announcements-api.yml#/operations/getStudentsAnnouncements' '/students/announcements/{id}': $ref: './operations/announcements-api.yml#/operations/getStudentsAnnouncementById' /teachers/announcements: $ref: './operations/announcements-api.yml#/operations/getTeachersAnnouncements' '/teachers/announcements/{id}': $ref: './operations/announcements-api.yml#/operations/getTeacherAnnouncementById' # Student '/students/{student_id}/status-check': $ref: './operations/student-api.yml#/operations/createStatusChecks' '/students/{student_id}/status-checks/{status_check_id}': $ref: './operations/student-api.yml#/operations/updateStatusCheck' '/students/{student_id}/status-checks': $ref: './operations/student-api.yml#/operations/getStudentStatusChecks' /status-checks: $ref: './operations/student-api.yml#/operations/getAllStatusChecks' # Cor /cors: $ref: './operations/cor-api.yml#/operations/getCors' '/cors/{cor_id}': $ref: './operations/cor-api.yml#/operations/getCorById' '/cors/{cor_id}/comment': $ref: './operations/cor-api.yml#/operations/commentCorById' '/students/{student_id}/cors': $ref: './operations/cor-api.yml#/operations/studentsCors' components: securitySchemes: BearerAuth: type: http scheme: bearer schemas: # Schemas that no operation references, kept here so that they remain # part of the generated clients. Their definitions live in components.yml. CrupdateOrganizer: $ref: './components.yml#/components/schemas/CrupdateOrganizer' CourseAssignmentExam: $ref: './components.yml#/components/schemas/CourseAssignmentExam' ModelFee: $ref: './components.yml#/components/schemas/ModelFee' MissingStatus: $ref: './components.yml#/components/schemas/MissingStatus' PagedLettersResponse: $ref: './components.yml#/components/schemas/PagedLettersResponse' UpdateLettersStatusResponse: $ref: './components.yml#/components/schemas/UpdateLettersStatusResponse' StudentExamGradeImportValidationResult: $ref: './components.yml#/components/schemas/StudentExamGradeImportValidationResult'