basePath: / definitions: dto.AcademyMiniDetailResponse: properties: data: $ref: '#/definitions/models.Academy' payment: $ref: '#/definitions/models.AcademyPaymentTransaction' register_status: type: integer required: - register_status type: object dto.AccountDetailResponse: properties: account: $ref: '#/definitions/models.Account' details: $ref: '#/definitions/models.AccountDetail' type: object dto.AddParticipantRequest: properties: user_id: type: string required: - user_id type: object dto.AdminEventResponse: properties: created_at: type: string deleted_at: type: string end_event: type: string event_code: type: string exam_count: type: integer id_event: type: string img_banner: type: string is_public: type: boolean overview: type: string participant_count: type: integer price: type: number register_status: type: integer slug: type: string start_event: type: string title: type: string type: object dto.AdminExamResponse: properties: academy_count: type: integer configuration: $ref: '#/definitions/models.ExamConfiguration' created_at: type: string deleted_at: type: string description: type: string duration: $ref: '#/definitions/time.Duration' event_count: type: integer id_exam: type: string proctoring: $ref: '#/definitions/models.ExamProctoring' randomize: type: integer slug: type: string title: type: string type: object dto.AdminExamReviewAnswer: properties: answer: items: type: string type: array question: $ref: '#/definitions/dto.AdminExamReviewQuestion' question_id: type: string score: type: number type: object dto.AdminExamReviewQuestion: properties: ans_key: items: type: string type: array id: type: string options: items: type: string type: array question: type: string solution: type: string type: type: string type: object dto.AdminExamReviewResponse: properties: academy_id: type: string answers: items: $ref: '#/definitions/dto.AdminExamReviewAnswer' type: array attempt_id: type: string created_at: type: string due_at: type: string event_id: type: string exam_id: type: string exam_title: type: string full_name: type: string score: type: number status: type: string submitted: type: boolean time_remaining: type: integer user_id: type: string username: type: string type: object dto.AdminStatisticMonthlyGrowth: properties: month: type: string new_academies: type: integer new_events: type: integer new_exams: type: integer new_problemsets: type: integer new_users: type: integer type: object dto.AdminStatisticMonthlyGrowthResponse: properties: data: items: $ref: '#/definitions/dto.AdminStatisticMonthlyGrowth' type: array message: {} meta_data: {} status: type: string type: object dto.AdminStatisticSummary: properties: avg_exams_per_event: type: number avg_participants_per_event: type: number paid_academy_revenue: type: number paid_event_revenue: type: number total_academies: type: integer total_academy_exam_assignments: type: integer total_academy_exam_attempts: type: integer total_academy_participants: type: integer total_academy_results: type: integer total_admins: type: integer total_event_exam_assignments: type: integer total_event_exam_attempts: type: integer total_event_participants: type: integer total_event_results: type: integer total_events: type: integer total_exams: type: integer total_paid_academy_transactions: type: integer total_paid_event_transactions: type: integer total_paid_revenue: type: number total_problemsets: type: integer total_questions: type: integer total_super_admins: type: integer total_users: type: integer type: object dto.AdminStatisticSummaryResponse: properties: data: $ref: '#/definitions/dto.AdminStatisticSummary' message: {} meta_data: {} status: type: string type: object dto.AnswerEventExamRequest: properties: answer: items: type: string type: array question_id: type: string required: - question_id type: object dto.AssignRequest: properties: academy_id: type: string account_id: type: string type: object dto.AuthenticatedUser: properties: account: $ref: '#/definitions/models.Account' refresh_token: type: string token: type: string type: object dto.BulkCreateQuestionsRequest: properties: questions: items: $ref: '#/definitions/dto.CreateQuestionRequest' minItems: 1 type: array required: - questions type: object dto.BulkUpdateQuestionItemRequest: properties: ans_key: items: type: string type: array corr_mark: type: number id_question: type: string incorr_mark: type: number null_mark: type: number options: items: type: string type: array question: type: string solution: type: string type: type: string required: - id_question type: object dto.BulkUpdateQuestionsRequest: properties: questions: items: $ref: '#/definitions/dto.BulkUpdateQuestionItemRequest' minItems: 1 type: array required: - questions type: object dto.ChangePasswordRequest: properties: new_password: type: string old_password: type: string required: - new_password - old_password type: object dto.ContentDetailResponse: properties: id: type: string order: type: integer status: type: string title: type: string type: object dto.CreateAcademyRequest: properties: code: type: string description: type: string image_url: type: string is_public: type: boolean price: type: number slug: type: string title: type: string required: - title type: object dto.CreateContentRequest: properties: contents: type: string material_id: type: string title: type: string required: - material_id - title type: object dto.CreateEmailVerificationRequest: properties: email: type: string required: - email type: object dto.CreateEmailVerificationResponse: properties: email: type: string expired_at: type: string type: object dto.CreateEventRequest: properties: end_event: type: string event_code: type: string img_banner: type: string is_public: type: boolean overview: type: string price: type: number start_event: type: string title: type: string required: - end_event - img_banner - overview - start_event - title type: object dto.CreateExamRequest: properties: allow_retake: type: boolean allow_review: type: boolean description: type: string disable_copy_paste: type: boolean duration: $ref: '#/definitions/time.Duration' enable_exam_browser: type: boolean enable_eye_tracking: type: boolean enable_full_screen: type: boolean enable_tab_block: type: boolean enable_timer: type: boolean enable_vad: type: boolean enable_webcam: type: boolean randomize: type: integer slug: type: string title: type: string type: object dto.CreateMaterialRequest: properties: academy_id: type: string description: type: string slug: type: string title: type: string required: - academy_id - title type: object dto.CreateProblemSetRequest: properties: description: type: string title: type: string required: - title type: object dto.CreateQuestionRequest: properties: ans_key: items: type: string type: array corr_mark: type: number incorr_mark: type: number null_mark: type: number options: items: type: string type: array question: type: string solution: type: string type: type: string required: - question - type type: object dto.CreateUserRequest: properties: email: type: string name: type: string password: type: string role: type: string username: type: string required: - email - name - password - role - username type: object dto.DeleteEmailVerificationRequest: properties: token: type: integer required: - token type: object dto.ErrorResponse: properties: errors: type: string message: {} meta_data: {} status: type: string type: object dto.EventDetailResponse: properties: data: $ref: '#/definitions/models.Events' event_payment: $ref: '#/definitions/models.EventPaymentTransaction' register_status: type: integer type: object dto.EventScoreboardItem: properties: full_name: type: string total_score: type: number username: type: string type: object dto.ExamScoreboardItem: properties: duration: type: string full_name: type: string score: type: number username: type: string type: object dto.ExternalAuthRequest: properties: oauth_id: type: string oauth_provider: type: string required: - oauth_id - oauth_provider type: object dto.FileResponse: properties: created_at: type: string id: type: string mime_type: type: string original_name: type: string size: type: integer url: type: string type: object dto.FileResponseSingle: properties: data: $ref: '#/definitions/dto.FileResponse' message: type: string status: type: string type: object dto.FileUploadResponse: properties: data: items: $ref: '#/definitions/dto.FileResponse' type: array message: type: string status: type: string type: object dto.JoinAcademyByCodeRequest: properties: code: type: string required: - code type: object dto.JoinEventRequest: properties: event_code: type: string required: - event_code type: object dto.MaterialDetailResponse: properties: academy_id: type: string contents: items: $ref: '#/definitions/dto.ContentDetailResponse' type: array contents_count: type: integer description: type: string id: type: string meta: additionalProperties: type: string type: object order: type: integer progress: $ref: '#/definitions/dto.MaterialProgressResponse' slug: type: string title: type: string type: object dto.MaterialProgressResponse: properties: academy_id: type: string account_id: type: string completed_at: type: string id: type: string material_id: type: string progress: type: number status: type: string total_completed_contents: type: integer type: object dto.OptionsRequest: properties: option_name: type: string option_values: items: type: string type: array required: - option_name - option_values type: object dto.ProblemSetInjectResponse: properties: file: type: string problem_sets: items: $ref: '#/definitions/dto.ProblemSetInjectSummary' type: array problem_sets_created: type: integer questions_created: type: integer total_rows: type: integer type: object dto.ProblemSetInjectSummary: properties: id_problem_set: type: string question_count: type: integer title: type: string type: object dto.RefreshTokenRequest: properties: refresh_token: type: string required: - refresh_token type: object dto.RegisterAcademyPaymentActionRequiredData: properties: academy_id: type: string account_id: type: string amount: type: number expired_at: type: string id: type: string invoice_id: type: string invoice_url: type: string mayar_transaction_id: type: string status: type: string transaction_at: type: string type: object dto.RegisterAcademyPaymentActionRequiredResponse: properties: data: $ref: '#/definitions/dto.RegisterAcademyPaymentActionRequiredData' message: type: string meta_data: type: string status: type: string type: object dto.RegisterEventPaymentActionRequiredData: properties: account_id: type: string amount: type: number event_id: type: string expired_at: type: string id: type: string invoice_id: type: string invoice_url: type: string mayar_transaction_id: type: string status: type: string transaction_at: type: string type: object dto.RegisterEventPaymentActionRequiredResponse: properties: data: $ref: '#/definitions/dto.RegisterEventPaymentActionRequiredData' message: type: string meta_data: type: string status: type: string type: object dto.RepairProblemSetNamingMigrateRequest: properties: end_date: type: string prefix: type: string start_date: type: string required: - end_date - start_date type: object dto.RepairProblemSetNamingMigrateResponse: properties: updated_rows: type: integer type: object dto.RepairQuestionStoragePathResponse: properties: updated_rows: type: integer type: object dto.ResetPasswordRequest: properties: new_password: type: string token: type: integer required: - new_password - token type: object dto.ReuseExamsRequest: properties: exam_ids: items: type: string type: array required: - exam_ids type: object dto.ReuseMaterialsRequest: properties: material_ids: items: type: string type: array required: - material_ids type: object dto.SignInRequest: properties: email_or_username: type: string password: type: string required: - email_or_username - password type: object dto.SignUpRequest: properties: email: type: string name: type: string password: type: string username: type: string required: - email - password - username type: object dto.SuccessResponse-any: properties: data: {} message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_dto_AdminEventResponse: properties: data: items: $ref: '#/definitions/dto.AdminEventResponse' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_dto_AdminExamResponse: properties: data: items: $ref: '#/definitions/dto.AdminExamResponse' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_dto_EventScoreboardItem: properties: data: items: $ref: '#/definitions/dto.EventScoreboardItem' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_dto_ExamScoreboardItem: properties: data: items: $ref: '#/definitions/dto.ExamScoreboardItem' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_dto_UserResponse: properties: data: items: $ref: '#/definitions/dto.UserResponse' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_Academy: properties: data: items: $ref: '#/definitions/models.Academy' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_AcademyAssign: properties: data: items: $ref: '#/definitions/models.AcademyAssign' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_AcademyContent: properties: data: items: $ref: '#/definitions/models.AcademyContent' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_AcademyExamAssign: properties: data: items: $ref: '#/definitions/models.AcademyExamAssign' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_AcademyMaterial: properties: data: items: $ref: '#/definitions/models.AcademyMaterial' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_Account: properties: data: items: $ref: '#/definitions/models.Account' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_EventAssign: properties: data: items: $ref: '#/definitions/models.EventAssign' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_EventExamAssign: properties: data: items: $ref: '#/definitions/models.EventExamAssign' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_EventExamProctoringLogs: properties: data: items: $ref: '#/definitions/models.EventExamProctoringLogs' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_Events: properties: data: items: $ref: '#/definitions/models.Events' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_Exam: properties: data: items: $ref: '#/definitions/models.Exam' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_RegionCity: properties: data: items: $ref: '#/definitions/models.RegionCity' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_RegionProvince: properties: data: items: $ref: '#/definitions/models.RegionProvince' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-array_models_Result: properties: data: items: $ref: '#/definitions/models.Result' type: array message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_AcademyMiniDetailResponse: properties: data: $ref: '#/definitions/dto.AcademyMiniDetailResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_AccountDetailResponse: properties: data: $ref: '#/definitions/dto.AccountDetailResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_AdminExamReviewResponse: properties: data: $ref: '#/definitions/dto.AdminExamReviewResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_AnswerEventExamRequest: properties: data: $ref: '#/definitions/dto.AnswerEventExamRequest' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_AuthenticatedUser: properties: data: $ref: '#/definitions/dto.AuthenticatedUser' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_CreateEmailVerificationResponse: properties: data: $ref: '#/definitions/dto.CreateEmailVerificationResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_CreateUserRequest: properties: data: $ref: '#/definitions/dto.CreateUserRequest' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_EventDetailResponse: properties: data: $ref: '#/definitions/dto.EventDetailResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_MaterialDetailResponse: properties: data: $ref: '#/definitions/dto.MaterialDetailResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_ProblemSetInjectResponse: properties: data: $ref: '#/definitions/dto.ProblemSetInjectResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_RepairProblemSetNamingMigrateResponse: properties: data: $ref: '#/definitions/dto.RepairProblemSetNamingMigrateResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_RepairQuestionStoragePathResponse: properties: data: $ref: '#/definitions/dto.RepairQuestionStoragePathResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_UserResponse: properties: data: $ref: '#/definitions/dto.UserResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-dto_ZipInjectResponse: properties: data: $ref: '#/definitions/dto.ZipInjectResponse' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-map_string_bool: properties: data: $ref: '#/definitions/map_string_bool' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_Academy: properties: data: $ref: '#/definitions/models.Academy' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_AcademyAssign: properties: data: $ref: '#/definitions/models.AcademyAssign' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_AcademyContent: properties: data: $ref: '#/definitions/models.AcademyContent' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_AcademyExamAttempt: properties: data: $ref: '#/definitions/models.AcademyExamAttempt' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_AcademyMaterial: properties: data: $ref: '#/definitions/models.AcademyMaterial' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_Account: properties: data: $ref: '#/definitions/models.Account' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_EventAssign: properties: data: $ref: '#/definitions/models.EventAssign' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_EventExamAttempt: properties: data: $ref: '#/definitions/models.EventExamAttempt' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_EventExamProctoringLogs: properties: data: $ref: '#/definitions/models.EventExamProctoringLogs' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_Events: properties: data: $ref: '#/definitions/models.Events' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_Exam: properties: data: $ref: '#/definitions/models.Exam' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_Options: properties: data: $ref: '#/definitions/models.Options' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-models_Result: properties: data: $ref: '#/definitions/models.Result' message: {} meta_data: {} status: type: string type: object dto.SuccessResponse-string: properties: data: type: string message: {} meta_data: {} status: type: string type: object dto.UpdateAcademyRequest: properties: description: type: string image_url: type: string is_public: type: boolean price: type: number slug: type: string title: type: string type: object dto.UpdateAccountDetailRequest: properties: avatar: type: string city: type: string full_name: type: string phone_number: type: string province: type: string school_name: type: string type: object dto.UpdateContentRequest: properties: contents: type: string title: type: string type: object dto.UpdateEventRequest: properties: end_event: type: string img_banner: type: string is_public: type: boolean overview: type: string price: type: number start_event: type: string title: type: string type: object dto.UpdateMaterialRequest: properties: description: type: string slug: type: string title: type: string type: object dto.UpdateProblemSetRequest: properties: description: type: string title: type: string type: object dto.UpdateQuestionRequest: properties: ans_key: items: type: string type: array corr_mark: type: number incorr_mark: type: number null_mark: type: number options: items: type: string type: array question: type: string solution: type: string type: type: string type: object dto.UpdateResultRequest: properties: final_score: type: number required: - final_score type: object dto.UpdateUserRequest: properties: email: type: string password: type: string role: type: string username: type: string type: object dto.UpdateUserRoleRequest: properties: role: type: string required: - role type: object dto.UserResponse: properties: created_at: {} email: type: string full_name: type: string id: type: string is_detail_completed: type: boolean is_email_verified: type: boolean role: type: string username: type: string type: object dto.ValidateVerifyEmailRequest: properties: email: type: string token: type: integer required: - email - token type: object dto.ZipInjectResponse: properties: base_path: type: string file: type: string skipped_entries: type: integer total_entries: type: integer uploaded_files: type: integer type: object map_string_bool: additionalProperties: type: boolean type: object models.Academy: properties: academy_progress: $ref: '#/definitions/models.AcademyProgress' code: type: string created_at: type: string deleted_at: type: string description: type: string id: type: string image_url: type: string is_public: type: boolean materials: items: $ref: '#/definitions/models.AcademyMaterial' type: array materials_count: type: integer price: type: number register_status: type: integer slug: type: string title: type: string type: object models.AcademyAssign: properties: academy: $ref: '#/definitions/models.Academy' academy_id: type: string account: $ref: '#/definitions/models.Account' account_id: type: string created_at: type: string id: type: string type: object models.AcademyContent: properties: academy_content_progress: $ref: '#/definitions/models.AcademyContentProgress' contents: type: string created_at: type: string deleted_at: type: string id: type: string material_id: type: string order: type: integer title: type: string type: object models.AcademyContentProgress: properties: academy_id: type: string account_id: type: string completed_at: type: string content_id: type: string id: type: string material_id: type: string status: type: string type: object models.AcademyExamAnswer: properties: answer: items: type: string type: array created_at: type: string exam_attempt: $ref: '#/definitions/models.AcademyExamAttempt' id: type: string id_attempt: type: string id_question: type: string score: type: number updated_at: type: string type: object models.AcademyExamAssign: properties: academy: $ref: '#/definitions/models.Academy' exam: $ref: '#/definitions/models.Exam' id_academy: type: string id_exam: type: string id_exam_academy_assign: type: string type: object models.AcademyExamAttempt: properties: academy: $ref: '#/definitions/models.Academy' account: $ref: '#/definitions/models.Account' answers: items: $ref: '#/definitions/models.AcademyExamAnswer' type: array created_at: type: string due_at: type: string exam: $ref: '#/definitions/models.Exam' id_academy: type: string id_account: type: string id_attempt: type: string id_exam: type: string mark: type: number questions: items: $ref: '#/definitions/models.Questions' type: array remaining_time: type: integer submitted: type: boolean type: object models.AcademyMaterial: properties: academy_id: type: string academy_material_progress: $ref: '#/definitions/models.AcademyMaterialProgress' contents: items: $ref: '#/definitions/models.AcademyContent' type: array contents_count: type: integer created_at: type: string deleted_at: type: string description: type: string id: type: string order: type: integer slug: type: string title: type: string type: object models.AcademyMaterialProgress: properties: academy_id: type: string account_id: type: string completed_at: type: string id: type: string material_id: type: string progress: type: number status: type: string total_completed_contents: type: integer type: object models.AcademyPaymentTransaction: properties: academy_id: type: string account_id: type: string amount: type: number expired_at: type: string external_transaction_id: type: string id: type: string invoice_id: type: string invoice_url: type: string status: type: string transaction_at: type: string type: object models.AcademyProgress: properties: academy_id: type: string account_id: type: string completed_at: type: string id: type: string progress: type: number status: type: string total_completed_materials: type: integer type: object models.Account: properties: created_at: type: string deleted_at: type: string email: type: string full_name: type: string id: type: string is_detail_completed: type: boolean is_email_verified: type: boolean role: type: string username: type: string type: object models.AccountDetail: properties: account: $ref: '#/definitions/models.Account' account_id: type: string avatar: type: string city: type: string full_name: type: string id: type: string phone_number: type: string province: type: string school_name: type: string type: object models.EventAssign: properties: account: $ref: '#/definitions/models.Account' assigned_at: type: string event: $ref: '#/definitions/models.Events' id_account: type: string id_assign: type: string id_event: type: string type: object models.EventExamAnswer: properties: answer: items: type: string type: array created_at: type: string exam_attempt: $ref: '#/definitions/models.EventExamAttempt' id: type: string id_attempt: type: string id_question: type: string score: type: number updated_at: type: string type: object models.EventExamAssign: properties: event: $ref: '#/definitions/models.Events' exam: $ref: '#/definitions/models.Exam' id_event: type: string id_exam: type: string id_exam_event_assign: type: string type: object models.EventExamAttempt: properties: account: $ref: '#/definitions/models.Account' answers: items: $ref: '#/definitions/models.EventExamAnswer' type: array created_at: type: string due_at: type: string event: $ref: '#/definitions/models.Events' exam: $ref: '#/definitions/models.Exam' id_account: type: string id_attempt: type: string id_event: type: string id_exam: type: string mark: type: number questions: items: $ref: '#/definitions/models.Questions' type: array remaining_time: type: integer submitted: type: boolean type: object models.EventExamProctoringLogs: properties: attachement: type: string created_at: type: string id_account: type: string id_event: type: string id_exam: type: string id_result: type: string violation_category: type: string violation_score: type: integer type: object models.EventPaymentTransaction: properties: account_id: type: string amount: type: number event_id: type: string expired_at: type: string external_transaction_id: type: string id: type: string invoice_id: type: string invoice_url: type: string status: type: string transaction_at: type: string type: object models.Events: properties: created_at: type: string deleted_at: type: string end_event: type: string event_code: type: string id_event: type: string img_banner: type: string is_public: type: boolean overview: type: string price: type: number register_status: type: integer slug: type: string start_event: type: string title: type: string type: object models.Exam: properties: configuration: $ref: '#/definitions/models.ExamConfiguration' created_at: type: string deleted_at: type: string description: type: string duration: $ref: '#/definitions/time.Duration' id_exam: type: string proctoring: $ref: '#/definitions/models.ExamProctoring' randomize: type: integer slug: type: string title: type: string type: object models.ExamConfiguration: properties: allow_retake: type: boolean allow_review: type: boolean enable_timer: type: boolean id_exam: type: string id_result: type: string type: object models.ExamProctoring: properties: disable_copy_paste: type: boolean enable_exam_browser: type: boolean enable_eye_tracking: type: boolean enable_full_screen: type: boolean enable_tab_block: type: boolean enable_vad: type: boolean enable_webcam: type: boolean id_exam: type: string id_result: type: string type: object models.OptionCategory: properties: id: type: integer option_name: type: string option_slug: type: string type: object models.OptionValues: properties: id: type: integer option_category_id: type: integer option_value: type: string type: object models.Options: properties: option_category: $ref: '#/definitions/models.OptionCategory' option_values: items: $ref: '#/definitions/models.OptionValues' type: array type: object models.ProblemSet: properties: created_at: type: string deleted_at: type: string description: type: string id_problem_set: type: string title: type: string type: object models.Questions: properties: ans_key: items: type: string type: array corr_mark: type: number created_at: type: string id_problem_set: type: string id_question: type: string incorr_mark: type: number null_mark: type: number options: items: type: string type: array problem_set: $ref: '#/definitions/models.ProblemSet' question: type: string solution: type: string type: type: string type: object models.RegionCity: properties: code: type: string full_code: type: string id: type: integer name: type: string province_id: type: integer type: type: string type: object models.RegionProvince: properties: code: type: string id: type: integer name: type: string type: object models.Result: properties: exam_attempt: $ref: '#/definitions/models.EventExamAttempt' final_score: type: number id_attempt: type: string id_result: type: string type: object time.Duration: enum: - -9223372036854775808 - 9223372036854775807 - 1 - 1000 - 1000000 - 1000000000 - 60000000000 - 3600000000000 format: int64 type: integer x-enum-varnames: - minDuration - maxDuration - Nanosecond - Microsecond - Millisecond - Second - Minute - Hour host: api.quzuu.id info: contact: email: admin@example.com name: Abdan Hafidz description: Backend API documentation license: name: MIT url: https://opensource.org/licenses/MIT title: Go Boilerplate API version: 1.0.0 paths: /api/v1/academy/{academy_slug}: get: consumes: - application/json description: Retrieve academy details using its slug parameters: - description: Academy Slug in: path name: academy_slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Get Academy by Slug tags: - Academy /api/v1/academy/{academy_slug}/{material_slug}: get: consumes: - application/json description: Retrieve material details using its slug parameters: - description: Academy Slug in: path name: academy_slug required: true type: string - description: Material Slug in: path name: material_slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_MaterialDetailResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Get Material by Slug tags: - Material /api/v1/academy/{academy_slug}/{material_slug}/{order}: post: consumes: - application/json description: Update the progress of a content within a material parameters: - description: Academy Slug in: path name: academy_slug required: true type: string - description: Material Slug in: path name: material_slug required: true type: string - description: Content Order in: path name: order required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Update Content Progress tags: - Progress /api/v1/academy/{academy_slug}/contents: get: consumes: - application/json description: Retrieve a paginated list of all contents in a specific academy parameters: - description: Academy Slug in: path name: academy_slug required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by content title/body or material title in: query name: search type: string - description: Sort field (title, order, created_at, material_title) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_AcademyContent' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: List Contents by Academy tags: - Content /api/v1/academy/{academy_slug}/exam/{exam_slug}/attempt: get: consumes: - application/json description: Start an attempt for a specific exam in an academy parameters: - description: Academy Slug in: path name: academy_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_AcademyExamAttempt' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Attempt Academy Exam tags: - Academy Exam /api/v1/academy/join: post: consumes: - application/json description: Join an academy using a unique code parameters: - description: Join Academy by Code Request in: body name: request required: true schema: $ref: '#/definitions/dto.JoinAcademyByCodeRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AcademyMiniDetailResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "402": description: Payment Required schema: $ref: '#/definitions/dto.RegisterAcademyPaymentActionRequiredResponse' security: - BearerAuth: [] summary: Join Academy by Code tags: - Academy /api/v1/account/me: put: consumes: - application/json description: Update detailed information about the authenticated user's account parameters: - description: Update Account Detail Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateAccountDetailRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AccountDetailResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Update Account Detail tags: - Account Detail /api/v1/admin/academy: get: consumes: - application/json description: List all academies (private and public) parameters: - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / slug / code in: query name: search type: string - description: Sort field (title, slug, code, created_at, is_public) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Academy' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Academies' tags: - Admin Academy post: consumes: - application/json description: Create a new academy parameters: - description: Create Academy Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateAcademyRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Create Academy tags: - Admin Academy /api/v1/admin/academy/{academy_id}/attempts/{attempt_id}/{user_id}/review: get: consumes: - application/json description: Review a specific participant attempt for an academy exam parameters: - description: Academy ID in: path name: academy_id required: true type: string - description: Attempt ID in: path name: attempt_id required: true type: string - description: User ID in: path name: user_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AdminExamReviewResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Review Academy Exam Attempt' tags: - Admin Academy /api/v1/admin/academy/assign: post: consumes: - application/json description: Assign an account to an academy parameters: - description: Assign Account to Academy Request in: body name: request required: true schema: $ref: '#/definitions/dto.AssignRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Assign Account to Academy tags: - Admin Academy /api/v1/admin/academy/assign/{assignment_id}: delete: consumes: - application/json description: Unassign an account from an academy parameters: - description: Assignment ID in: path name: assignment_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Unassign Account from Academy tags: - Admin Academy /api/v1/admin/academy/candidates: get: consumes: - application/json description: List accounts that are not yet assigned to an academy parameters: - description: Academy ID in: query name: academy_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by username / full name in: query name: search type: string - description: Sort field (username, full_name, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Account' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Academy Candidates' tags: - Admin Academy /api/v1/admin/academy/contents: post: consumes: - application/json description: Create a new content for a material parameters: - description: Create Content Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateContentRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Create Content tags: - Admin Academy /api/v1/admin/academy/contents/id/{content_id}: delete: consumes: - application/json description: Delete an existing content parameters: - description: Content ID in: path name: content_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Delete Content tags: - Admin Academy put: consumes: - application/json description: Update an existing content parameters: - description: Content ID in: path name: content_id required: true type: string - description: Update Content Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateContentRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Update Content tags: - Admin Academy /api/v1/admin/academy/contents/id/{content_id}/detail: get: consumes: - application/json description: Retrieve detailed content information using its ID parameters: - description: Content ID in: path name: content_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Get Content Detail by ID tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}: delete: consumes: - application/json description: Delete an existing academy parameters: - description: Academy ID in: path name: academy_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Delete Academy tags: - Admin Academy put: consumes: - application/json description: Update an existing academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - description: Update Academy Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateAcademyRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Update Academy tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/contents: get: consumes: - application/json description: List all contents in a specific academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / contents / material_title in: query name: search type: string - description: Sort field (title, order, created_at, material_title) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_AcademyContent' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Contents by Academy' tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/detail: get: consumes: - application/json description: Retrieve detailed academy information using its ID parameters: - description: Academy ID in: path name: academy_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Get Academy Detail by ID tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/exam/candidates: get: consumes: - application/json description: List all exams NOT assigned to a specific academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / slug / description in: query name: search type: string - description: Sort field (title, slug, duration, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Exam Candidates by Academy' tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/exams: get: consumes: - application/json description: List all exams assigned to a specific academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / slug / description in: query name: search type: string - description: Sort field (title, slug, duration, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Exams by Academy' tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/exams/reuse: post: consumes: - application/json description: Assign existing exams to an academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - description: Reuse Exams Request in: body name: request required: true schema: $ref: '#/definitions/dto.ReuseExamsRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Reuse Exams tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/materials: get: consumes: - application/json description: Retrieve a list of materials for a specific academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / slug / description in: query name: search type: string - description: Sort field (title, slug, order, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: List Materials by Academy tags: - Admin Academy /api/v1/admin/academy/id/{academy_id}/materials/reuse: post: consumes: - application/json description: Duplicate materials (and their contents) and assign them to an academy parameters: - description: Academy ID in: path name: academy_id required: true type: string - description: Reuse Materials Request in: body name: request required: true schema: $ref: '#/definitions/dto.ReuseMaterialsRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_AcademyMaterial' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Reuse Materials tags: - Admin Academy /api/v1/admin/academy/materials: post: consumes: - application/json description: Create a new material for an academy parameters: - description: Create Material Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateMaterialRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Create Material tags: - Admin Academy /api/v1/admin/academy/materials/id/{material_id}: delete: consumes: - application/json description: Delete an existing material parameters: - description: Material ID in: path name: material_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Delete Material tags: - Admin Academy put: consumes: - application/json description: Update an existing material parameters: - description: Material ID in: path name: material_id required: true type: string - description: Update Material Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateMaterialRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Update Material tags: - Admin Academy /api/v1/admin/academy/materials/id/{material_id}/contents: get: consumes: - application/json description: Retrieve a list of contents for a specific material parameters: - description: Material ID in: path name: material_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / contents in: query name: search type: string - description: Sort field (title, order, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: List Contents by Material tags: - Admin Academy /api/v1/admin/academy/materials/id/{material_id}/detail: get: consumes: - application/json description: Retrieve detailed material information using its ID parameters: - description: Material ID in: path name: material_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Get Material Detail by ID tags: - Admin Academy /api/v1/admin/academy/participants: get: consumes: - application/json description: List all participants assigned to an academy parameters: - description: Academy ID in: query name: academy_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by username / full name in: query name: search type: string - description: Sort field (created_at, username, email, full_name) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_AcademyAssign' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Academy Participants' tags: - Admin Academy /api/v1/admin/authentication/{account_id}/assign: put: consumes: - application/json description: Update the role of a user account parameters: - description: Account ID in: path name: accountId required: true type: string - description: Update User Role Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateUserRoleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Account' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Update User Role tags: - Authentication /api/v1/admin/events: get: consumes: - application/json description: Admin view of all events with participant count, exam count and optional filters/pagination parameters: - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title / slug / event code in: query name: search type: string - description: Sort field (title, start_event, end_event, created_at, participant_count, exam_count) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string - description: Filter by status (UPCOMING, ONGOING, ENDED) in: query name: status type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_dto_AdminEventResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Events' tags: - AdminEvent post: consumes: - application/json description: Create a new event parameters: - description: Create Event Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateEventRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Events' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Create Event' tags: - AdminEvent /api/v1/admin/events/{event_id}: delete: consumes: - application/json description: Delete an event by ID parameters: - description: Event ID in: path name: event_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Delete Event' tags: - AdminEvent put: consumes: - application/json description: Update an existing event by ID parameters: - description: Event ID in: path name: event_id required: true type: string - description: Update Event Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateEventRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Events' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Update Event' tags: - AdminEvent /api/v1/admin/events/{event_id}/attempts/{attempt_id}/{user_id}/review: get: consumes: - application/json description: Review a specific participant attempt for an event exam parameters: - description: Event ID in: path name: event_id required: true type: string - description: Attempt ID in: path name: attempt_id required: true type: string - description: User ID in: path name: user_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AdminExamReviewResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Review Exam Attempt' tags: - AdminEvent /api/v1/admin/events/{event_id}/candidate: get: consumes: - application/json description: List accounts that are not yet assigned to the event parameters: - description: Event ID in: path name: event_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by username / full name in: query name: search type: string - description: Sort field (username, full_name, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Account' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List of Event Candidates' tags: - AdminEvent /api/v1/admin/events/{event_id}/exams: get: consumes: - application/json description: List all exams assigned to an event parameters: - description: Event ID in: path name: event_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by exam title / slug in: query name: search type: string - description: Sort field (title, slug, created_at, duration) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_EventExamAssign' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Event Exams' tags: - AdminEvent /api/v1/admin/events/{event_id}/exams/{exam_id}: delete: consumes: - application/json description: Unassign an exam from an event parameters: - description: Event ID in: path name: event_id required: true type: string - description: Exam ID in: path name: exam_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Remove Exam from Event' tags: - AdminEvent /api/v1/admin/events/{event_id}/exams/{exam_id}/results: get: consumes: - application/json description: Retrieve all participant results for a specific exam within an event parameters: - description: Event ID in: path name: event_id required: true type: string - description: Exam ID in: path name: exam_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by username / full name in: query name: search type: string - description: Sort field (final_score, created_at, username, full_name) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Result' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Exam Results for an Event' tags: - AdminEvent /api/v1/admin/events/{event_id}/exams/{exam_id}/results/{result_id}: delete: consumes: - application/json description: Delete a participant's exam result parameters: - description: Event ID in: path name: event_id required: true type: string - description: Exam ID in: path name: exam_id required: true type: string - description: Result ID in: path name: result_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Delete Exam Result' tags: - AdminEvent put: consumes: - application/json description: Edit the final score of a participant's exam result parameters: - description: Event ID in: path name: event_id required: true type: string - description: Exam ID in: path name: exam_id required: true type: string - description: Result ID in: path name: result_id required: true type: string - description: Update Result Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateResultRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Result' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Update Exam Result' tags: - AdminEvent /api/v1/admin/events/{event_id}/exams/candidate: get: consumes: - application/json description: List exams that are not yet assigned to the event parameters: - description: Event ID in: path name: event_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by exam title / slug in: query name: search type: string - description: Sort field (title, slug, created_at, duration) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: orderBy type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Exam Candidates for Event' tags: - AdminEvent /api/v1/admin/events/{event_id}/participants: get: consumes: - application/json description: List all participants assigned to an event parameters: - description: Event ID in: path name: event_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by username / full name in: query name: search type: string - description: Sort field (assigned_at, username, email, full_name) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_EventAssign' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Event Participants' tags: - AdminEvent post: consumes: - application/json description: Manually assign a user to an event (bypasses payment) parameters: - description: Event ID in: path name: event_id required: true type: string - description: Add Participant Request in: body name: request required: true schema: $ref: '#/definitions/dto.AddParticipantRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_EventAssign' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Add Participant to Event' tags: - AdminEvent /api/v1/admin/events/{event_id}/participants/{user_id}: delete: consumes: - application/json description: Unassign a user from an event parameters: - description: Event ID in: path name: event_id required: true type: string - description: User ID in: path name: user_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Remove Participant from Event' tags: - AdminEvent /api/v1/admin/exams: get: consumes: - application/json description: Retrieve a paginated list of exams with event and academy assignment counts parameters: - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by title or slug in: query name: search type: string - description: Sort field (title, slug, created_at, duration, event_count, academy_count) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_dto_AdminExamResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Exams' tags: - AdminExam post: consumes: - application/json description: Create a new exam with configuration and proctoring settings parameters: - description: Create Exam Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateExamRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Create Exam' tags: - AdminExam /api/v1/admin/exams/{exam_id}: delete: consumes: - application/json description: Soft delete an exam by ID parameters: - description: Exam ID in: path name: exam_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Delete Exam' tags: - AdminExam get: consumes: - application/json description: Retrieve full exam details including configuration and proctoring parameters: - description: Exam ID in: path name: exam_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Get Exam Detail' tags: - AdminExam put: consumes: - application/json description: Update an existing exam including configuration and proctoring settings parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Update Exam Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateExamRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Update Exam' tags: - AdminExam /api/v1/admin/exams/{exam_id}/academies: get: consumes: - application/json description: List all academies that have this exam assigned parameters: - description: Exam ID in: path name: exam_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by academy title / slug / code in: query name: search type: string - description: Sort field (title, slug, code, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_AcademyExamAssign' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Academies by Exam' tags: - AdminExam /api/v1/admin/exams/{exam_id}/academies/{academy_id}: delete: consumes: - application/json description: Remove an exam assignment from an academy parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Academy ID in: path name: academy_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Unassign Exam from Academy' tags: - AdminExam post: consumes: - application/json description: Assign an exam to an academy parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Academy ID in: path name: academy_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Assign Exam to Academy' tags: - AdminExam /api/v1/admin/exams/{exam_id}/events: get: consumes: - application/json description: List all events that have this exam assigned parameters: - description: Exam ID in: path name: exam_id required: true type: string - default: 10 description: Items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search by event title / slug / event code in: query name: search type: string - description: Sort field (title, slug, event_code, start_event, end_event, created_at) in: query name: sortBy type: string - description: Sort direction (asc / desc) in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_EventExamAssign' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: List Events by Exam' tags: - AdminExam /api/v1/admin/exams/{exam_id}/events/{event_id}: delete: consumes: - application/json description: Remove an exam assignment from an event parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Event ID in: path name: event_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Unassign Exam from Event' tags: - AdminExam post: consumes: - application/json description: Assign an exam to an event parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Event ID in: path name: event_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-map_string_bool' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Assign Exam to Event' tags: - AdminExam /api/v1/admin/exams/{exam_id}/problemsets: get: consumes: - application/json description: List problem sets assigned to an exam parameters: - description: Exam ID in: path name: exam_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: List Problem Sets by Exam' tags: - Admin ProblemSet /api/v1/admin/exams/{exam_id}/problemsets/{problemset_id}: delete: consumes: - application/json description: Remove a problem set assignment from an exam parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Problem Set ID in: path name: problemset_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Unassign Problem Set from Exam' tags: - Admin ProblemSet post: consumes: - application/json description: Assign a problem set to an exam parameters: - description: Exam ID in: path name: exam_id required: true type: string - description: Problem Set ID in: path name: problemset_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Assign Problem Set to Exam' tags: - Admin ProblemSet /api/v1/admin/exams/{exam_id}/problemsets/candidate: get: consumes: - application/json description: List problem sets that can be assigned to an exam parameters: - description: Exam ID in: path name: exam_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: List Candidate Problem Sets by Exam' tags: - Admin ProblemSet /api/v1/admin/problemsets: get: consumes: - application/json description: List all problem sets produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: List Problem Sets' tags: - Admin ProblemSet post: consumes: - application/json description: Create a new problem set parameters: - description: Create Problem Set Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateProblemSetRequest' produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Create Problem Set' tags: - Admin ProblemSet /api/v1/admin/problemsets/{id}: delete: consumes: - application/json description: Delete a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Delete Problem Set' tags: - Admin ProblemSet put: consumes: - application/json description: Update an existing problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Update Problem Set Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateProblemSetRequest' produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Update Problem Set' tags: - Admin ProblemSet /api/v1/admin/problemsets/{id}/questions: get: consumes: - application/json description: List questions that belong to a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: List Questions in Problem Set' tags: - Admin ProblemSet post: consumes: - application/json description: Create a question inside a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Create Question Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateQuestionRequest' produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Add Question to Problem Set' tags: - Admin ProblemSet /api/v1/admin/problemsets/{id}/questions/{question_id}: delete: consumes: - application/json description: Delete a question from a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Question ID in: path name: question_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Delete Question from Problem Set' tags: - Admin ProblemSet get: consumes: - application/json description: Get a single question from a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Question ID in: path name: question_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Question Detail in Problem Set' tags: - Admin ProblemSet put: consumes: - application/json description: Update a question in a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Question ID in: path name: question_id required: true type: string - description: Update Question Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateQuestionRequest' produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Update Question in Problem Set' tags: - Admin ProblemSet /api/v1/admin/problemsets/{id}/questions/bulk: post: consumes: - application/json description: Create multiple questions inside a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Bulk Create Questions Request in: body name: request required: true schema: $ref: '#/definitions/dto.BulkCreateQuestionsRequest' produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Bulk Add Questions to Problem Set' tags: - Admin ProblemSet put: consumes: - application/json description: Update multiple questions in a problem set parameters: - description: Problem Set ID in: path name: id required: true type: string - description: Bulk Update Questions Request in: body name: request required: true schema: $ref: '#/definitions/dto.BulkUpdateQuestionsRequest' produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Bulk Update Questions in Problem Set' tags: - Admin ProblemSet /api/v1/admin/proctoring/events/{event_slug}/exam/{exam_slug}/proctoring: get: consumes: - application/json description: List proctoring logs by account, exam, or event parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string - description: Account ID in: query name: account_id type: string - description: Exam ID in: query name: exam_id type: string - description: Event ID in: query name: event_id type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_EventExamProctoringLogs' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' summary: List Proctoring Logs tags: - Event Exam Proctoring /api/v1/admin/proctoring/events/{event_slug}/exam/{exam_slug}/proctoring/{log_id}: delete: consumes: - application/json description: Delete a proctoring log entry parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string - description: Log ID in: path name: log_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-string' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' summary: Delete Proctoring Log tags: - Event Exam Proctoring get: consumes: - application/json description: Get details of a specific proctoring log parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string - description: Log ID in: path name: log_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_EventExamProctoringLogs' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' summary: Get Proctoring Log By ID tags: - Event Exam Proctoring put: consumes: - multipart/form-data description: Update an existing proctoring log parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string - description: Log ID in: path name: log_id required: true type: string - description: Violation Score in: formData name: violation_score type: integer - description: Violation Category in: formData name: violation_category type: string - description: Attachment File in: formData name: file type: file - description: Account ID (required for upload context) in: formData name: id_account required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-string' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' summary: Update Proctoring Log tags: - Event Exam Proctoring /api/v1/admin/statistics/academy: get: consumes: - application/json description: Aggregate statistics for all academies produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Academy Statistics Overview' tags: - AdminStatistic /api/v1/admin/statistics/academy/{academy_id}: get: consumes: - application/json description: Aggregate statistics for a single academy parameters: - description: Academy ID in: path name: academy_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Academy Statistics Detail' tags: - AdminStatistic /api/v1/admin/statistics/event: get: consumes: - application/json description: Aggregate statistics for all events produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Event Statistics Overview' tags: - AdminStatistic /api/v1/admin/statistics/event/{event_id}: get: consumes: - application/json description: Aggregate statistics for a single event parameters: - description: Event ID in: path name: event_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Event Statistics Detail' tags: - AdminStatistic /api/v1/admin/statistics/exam: get: consumes: - application/json description: Aggregate statistics for all exams produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Exam Statistics Overview' tags: - AdminStatistic /api/v1/admin/statistics/exam/{exam_id}: get: consumes: - application/json description: Aggregate statistics for a single exam parameters: - description: Exam ID in: path name: exam_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Exam Statistics Detail' tags: - AdminStatistic /api/v1/admin/statistics/monthly-growth: get: consumes: - application/json description: Retrieve monthly growth trend for users, academies, events, exams, and problemsets parameters: - default: 6 description: How many months to include in: query name: months type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.AdminStatisticMonthlyGrowthResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Get Monthly Growth Statistics' tags: - AdminStatistic /api/v1/admin/statistics/problemset: get: consumes: - application/json description: Aggregate statistics for all problemsets produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get ProblemSet Statistics Overview' tags: - AdminStatistic /api/v1/admin/statistics/problemset/{problemset_id}: get: consumes: - application/json description: Aggregate statistics for a single problemset parameters: - description: ProblemSet ID in: path name: problemset_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get ProblemSet Statistics Detail' tags: - AdminStatistic /api/v1/admin/statistics/question: get: consumes: - application/json description: Aggregate statistics for all questions produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Question Statistics Overview' tags: - AdminStatistic /api/v1/admin/statistics/question/{question_id}: get: consumes: - application/json description: Aggregate statistics for a single question parameters: - description: Question ID in: path name: question_id required: true type: string produces: - application/json responses: {} security: - BearerAuth: [] summary: 'Admin: Get Question Statistics Detail' tags: - AdminStatistic /api/v1/admin/statistics/summary: get: consumes: - application/json description: Retrieve aggregate statistics for dashboard cards such as users, academies, events, exams, problemsets, attempts, and payment metrics produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.AdminStatisticSummaryResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Admin: Get Statistics Summary' tags: - AdminStatistic /api/v1/authentication/change-password: put: consumes: - application/json description: Change the password of the authenticated user parameters: - description: Change Password Request in: body name: request required: true schema: $ref: '#/definitions/dto.ChangePasswordRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AuthenticatedUser' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Change User Password tags: - Authentication /api/v1/authentication/external-login: post: consumes: - application/json description: Authenticate user using external OAuth provider parameters: - description: External Auth Request in: body name: request required: true schema: $ref: '#/definitions/dto.ExternalAuthRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AuthenticatedUser' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: External Authentication tags: - Authentication /api/v1/authentication/login: post: consumes: - application/json description: Authenticate user and obtain access token parameters: - description: Sign In Request in: body name: request required: true schema: $ref: '#/definitions/dto.SignInRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AuthenticatedUser' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: User Login tags: - Authentication /api/v1/authentication/refresh: post: consumes: - application/json description: Refresh the access token using a valid refresh token parameters: - description: Refresh Token Request in: body name: request required: true schema: $ref: '#/definitions/dto.RefreshTokenRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AuthenticatedUser' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Refresh Access Token tags: - Authentication /api/v1/authentication/register: post: consumes: - application/json description: Register a new user account parameters: - description: Sign Up Request in: body name: request required: true schema: $ref: '#/definitions/dto.SignUpRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Account' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: User Registration tags: - Authentication /api/v1/authentication/seed-superadmin: post: consumes: - application/json description: Seed a super admin account using predefined credentials produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Seed Super Admin tags: - Authentication /api/v1/email/create-verification: post: consumes: - application/json description: Generate a verification token and send it to the specified email address parameters: - description: Create Email Verification Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateEmailVerificationRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_CreateEmailVerificationResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Create Email Verification Token tags: - Email Verification /api/v1/email/verify: post: consumes: - application/json description: Validate the provided verification token for the specified email address parameters: - description: Validate Verify Email Request in: body name: request required: true schema: $ref: '#/definitions/dto.ValidateVerifyEmailRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Validate Email Verification Token tags: - Email Verification /api/v1/events: get: consumes: - application/json description: Retrieve a paginated list of events with optional filters parameters: - default: 10 description: Number of items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search term for event titles in: query name: search type: string - description: Field to sort by (e.g., 'date', 'title') in: query name: sortBy type: string - description: Sort order ('asc' or 'desc') in: query name: order type: string - description: Filter by registration status in: query name: registerStatus type: integer - description: Filter by event status (upcoming, ongoing, ended) in: query name: status type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Events' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: List Events tags: - Event /api/v1/events/{event_slug}: get: consumes: - application/json description: Retrieve detailed information about a specific event using its slug parameters: - description: Event Slug in: path name: event_slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_EventDetailResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Get Event Detail by Slug tags: - Event /api/v1/events/{event_slug}/{exam_slug}/scoreboard: get: consumes: - application/json description: Retrieve a paginated scoreboard of participants ranked by their performance in a specific exam within an event parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string - default: 10 description: Number of items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search keyword in: query name: search type: string - description: 'Sort field: ''score'' (default) or ''duration''' in: query name: sortBy type: string - description: 'Sort order: ''asc'' or ''desc''' in: query name: orderBy type: string - description: 'Sort order alias: ''asc'' or ''desc''' in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_dto_ExamScoreboardItem' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Exam Scoreboard tags: - Exam Event /api/v1/events/{event_slug}/exam: get: consumes: - application/json description: Retrieve a list of exams associated with a specific event parameters: - description: Event Slug in: path name: event_slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_Exam' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: List Exams by Event tags: - Exam Event /api/v1/events/{event_slug}/exam/{attempt_id}/answer_question: post: consumes: - application/json description: Submit an answer for a specific question in an exam attempt parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Attempt ID in: path name: attempt_id required: true type: string - description: Answer Exam Event Request in: body name: request required: true schema: $ref: '#/definitions/dto.AnswerEventExamRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_AnswerEventExamRequest' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Answer Exam Event Question tags: - Exam Event /api/v1/events/{event_slug}/exam/{exam_slug}/attempt: get: consumes: - application/json description: Start an attempt for a specific exam in an event parameters: - description: Event Slug in: path name: event_slug required: true type: string - description: Exam Slug in: path name: exam_slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_EventExamAttempt' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Attempt Exam Event tags: - Exam Event /api/v1/events/{event_slug}/scoreboard: get: consumes: - application/json description: Retrieve a paginated scoreboard of participants based on total score across all exams in an event parameters: - description: Event Slug in: path name: event_slug required: true type: string - default: 10 description: Number of items per page in: query name: limit type: integer - default: 1 description: Page number in: query name: page type: integer - description: Search keyword in: query name: search type: string - description: 'Sort field: ''total_score'' (default), ''username'', or ''full_name''' in: query name: sortBy type: string - description: 'Sort order: ''asc'' or ''desc''' in: query name: orderBy type: string - description: 'Sort order alias: ''asc'' or ''desc''' in: query name: order type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_dto_EventScoreboardItem' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Event Scoreboard tags: - Exam Event /api/v1/events/logs/{event_slug}/exam/{exam_slug}/proctoring: post: consumes: - multipart/form-data description: Create a new proctoring log entry with optional file attachment parameters: - description: Event ID in: formData name: id_event required: true type: string - description: Exam ID in: formData name: id_exam required: true type: string - description: Account ID in: formData name: id_account required: true type: string - description: Violation Score in: formData name: violation_score required: true type: integer - description: Violation Category in: formData name: violation_category required: true type: string - description: Attachment File in: formData name: file type: file produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-string' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' summary: Create Proctoring Log tags: - Event Exam Proctoring /api/v1/events/register-event: post: consumes: - application/json description: Register the authenticated user for an event using an event code parameters: - description: Join Event Request in: body name: request required: true schema: $ref: '#/definitions/dto.JoinEventRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_EventDetailResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "402": description: Payment Required schema: $ref: '#/definitions/dto.RegisterEventPaymentActionRequiredResponse' security: - BearerAuth: [] summary: Join Event tags: - Event /api/v1/files: post: consumes: - multipart/form-data description: Upload one or more files to the server parameters: - description: Upload Context (e.g., image, submission, material) in: formData name: context type: string - description: Files to upload (multiple allowed) in: formData name: files required: true type: file produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/dto.FileUploadResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' summary: Upload Files tags: - Upload /api/v1/files/{id}: get: consumes: - application/json description: Retrieve file details using its ID parameters: - description: File ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.FileResponseSingle' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' summary: Get File by ID tags: - Upload /api/v1/options/create: post: consumes: - application/json description: Create multiple options in bulk parameters: - description: Bulk Options Request in: body name: request required: true schema: items: $ref: '#/definitions/dto.OptionsRequest' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Create Bulk Options tags: - Option /api/v1/options/list/{slug}: get: consumes: - application/json description: Retrieve option details using its slug parameters: - description: Option Slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-models_Options' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Get Option by Slug tags: - Option /api/v1/options/region/cities: get: consumes: - application/json description: Retrieve a list of cities within a specific province parameters: - description: Province ID in: body name: request required: true schema: properties: province_id: type: integer type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_RegionCity' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: List Cities by Province tags: - Region /api/v1/options/region/provinces: get: consumes: - application/json description: Retrieve a list of all provinces produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_RegionProvince' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: List Provinces tags: - Region /api/v1/options/region/seed-cities: post: consumes: - application/json description: Seed multiple cities into the system parameters: - description: Seed Cities Request in: body name: request required: true schema: items: $ref: '#/definitions/models.RegionCity' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_models_RegionCity' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Seed Cities tags: - Region /api/v1/options/region/seed-provinces: post: consumes: - application/json description: Seed multiple provinces into the system parameters: - description: Seed Provinces Request in: body name: request required: true schema: items: $ref: '#/definitions/models.RegionProvince' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' summary: Seed Provinces tags: - Region /api/v1/super-admin/inject/probset: post: consumes: - multipart/form-data description: Inject problem sets and questions from an uploaded CSV (normalized_questions.csv format) parameters: - description: CSV file (normalized_questions.csv format) in: formData name: file required: true type: file produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_ProblemSetInjectResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Super Admin: Inject Problem Sets from CSV Upload' tags: - Super Admin Inject /api/v1/super-admin/inject/zip: post: consumes: - multipart/form-data description: Upload a zip file and mirror its directory structure to storage parameters: - description: Zip file in: formData name: file required: true type: file - description: Base path prefix in storage in: formData name: base_path type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_ZipInjectResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Super Admin: Inject Zip to Storage' tags: - Super Admin Inject /api/v1/super-admin/repair/problemset/naming/migrate: post: consumes: - application/json description: Prefix problem set titles with a custom prefix by created_at range (defaults to [MIGRATED]) parameters: - description: Repair Problem Set Naming Migrate Request in: body name: request required: true schema: $ref: '#/definitions/dto.RepairProblemSetNamingMigrateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_RepairProblemSetNamingMigrateResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Super Admin: Repair Problem Set Naming Migrate' tags: - Super Admin Repair /api/v1/super-admin/repair/question/storage_path: post: consumes: - application/json description: Replace @@PLUGINFILE@@ placeholders in questions with the storage URL and problem set ID produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_RepairQuestionStoragePathResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: 'Super Admin: Repair Question Storage Path' tags: - Super Admin Repair /api/v1/super-admin/users: get: consumes: - application/json description: Retrieve a paginated list of all users with optional role filter. Supports pagination parameters (page, limit) and can filter by user role. parameters: - description: Page number for pagination. Minimum value is 1. Default is 1. in: query name: page type: integer - description: Number of items per page. Minimum 1, Maximum 50. Default is 10. in: query name: limit type: integer - description: 'Filter users by role. Allowed values: user, admin, super_admin. Leave empty for no filter.' in: query name: role type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-array_dto_UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: List All Users with Pagination tags: - Super Admin Users Management post: consumes: - application/json description: Create a new user account by providing user details parameters: - description: Create User Request in: body name: request required: true schema: $ref: '#/definitions/dto.CreateUserRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Create Single User tags: - Super Admin Users Management /api/v1/super-admin/users/{id}: delete: consumes: - application/json description: Delete a user account by ID parameters: - description: User ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-any' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Delete User tags: - Super Admin Users Management put: consumes: - application/json description: Update user information by ID parameters: - description: User ID in: path name: id required: true type: string - description: Update User Request in: body name: request required: true schema: $ref: '#/definitions/dto.UpdateUserRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Edit User tags: - Super Admin Users Management /api/v1/super-admin/users/bulk: post: consumes: - application/json description: Create multiple user accounts at once parameters: - description: Bulk Create User Requests in: body name: requests required: true schema: items: $ref: '#/definitions/dto.CreateUserRequest' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/dto.SuccessResponse-dto_CreateUserRequest' "400": description: Bad Request schema: $ref: '#/definitions/dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/dto.ErrorResponse' security: - BearerAuth: [] summary: Bulk Create Users tags: - Super Admin Users Management schemes: - https securityDefinitions: BearerAuth: in: header name: Authorization type: apiKey swagger: "2.0"