import 'package:baseproject/features/model/index.dart';
import 'hra_repository_models.dart';
import 'package:dio/dio.dart';
import 'package:retrofit/retrofit.dart';
import 'hra_repository_enums.dart';
export 'hra_repository_enums.dart';
export 'hra_repository_models.dart';

part 'hra_repository.g.dart';

// **************************************************************************
// The file is generated automatically. Do not edit files
// **************************************************************************

@RestApi()
abstract class HraRepository {
  factory HraRepository(
    Dio dio, {
    String baseUrl,
  }) = _HraRepository;

  ///
  ///@param id
  @GET('/api/v1/academic-year/get-by-id')
  Future<AcademicYearEntityApiResponse> academicYearGetById(
      @Query('id') int id);

  ///
  @POST('/api/v1/academic-year/save')
  Future<AcademicYearEntityApiResponse> academicYearSave(
      @Body() AcademicYearEntity body);

  ///
  @GET('/api/v1/academic-year/get-all')
  Future<AcademicYearEntityListApiResponse> academicYearGetAll();

  ///
  ///@param id
  @DELETE('/api/v1/academic-year/delete')
  Future<BooleanApiResponse> academicYearDelete(@Query('id') int id);

  ///
  @POST('/api/v1/account/register')
  Future<dynamic> accountRegister(@Body() RegisterDto body);

  ///
  @POST('/api/v1/account/login-mobile')
  Future<LoginResponseDtoApiResponse> accountLoginMobile(@Body() LoginDto body);

  ///
  @POST('/api/v1/account/login')
  @MultiPart()
  Future<LoginResponseDtoApiResponse> accountLogin(
      @Part() Map<String, dynamic> body);

  ///
  @POST('/api/v1/account/login-with-google')
  Future<LoginResponseDtoApiResponse> accountLoginWithGoogle(
      @Body() GoogleLoginDto body);

  ///
  @POST('/api/v1/account/login-with-facebook')
  Future<LoginResponseDtoApiResponse> accountLoginWithFacebook(
      @Body() FacebookLoginDto body);

  ///
  @GET('/api/v1/account/captcha')
  Future<DNTCaptchaApiResponse> accountCaptcha();

  ///
  @POST('/api/v1/account/refresh-token')
  Future<RefreshTokenResponseDtoApiResponse> accountRefreshToken(
      @Body() RefreshTokenRequestDto body);

  ///
  @POST('/api/v1/account/login-with-2fa')
  Future<LoginResponseDtoApiResponse> accountLoginWith2fa(
      @Body() LoginWith2FADto body);

  ///
  @GET('/api/v1/account/user-info')
  Future<UserInfoDto> accountUserInfo();

  ///
  @POST('/api/v1/account/change-password')
  Future<dynamic> accountChangePassword(@Body() ChangePasswordDto body);

  ///
  @POST('/api/v1/account/setup-2fa')
  Future<Setup2FADto> accountSetup2fa();

  ///
  @POST('/api/v1/account/enable-2fa')
  Future<BooleanApiResponse> accountEnable2fa(@Body() Enable2FADto body);

  ///
  @GET('/api/v1/account/get-2fa-status')
  Future<BooleanApiResponse> accountGet2faStatus();

  ///
  @POST('/api/v1/account/disable-2fa')
  Future<BooleanApiResponse> accountDisable2fa(@Body() Disable2FADto body);

  ///
  @POST('/api/v1/account/update-avatar')
  Future<UpdateAvatarDto> accountUpdateAvatar(@Body() UpdateAvatarDto body);

  ///
  @POST('/api/v1/account/update-info')
  Future<UpdateInfoDto> accountUpdateInfo(@Body() UpdateInfoDto body);

  ///
  @POST('/api/v1/account/logout')
  Future<dynamic> accountLogout();

  ///
  ///@param token
  @GET('/api/v1/account/token/validate')
  Future<bool> accountTokenValidate(@Query('token') String token);

  ///
  @GET('/api/v1/account/check-session')
  Future<bool> accountCheckSession();

  ///
  ///@param userName
  @GET('/api/v1/account/check-username')
  Future<CurrentObjectDtoApiResponse> accountCheckUsername(
      @Query('userName') String userName);

  ///
  @POST('/api/v1/account/check-fogot-password-otp')
  Future<ObjectApiResponse> accountCheckFogotPasswordOtp(
      @Body() ForgotPasswordCheckOTPResource body);

  ///
  ///@param userName
  ///@param captcha
  @GET('/api/v1/account/resend-otp')
  Future<CurrentObjectDtoApiResponse> accountResendOtp(
    @Query('userName') String userName,
    @Query('captcha') String captcha,
  );

  ///
  @POST('/api/v1/account/forgot-password')
  Future<BooleanApiResponse> accountForgotPassword(
      @Body() ResetPasswordByUserNameResource body);

  ///
  @POST('/api/v1/account/get-list')
  Future<UserListDtoFilterResultApiResponse> accountGetList(
      @Body() UserGetListQuery body);

  ///
  ///@param id
  @GET('/api/v1/account/get-by-id')
  Future<RegisterDtoApiResponse> accountGetById(@Query('id') int id);

  ///
  ///@param userId
  @GET('/api/v1/account/get-permission')
  Future<RoleModuleDtoListApiResponse> accountGetPermission(
      @Query('userId') int userId);

  ///
  ///@param isRessPass
  @POST('/api/v1/account/update')
  Future<BooleanApiResponse> accountUpdate(
    @Query('isRessPass') bool isRessPass,
    @Body() RegisterDto body,
  );

  ///
  ///@param userId
  @POST('/api/v1/account/update-permission')
  Future<BooleanApiResponse> accountUpdatePermission(
    @Query('userId') int userId,
    @Body() List<RoleModuleDto> body,
  );

  ///
  @PUT('/api/v1/account/update-email')
  Future<BooleanApiResponse> accountUpdateEmail(@Body() ChangeEmailDto body);

  ///
  ///@param id
  @DELETE('/api/v1/account/delete/{id}')
  Future<BooleanApiResponse> accountDeleteId(@Path('id') int id);

  ///
  ///@param type
  @POST('/api/v1/account/get-list-by-type')
  Future<UserWithSimpleInfoDtoListApiResponse> accountGetListByType(
      @Query('type') int type);

  ///
  ///@param id
  @GET('/api/v1/activity/{id}')
  Future<ActivitySaveDtoApiResponse> activityId(@Path('id') int id);

  ///
  @POST('/api/v1/activity')
  Future<ActivityEntityApiResponse> activity(@Body() ActivitySaveDto body);

  ///
  @POST('/api/v1/activity/list')
  Future<ActivityListDtoFilterResultApiResponse> activityList(
      @Body() ActivityGetListQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/activity/delete/{id}')
  Future<BooleanApiResponse> activityDeleteId(@Path('id') int id);

  ///
  @POST('/api/v1/activity-log')
  Future<ActivityLogEntityApiResponse> activityLog(
      @Body() ActivityLogEntity body);

  ///
  @POST('/api/v1/activity-log/list')
  Future<ListActivityLogDtoFilterResultApiResponse> activityLogList(
      @Body() GetListLogQuery body);

  ///
  @POST('/api/v1/ai/chat-with-prompt')
  Future<AiResponseApiResponse> aiChatWithPrompt(@Body() AiPromptRequest body);

  ///
  @POST('/api/v1/ai/chat')
  Future<AiResponseApiResponse> aiChat(@Body() AiChatRequest body);

  ///
  @POST('/api/v1/ai/chat-simple')
  Future<AiResponseApiResponse> aiChatSimple(@Body() SimpleChatRequest body);

  ///
  ///@param id
  @GET('/api/v1/ai-prompt/{id}')
  Future<AiPromptEntityApiResponse> aiPromptId(@Path('id') int id);

  ///
  ///@param code
  ///@param grade
  ///@param categoryId
  @GET('/api/v1/ai-prompt/by-code/{code}')
  Future<AiPromptEntityApiResponse> aiPromptByCodeCode(
      @Queries() AiPromptByCodeCodeRequest aiPromptByCodeCodeRequest);

  ///
  @POST('/api/v1/ai-prompt')
  Future<AiPromptEntityApiResponse> aiPrompt(@Body() AiPromptEntity body);

  ///
  @POST('/api/v1/ai-prompt/list')
  Future<AiPromptListDtoFilterResultApiResponse> aiPromptList(
      @Body() AiPromptGetListQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/ai-prompt/delete/{id}')
  Future<BooleanApiResponse> aiPromptDeleteId(@Path('id') int id);

  ///
  @POST('/api/v1/assign-exam/list-exam-of-user')
  Future<AssignExamListExamDtoFilterResultApiResponse> assignExamListExamOfUser(
      @Body() AssignExamListExamFilterDto body);

  ///
  @POST('/api/v1/assign-exam/assign-exam-update')
  Future<BooleanApiResponse> assignExamAssignExamUpdate(
      @Body() AssignExamEntity body);

  ///
  @POST('/api/v1/assign-exam/assign-exam-add-multiple')
  Future<BooleanApiResponse> assignExamAssignExamAddMultiple(
      @Body() AssignExamAddMultipleDto body);

  ///
  @POST('/api/v1/assign-exam/assign-exam-check-do-exam')
  Future<AssignExamCheckDoExamDtoApiResponse> assignExamAssignExamCheckDoExam(
      @Body() int body);

  ///
  ///@param classId
  @GET('/api/v1/assign-exam/assign-exam-user-count')
  Future<AssignExamCountDtoApiResponse> assignExamAssignExamUserCount(
      @Query('classId') int classId);

  ///
  ///@param pageSize
  @GET('/api/v1/assign-exam/assign-exam-done')
  Future<AssignExamDoneDtoListApiResponse> assignExamAssignExamDone(
      @Query('pageSize') int pageSize);

  ///
  ///@param pageSize
  @GET('/api/v1/assign-exam/assign-exam-need-do')
  Future<AssignExamNeedDoDtoListApiResponse> assignExamAssignExamNeedDo(
      @Query('pageSize') int pageSize);

  ///
  ///@param assignExamId
  @DELETE('/api/v1/assign-exam/assign-exam-delete')
  Future<BooleanApiResponse> assignExamAssignExamDelete(
      @Query('assignExamId') int assignExamId);

  ///
  ///@param assignExamId
  @GET('/api/v1/assign-exam/assign-exam-top-difficult-question')
  Future<AssignExamTopDifficultQuestionDtoListApiResponse>
      assignExamAssignExamTopDifficultQuestion(
          @Query('assignExamId') int assignExamId);

  ///
  ///@param assignExamId
  @GET('/api/v1/assign-exam/assign-exam-score-distribution')
  Future<AssignExamScoreDistributionDtoListApiResponse>
      assignExamAssignExamScoreDistribution(
          @Query('assignExamId') int assignExamId);

  ///
  @POST('/api/v1/assign-exam/assign-exam-list-by-exam-id')
  Future<AssignExamListByExamIdDtoFilterResult>
      assignExamAssignExamListByExamId(
          @Body() AssignExamListByExamIdFilterDto body);

  ///
  @GET('/api/v1/cart/my')
  Future<CartDtoApiResponse> cartMy();

  ///
  @POST('/api/v1/cart/add-item')
  Future<CartDtoApiResponse> cartAddItem(@Body() CartAddItemDto body);

  ///
  @PUT('/api/v1/cart/update-item')
  Future<BooleanApiResponse> cartUpdateItem(@Body() CartUpdateItemDto body);

  ///
  ///@param cartItemId
  @DELETE('/api/v1/cart/remove-item/{cartItemId}')
  Future<BooleanApiResponse> cartRemoveItemCartItemId(
      @Path('cartItemId') int cartItemId);

  ///
  @POST('/api/v1/cart/clear')
  Future<BooleanApiResponse> cartClear();

  ///
  ///@param id
  @GET('/api/v1/category/{id}')
  Future<CategoryEntityApiResponse> categoryId(@Path('id') int id);

  ///
  @POST('/api/v1/category')
  Future<CategoryEntityApiResponse> category(@Body() CategoryEntity body);

  ///
  @POST('/api/v1/category/list')
  Future<CategoryListDtoFilterResultApiResponse> categoryList(
      @Body() CategoryGetListQuery body);

  ///
  @POST('/api/v1/category/list-with-news-count')
  Future<CategoryWithNewsCountDtoListApiResponse> categoryListWithNewsCount(
      @Body() CategoryGetListWithNewsCountQuery body);

  ///
  @POST('/api/v1/category/list-with-gallery-count')
  Future<CategoryWithGalleryCountDtoListApiResponse>
      categoryListWithGalleryCount(
          @Body() CategoryGetListWithGalleryCountQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/category/delete/{id}')
  Future<BooleanApiResponse> categoryDeleteId(@Path('id') int id);

  ///
  ///@param keyword
  ///@param pageIndex
  ///@param pageSize
  @POST('/api/v1/chat/list-chat-group-of-user')
  Future<ListChatGroupDtoFilterResultApiResponse> chatListChatGroupOfUser(
      @Queries() ChatListChatGroupOfUserRequest chatListChatGroupOfUserRequest);

  ///
  @POST('/api/v1/chat/create-chat-group')
  Future<ChatGroupEntityApiResponse> chatCreateChatGroup(
      @Body() CreateChatGroupDto body);

  ///
  ///@param chatGroupId
  @POST('/api/v1/chat/get-detail-chat-group')
  Future<ChatGroupDetailDtoApiResponse> chatGetDetailChatGroup(
      @Query('chatGroupId') int chatGroupId);

  ///
  ///@param chatGroupId
  ///@param skipSize
  ///@param pageSize
  @POST('/api/v1/chat/get-list-message-by-groupid')
  Future<ListChatMessageByGroupDtoFilterResultApiResponse>
      chatGetListMessageByGroupid(
          @Queries()
          ChatGetListMessageByGroupidRequest
              chatGetListMessageByGroupidRequest);

  ///
  @POST('/api/v1/chat/get-list-user-for-create-chat')
  Future<UserListDtoFilterResultApiResponse> chatGetListUserForCreateChat(
      @Body() GetListUserForCreateChatGroupQuery body);

  ///
  ///@param documentId
  @POST('/api/v1/chat/create-chat-group-of-document')
  Future<ChatGroupEntityApiResponse> chatCreateChatGroupOfDocument(
      @Query('documentId') int documentId);

  ///
  ///@param chatGroupId
  @POST('/api/v1/chat/add-user-to-chat-group')
  Future<BooleanApiResponse> chatAddUserToChatGroup(
      @Query('chatGroupId') int chatGroupId);

  ///
  ///@param chatGroupId
  @POST('/api/v1/chat/update-message-un-read')
  Future<BooleanApiResponse> chatUpdateMessageUnRead(
      @Query('chatGroupId') int chatGroupId);

  ///
  @POST('/api/v1/class/list')
  Future<ClassListDtoFilterResult> classList(@Body() ClassGetListFilter body);

  ///
  ///@param id
  @GET('/api/v1/class/get-by-id')
  Future<ClassDetailDto> classGetById(@Query('id') int id);

  ///
  @POST('/api/v1/class/save')
  Future<int> classSave(@Body() ClassEntity body);

  ///
  ///@param id
  @DELETE('/api/v1/class/delete')
  Future<dynamic> classDelete(@Query('id') int id);

  ///
  @POST('/api/v1/class/change-class')
  Future<bool> classChangeClass(@Body() ClassChangeClassCommand body);

  ///
  @POST('/api/v1/class/add-list-user')
  Future<bool> classAddListUser(@Body() ClassAddListUserCommand body);

  ///
  @POST('/api/v1/class/add-teacher')
  Future<bool> classAddTeacher(@Body() List<ClassUserEntity> body);

  ///
  @POST('/api/v1/class/update-manager')
  Future<bool> classUpdateManager(@Body() TeacherUpdateManagerCommand body);

  ///
  @POST('/api/v1/class/remove-user')
  Future<bool> classRemoveUser(@Body() ClassRemoveUserCommand body);

  ///
  @POST('/api/v1/class/get-pupil-in-class')
  Future<PupilListDtoFilterResult> classGetPupilInClass(
      @Body() PupilFilterDto body);

  ///
  ///@param classId
  @GET('/api/v1/class/pupil-export')
  Future<String> classPupilExport(@Query('classId') int classId);

  ///
  @POST('/api/v1/class/get-teacher-in-class')
  Future<TeacherListDtoFilterResult> classGetTeacherInClass(
      @Body() TeacherFilterDto body);

  ///
  ///@param classId
  @GET('/api/v1/class/teacher-export')
  Future<String> classTeacherExport(@Query('classId') int classId);

  ///
  @POST('/api/v1/class/teacher-update-subjects')
  Future<dynamic> classTeacherUpdateSubjects(
      @Body() TeacherUpdateSubjectsCommand body);

  ///
  @GET('/api/v1/class/template-import-teacher')
  Future<String> classTemplateImportTeacher();

  ///
  ///@param classId
  @PUT('/api/v1/class/import-teacher')
  Future<String> classImportTeacher(
    @Query('classId') int classId,
    @Body() Object body,
  );

  ///
  @GET('/api/v1/class/template-import-pupil')
  Future<String> classTemplateImportPupil();

  ///
  ///@param classId
  @PUT('/api/v1/class/import-pupil')
  Future<String> classImportPupil(
    @Query('classId') int classId,
    @Body() Object body,
  );

  ///
  ///@param classId
  @GET('/api/v1/class/class-statistical')
  Future<ClassStatisticalDto> classClassStatistical(
      @Query('classId') int classId);

  ///
  ///@param classId
  ///@param pageSize
  @GET('/api/v1/class/assign-exam-top-average-scores')
  Future<List<TopAverageScoreDto>> classAssignExamTopAverageScores(
    @Query('classId') int classId,
    @Query('pageSize') int pageSize,
  );

  ///
  @POST('/api/v1/class/assign-exam-result')
  Future<ExamResultDtoFilterResult> classAssignExamResult(
      @Body() ExamResultFilterDto body);

  ///
  ///@param classId
  ///@param pageSize
  @GET('/api/v1/class/assign-exam-top-needs-to-do-homework')
  Future<List<TopNeedsToDoHomeworkDto>> classAssignExamTopNeedsToDoHomework(
    @Query('classId') int classId,
    @Query('pageSize') int pageSize,
  );

  ///
  ///@param classId
  @GET('/api/v1/class/assign-exam-result-export')
  Future<String> classAssignExamResultExport(@Query('classId') int classId);

  ///
  @POST('/api/v1/class/assign-exam-list-by-class')
  Future<AssignExamListDtoFilterResult> classAssignExamListByClass(
      @Body() AssignExamListByClassQuery body);

  ///
  @POST('/api/v1/class/assign-exam-add')
  Future<bool> classAssignExamAdd(@Body() AssignExamAddDto body);

  ///
  @POST('/api/v1/class/assign-exam-list-users')
  Future<List<AssignExamListUserDto>> classAssignExamListUsers(
      @Body() AssignExamListUserFilterDto body);

  ///
  @PUT('/api/v1/class/assign-exam-update-time')
  Future<bool> classAssignExamUpdateTime(@Body() AssignExamUpdateTimeDto body);

  ///
  ///@param id
  @GET('/api/v1/class/assign-exam-get-by-id')
  Future<AssignExamEditDto> classAssignExamGetById(@Query('id') int id);

  ///
  ///@param id
  @GET('/api/v1/class/assign-exam-get-detail')
  Future<AssignExamDetailDto> classAssignExamGetDetail(@Query('id') int id);

  ///
  @PUT('/api/v1/class/assign-exam-update-note')
  Future<bool> classAssignExamUpdateNote(@Body() AssignExamUpdateNoteDto body);

  ///
  ///@param assignExamId
  ///@param userId
  @GET('/api/v1/class/assign-exam-user-get-note')
  Future<String> classAssignExamUserGetNote(
    @Query('assignExamId') int assignExamId,
    @Query('userId') int userId,
  );

  ///
  ///@param classId
  @GET('/api/v1/class/class-with-pupils')
  Future<List<SchoolClassDto>> classClassWithPupils(
      @Query('classId') int classId);

  ///
  @POST('/api/v1/class/pupil-change-password')
  Future<bool> classPupilChangePassword(
      @Body() PupilChangePasswordCommand body);

  ///
  @POST('/api/v1/class/pupil-add-multi')
  Future<String> classPupilAddMulti(@Body() PupilAddMultiCommand body);

  ///
  ///@param pageSize
  @GET('/api/v1/class/class-of-pupil')
  Future<List<ClassPupilDto>> classClassOfPupil(
      @Query('pageSize') int pageSize);

  ///
  ///@param classId
  ///@param userId
  @GET('/api/v1/class/teacher-get-subject')
  Future<List<CategoryEntity>> classTeacherGetSubject(
    @Query('classId') int classId,
    @Query('userId') int userId,
  );

  ///
  ///@param schoolId
  ///@param userId
  @GET('/api/v1/class/class-get-by-user')
  Future<List<ClassByUserDto>> classClassGetByUser(
    @Query('schoolId') int schoolId,
    @Query('userId') int userId,
  );

  ///
  @POST('/api/v1/class/class-list-of-school')
  Future<ClassListOfSchoolDtoFilterResult> classClassListOfSchool(
      @Body() ClassListOfSchoolFilter body);

  ///
  @POST('/api/v1/class/pupil-copy-from-class')
  Future<bool> classPupilCopyFromClass(@Body() PupilCopyFromClassCommand body);

  ///
  ///@param classId
  @GET('/api/v1/class/pupil-check-go-to-class')
  Future<PupilCheckGoToClassDtoApiResponse> classPupilCheckGoToClass(
      @Query('classId') int classId);

  ///
  @POST('/api/v1/class/pupil-go-to-class')
  Future<bool> classPupilGoToClass(@Body() PupilGoToClassCommand body);

  ///
  ///@param classId
  ///@param userId
  @GET('/api/v1/class/class-analysis-data')
  Future<AiResponseApiResponse> classClassAnalysisData(
    @Query('classId') int classId,
    @Query('userId') int userId,
  );

  ///
  @POST('/api/v1/consultation-registration')
  Future<ConsultationRegistrationEntityApiResponse> consultationRegistration(
      @Body() ConsultationRegistrationSaveDto body);

  ///
  @POST('/api/v1/consultation-registration/list')
  Future<ConsultationRegistrationListDtoFilterResultApiResponse>
      consultationRegistrationList(
          @Body() ConsultationRegistrationGetListQuery body);

  ///
  ///@param id
  @PUT('/api/v1/consultation-registration/update-status/{id}')
  Future<BooleanApiResponse> consultationRegistrationUpdateStatusId(
    @Path('id') int id,
    @Body() ConsultationRegistrationUpdateStatusRequest body,
  );

  ///
  @POST('/api/v1/contact')
  Future<ContactEntityApiResponse> contact(@Body() ContactSaveDto body);

  ///
  @POST('/api/v1/contact/list')
  Future<ContactListDtoFilterResultApiResponse> contactList(
      @Body() ContactGetListQuery body);

  ///
  ///@param id
  @PUT('/api/v1/contact/update-status/{id}')
  Future<BooleanApiResponse> contactUpdateStatusId(
    @Path('id') int id,
    @Body() ContactUpdateStatusRequest body,
  );

  ///
  @POST('/api/v1/department/list')
  Future<DepartmentDtoFilterResultApiResponse> departmentList(
      @Body() DepartmentGetListQuery body);

  ///
  @POST('/api/v1/department/schools')
  Future<DepartmentSchoolListDtoFilterResultApiResponse> departmentSchools(
      @Body() DepartmentSchoolFilterDto body);

  ///
  @POST('/api/v1/department/count')
  Future<DepartmentCountDtoApiResponse> departmentCount(
      @Body() DepartmentCountQuery body);

  ///
  @GET('/api/v1/department/manager-position')
  Future<DeparmentGetManagerPositionDto> departmentManagerPosition();

  ///
  @GET('/api/v1/documents/status')
  Future<ObjectApiResponse> documentsStatus();

  ///
  @GET('/api/v1/documents/export/srs-word')
  Future<ObjectApiResponse> documentsExportSrsWord();

  ///
  @GET('/api/v1/documents/export/brd-word')
  Future<ObjectApiResponse> documentsExportBrdWord();

  ///
  @GET('/api/v1/documents/brd/info')
  Future<DocumentInfoApiResponse> documentsBrdInfo();

  ///
  @GET('/api/v1/documents/srs/info')
  Future<DocumentInfoApiResponse> documentsSrsInfo();

  ///
  ///@param fileName
  @GET('/api/v1/documents/brd/preview/{fileName}')
  Future<DocumentPreviewResponseApiResponse> documentsBrdPreviewFileName(
      @Path('fileName') String fileName);

  ///
  ///@param fileName
  @GET('/api/v1/documents/srs/preview/{fileName}')
  Future<DocumentPreviewResponseApiResponse> documentsSrsPreviewFileName(
      @Path('fileName') String fileName);

  ///
  @POST('/api/v1/exam/list')
  Future<ExamListDtoFilterResultApiResponse> examList(
      @Body() ExamGetListQuery body);

  ///
  ///@param id
  @GET('/api/v1/exam/get-by-id')
  Future<ExamDto> examGetById(@Query('id') int id);

  ///
  ///@param id
  @GET('/api/v1/exam/get-detail')
  Future<ExamDto> examGetDetail(@Query('id') int id);

  ///
  ///@param id
  @GET('/api/v1/exam/get-by-learn')
  Future<ExamLearnDto> examGetByLearn(@Query('id') int id);

  ///
  ///@param byImport
  @POST('/api/v1/exam/save')
  Future<ExamSaveDtoApiResponse> examSave(
    @Query('byImport') bool byImport,
    @Body() Object body,
  );

  ///
  ///@param id
  @DELETE('/api/v1/exam/delete')
  Future<BooleanApiResponse> examDelete(@Query('id') int id);

  ///
  ///@param id
  @GET('/api/v1/exam/ckeck-data-delete')
  Future<ExamDataBeforeDeleteDtoApiResponse> examCkeckDataDelete(
      @Query('id') int id);

  ///
  @POST('/api/v1/exam/save-file')
  Future<Int64ApiResponse> examSaveFile(@Body() ExamFileSaveDto body);

  ///
  @PUT('/api/v1/exam/import')
  Future<ExamDtoApiResponse> examImport(@Body() Object body);

  ///
  ///@param Id
  ///@param id
  @GET('/api/v1/file/{id}')
  Future<FileEntity> fileId(
    @Query('Id') int id,
    @Path('id') String id$,
  );

  ///
  ///@param id
  @GET('/api/v1/file/get-meta')
  Future<FileMetaDataEntityListApiResponse> fileGetMeta(@Query('id') int id);

  ///
  @POST('/api/v1/file')
  Future<FileEntity> file(@Body() FileUpdateCommand body);

  ///
  @POST('/api/v1/file/avatar')
  Future<bool> fileAvatar(@Body() FileUpdateAvatarCommand body);

  ///
  @POST('/api/v1/file/name')
  Future<bool> fileName(@Body() FileUpdateNameCommand body);

  ///
  @POST('/api/v1/file/status')
  Future<bool> fileStatus(@Body() FileUpdateStatusCommand body);

  ///
  @POST('/api/v1/file/list')
  Future<FileEntityFilterResultApiResponse> fileList(
      @Body() FileGetListQuery body);

  ///
  ///@param request
  @GET('/api/v1/file/folder-all')
  Future<List<FolderEntity>> fileFolderAll(
      @Query('request') FolderGetAllQuery request);

  ///
  ///@param Id
  ///@param id
  @GET('/api/v1/file/folder/{id}')
  Future<FolderEntity> fileFolderId(
    @Query('Id') int id,
    @Path('id') String id$,
  );

  ///
  @POST('/api/v1/file/folder')
  Future<FolderEntityApiResponse> fileFolder(@Body() FolderUpdateCommand body);

  ///
  @POST('/api/v1/file/folder/list')
  Future<FolderNodeDtoListApiResponse> fileFolderList(
      @Body() FolderGetListQuery body);

  ///
  @POST('/api/v1/file/folder/delete')
  Future<BooleanApiResponse> fileFolderDelete(@Body() FolderDeleteCommand body);

  ///
  ///@param url
  @POST('/api/v1/file/file/upload-by-url')
  Future<FileUploadByUrlResponseDtoApiResponse> fileFileUploadByUrl(
      @Query('url') String url);

  ///
  ///@param id
  @GET('/api/v1/gallery/{id}')
  Future<GallerySaveDtoApiResponse> galleryId(@Path('id') int id);

  ///
  @POST('/api/v1/gallery')
  Future<GalleryEntityApiResponse> gallery(@Body() GallerySaveDto body);

  ///
  @POST('/api/v1/gallery/list')
  Future<GalleryListDtoFilterResultApiResponse> galleryList(
      @Body() GalleryGetListQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/gallery/delete/{id}')
  Future<BooleanApiResponse> galleryDeleteId(@Path('id') int id);

  ///
  @GET('/api/v1/locality/ids')
  Future<LocalityEntityListApiResponse> localityIds();

  ///
  @POST('/api/v1/locality/list')
  Future<LocalityEntityFilterResultApiResponse> localityList(
      @Body() LocalityGetListQuery body);

  ///
  ///@param id
  @GET('/api/v1/news/{id}')
  Future<NewsDetailDtoApiResponse> newsId(@Path('id') int id);

  ///
  @POST('/api/v1/news')
  Future<NewsEntityApiResponse> news(@Body() NewsSaveDto body);

  ///
  @POST('/api/v1/news/list')
  Future<NewsListDtoFilterResultApiResponse> newsList(
      @Body() NewsGetListQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/news/delete/{id}')
  Future<BooleanApiResponse> newsDeleteId(@Path('id') int id);

  ///
  ///@param page
  ///@param pageSize
  @POST('/api/v1/notification/list')
  Future<NotificationDtoFilterResult> notificationList(
    @Query('page') int page,
    @Query('pageSize') int pageSize,
  );

  ///
  ///@param notificationId
  @POST('/api/v1/notification/{notificationId}/mark-as-read')
  Future<dynamic> notificationNotificationIdMarkAsRead(
      @Path('notificationId') int notificationId);

  ///
  @POST('/api/v1/notification/mark-all-as-read')
  Future<dynamic> notificationMarkAllAsRead();

  ///
  @GET('/api/v1/notification/count-un-read')
  Future<int> notificationCountUnRead();

  ///
  @POST('/api/v1/objectlike/object-like-save')
  Future<bool> objectlikeObjectLikeSave(@Body() ObjectLikeSaveCommand body);

  ///
  @POST('/api/v1/office/list')
  Future<OfficeDtoFilterResultApiResponse> officeList(
      @Body() OfficeGetListQuery body);

  ///
  @POST('/api/v1/order/create')
  Future<OrderDtoApiResponse> orderCreate(@Body() OrderCreateDto body);

  ///
  @POST('/api/v1/order/list')
  Future<OrderDtoFilterResultApiResponse> orderList(
      @Body() OrderGetListQuery body);

  ///
  @POST('/api/v1/order/list-my')
  Future<OrderDtoFilterResultApiResponse> orderListMy(
      @Body() OrderGetListQuery body);

  ///
  ///@param id
  @GET('/api/v1/order/{id}')
  Future<OrderDtoApiResponse> orderId(@Path('id') int id);

  ///
  ///@param id
  @PUT('/api/v1/order/{id}')
  Future<BooleanApiResponse> putOrderId(
    @Path('id') int id,
    @Body() OrderUpdateDto body,
  );

  ///
  ///@param id
  @PUT('/api/v1/order/{id}/status')
  Future<BooleanApiResponse> orderIdStatus(
    @Path('id') int id,
    @Body() Object body,
  );

  ///
  ///@param id
  @PUT('/api/v1/order/{id}/notes')
  Future<BooleanApiResponse> orderIdNotes(
    @Path('id') int id,
    @Body() String body,
  );

  ///
  @POST('/api/v1/order/create-with-class')
  Future<OrderEntityApiResponse> orderCreateWithClass(
      @Body() OrderCreateWithClassDto body);

  ///
  ///@param id
  @GET('/api/v1/product/{id}')
  Future<ProductSaveDtoApiResponse> productId(@Path('id') int id);

  ///
  ///@param id
  @GET('/api/v1/product/detail/{id}')
  Future<ProductDetailDtoApiResponse> productDetailId(@Path('id') int id);

  ///
  @POST('/api/v1/product')
  Future<ProductEntityApiResponse> product(@Body() ProductSaveDto body);

  ///
  @POST('/api/v1/product/list')
  Future<ProductListDtoFilterResultApiResponse> productList(
      @Body() ProductGetListQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/product/delete/{id}')
  Future<BooleanApiResponse> productDeleteId(@Path('id') int id);

  ///
  ///@param id
  @POST('/api/v1/product/{id}/reviews')
  Future<ProductReviewEntityApiResponse> productIdReviews(
    @Path('id') int id,
    @Body() ProductReviewCreateDto body,
  );

  ///
  ///@param id
  @POST('/api/v1/product/{id}/reviews/list')
  Future<ProductReviewListDtoFilterResultApiResponse> productIdReviewsList(
    @Path('id') int id,
    @Body() ProductReviewGetListQuery body,
  );

  ///
  ///@param id
  @POST('/api/v1/product/reviews/{id}/approve')
  Future<BooleanApiResponse> productReviewsIdApprove(
    @Path('id') int id,
    @Body() ProductReviewApproveCommand body,
  );

  ///
  @POST('/api/v1/product/reviews/admin-list')
  Future<ProductReviewListDtoFilterResultApiResponse> productReviewsAdminList(
      @Body() ProductReviewGetListQuery body);

  ///
  ///@param id
  @POST('/api/v1/product/{id}/reviews/generate-ai')
  Future<ProductReviewEntityListApiResponse> productIdReviewsGenerateAi(
    @Path('id') int id,
    @Body() ProductReviewGenerateAiRequest body,
  );

  ///
  @POST('/api/v1/product/by-ids')
  Future<ProductListDtoListApiResponse> productByIds(
      @Body() ProductGetByIdsQuery body);

  ///
  @GET('/api/v1/product/purchase-config')
  Future<ProductListDtoListApiResponse> productPurchaseConfig();

  ///
  ///@param id
  ///@param onlyAvailable
  @GET('/api/v1/product/{id}/classes')
  Future<ProductClassDtoListApiResponse> productIdClasses(
    @Path('id') int id,
    @Query('onlyAvailable') bool onlyAvailable,
  );

  ///
  ///@param classId
  ///@param userId
  ///@param subjectId
  @GET('/api/v1/pupil/pupil-static')
  Future<PupilStaticDtoApiResponse> pupilPupilStatic(
      @Queries() PupilPupilStaticRequest pupilPupilStaticRequest);

  ///
  @POST('/api/v1/pupil/pupil-history-do-exam')
  Future<PupilHistoryDoExamDtoFilterResultApiResponse> pupilPupilHistoryDoExam(
      @Body() PupilHistoryDoExamFilterDto body);

  ///
  ///@param classId
  ///@param userId
  ///@param subjectId
  @GET('/api/v1/pupil/pupil-static-by-type-exam')
  Future<PupilStaticByTypeExamDtoListApiResponse> pupilPupilStaticByTypeExam(
      @Queries()
      PupilPupilStaticByTypeExamRequest pupilPupilStaticByTypeExamRequest);

  ///
  @POST('/api/v1/pupil/pupil-statistical-of-class')
  Future<ClassPupilStatisticalDtoFilterResult> pupilPupilStatisticalOfClass(
      @Body() ClassPupilStatisticalFilter body);

  ///
  @POST('/api/v1/question/list')
  Future<QuestionListDtoFilterResultApiResponse> questionList(
      @Body() QuestionGetListQuery body);

  ///
  ///@param id
  @GET('/api/v1/question/get-by-id')
  Future<QuestionDto> questionGetById(@Query('id') int id);

  ///
  @POST('/api/v1/question/get-by-ids')
  Future<List<QuestionDto>> questionGetByIds();

  ///
  @POST('/api/v1/question/save')
  Future<QuestionDtoApiResponse> questionSave(@Body() Object body);

  ///
  ///@param id
  @DELETE('/api/v1/question/delete')
  Future<BooleanApiResponse> questionDelete(@Query('id') int id);

  ///
  @PUT('/api/v1/question/import')
  Future<QuestionDtoListApiResponse> questionImport(@Body() Object body);

  ///
  @POST('/api/v1/role/save')
  Future<Int64ApiResponse> roleSave(@Body() RoleDto body);

  ///
  ///@param id
  @GET('/api/v1/role/{id}')
  Future<RoleDtoApiResponse> roleId(@Path('id') int id);

  ///
  ///@param keyword
  @GET('/api/v1/role/list')
  Future<RoleDtoListApiResponse> roleList(@Query('keyword') String keyword);

  ///
  @GET('/api/v1/role/list-module')
  Future<EnumListEntityListApiResponse> roleListModule();

  ///
  ///@param id
  @DELETE('/api/v1/role/delete')
  Future<BooleanApiResponse> roleDelete(@Query('id') String id);

  ///
  ///@param id
  @GET('/api/v1/safety-skill/{id}')
  Future<SafetySkillEntityApiResponse> safetySkillId(@Path('id') int id);

  ///
  @POST('/api/v1/safety-skill')
  Future<SafetySkillEntityApiResponse> safetySkill(
      @Body() SafetySkillEntity body);

  ///
  @POST('/api/v1/safety-skill/list')
  Future<SafetySkillListDtoFilterResultApiResponse> safetySkillList(
      @Body() SafetySkillGetListQuery body);

  ///
  ///@param id
  @DELETE('/api/v1/safety-skill/delete/{id}')
  Future<BooleanApiResponse> safetySkillDeleteId(@Path('id') int id);

  ///
  @POST('/api/v1/school/list')
  Future<SchoolListDtoFilterResultApiResponse> schoolList(
      @Body() SchoolGetListQuery body);

  ///
  ///@param id
  @GET('/api/v1/school/get-by-id')
  Future<SchoolDtoApiResponse> schoolGetById(@Query('id') int id);

  ///
  @POST('/api/v1/school/save')
  Future<SchoolEntityApiResponse> schoolSave(@Body() SchoolEntity body);

  ///
  ///@param id
  @DELETE('/api/v1/school/delete')
  Future<dynamic> schoolDelete(@Query('id') int id);

  ///
  ///@param schoolId
  @PUT('/api/v1/school/quylx-school-import-pupil')
  Future<String> schoolQuylxSchoolImportPupil(
    @Query('schoolId') int schoolId,
    @Body() Object body,
  );

  ///
  ///@param schoolId
  @PUT('/api/v1/school/quylx-school-import-teacher')
  Future<String> schoolQuylxSchoolImportTeacher(
    @Query('schoolId') int schoolId,
    @Body() Object body,
  );

  ///
  ///@param schoolId
  @PUT('/api/v1/school/school-import-pupil')
  Future<String> schoolSchoolImportPupil(
    @Query('schoolId') int schoolId,
    @Body() Object body,
  );

  ///
  ///@param schoolId
  @PUT('/api/v1/school/school-import-pupil-preview')
  Future<List<UserCreateDto>> schoolSchoolImportPupilPreview(
    @Query('schoolId') int schoolId,
    @Body() Object body,
  );

  ///
  ///@param schoolId
  @PUT('/api/v1/school/school-import-teacher')
  Future<String> schoolSchoolImportTeacher(
    @Query('schoolId') int schoolId,
    @Body() Object body,
  );

  ///
  ///@param schoolId
  @PUT('/api/v1/school/school-import-teacher-preview')
  Future<List<TeacherCreateDto>> schoolSchoolImportTeacherPreview(
    @Query('schoolId') int schoolId,
    @Body() Object body,
  );

  ///
  ///@param schoolId
  @POST('/api/v1/school/teacher-create')
  Future<BooleanApiResponse> schoolTeacherCreate(
    @Query('schoolId') int schoolId,
    @Body() TeacherCreateDto body,
  );

  ///
  @POST('/api/v1/school/teacher-assign-existing')
  Future<BooleanApiResponse> schoolTeacherAssignExisting(
      @Body() AssignExistingTeacherDto body);

  ///
  @GET('/api/v1/school/list-by-user')
  Future<SchoolListDtoListApiResponse> schoolListByUser();

  ///
  @POST('/api/v1/school/teacher-get-by-school')
  Future<TeacherGetBySchoolDtoFilterResultApiResponse> schoolTeacherGetBySchool(
      @Body() TeacherGetBySchoolFilterDto body);

  ///
  ///@param schoolId
  @GET('/api/v1/school/static-count')
  Future<SchoolStaticCountDtoApiResponse> schoolStaticCount(
      @Query('schoolId') int schoolId);

  ///
  ///@param schoolId
  @GET('/api/v1/school/class-program-types')
  Future<ClassProgramTypeEntityListApiResponse> schoolClassProgramTypes(
      @Query('schoolId') int schoolId);

  ///
  @POST('/api/v1/school/class-program-types')
  Future<ClassProgramTypeEntityApiResponse> postSchoolClassProgramTypes(
      @Body() ClassProgramTypeEntity body);

  ///
  ///@param id
  @DELETE('/api/v1/school/class-program-types')
  Future<BooleanApiResponse> deleteSchoolClassProgramTypes(@Query('id') int id);

  ///
  @GET('/api/v1/statistical/static-number')
  Future<StatisticalDtoApiResponse> statisticalStaticNumber();

  ///
  @GET('/api/v1/statistical/class')
  Future<DashBoardClassStatisticalDtoListApiResponse> statisticalClass();

  ///
  @GET('/api/v1/statistical/exam')
  Future<DashBoardExamListDtoListApiResponse> statisticalExam();

  ///
  @GET('/api/v1/statistical/question')
  Future<DashBoardQuestionListDtoListApiResponse> statisticalQuestion();

  ///
  @GET('/api/v1/statistical/pupil')
  Future<DashBoardPupilListDtoListApiResponse> statisticalPupil();

  ///
  @GET('/api/v1/statistical/pupil-number')
  Future<PupilStatisticalDtoApiResponse> statisticalPupilNumber();

  ///
  @GET('/api/v1/system/init')
  Future<SystemInitDtoApiResponse> systemInit();

  ///
  ///@param id
  @GET('/api/v1/tag/{id}')
  Future<TagDtoApiResponse> tagId(@Path('id') int id);

  ///
  @POST('/api/v1/tag')
  Future<TagDtoApiResponse> tag(@Body() TagDto body);

  ///
  @POST('/api/v1/tag/list')
  Future<TagListDtoFilterResultApiResponse> tagList(
      @Body() TagGetListQuery body);

  ///
  @POST('/api/v1/tag/list-by-ids')
  Future<TagDtoListApiResponse> tagListByIds();

  ///
  ///@param id
  @DELETE('/api/v1/tag/delete/{id}')
  Future<BooleanApiResponse> tagDeleteId(@Path('id') int id);

  ///
  ///@param id
  ///@param IsHot
  @PUT('/api/v1/tag/update-hot')
  Future<BooleanApiResponse> tagUpdateHot(
    @Query('id') int id,
    @Query('IsHot') bool isHot,
  );

  ///
  ///@param id
  ///@param newsId
  @PUT('/api/v1/tag/remove-news')
  Future<BooleanApiResponse> tagRemoveNews(
    @Query('id') int id,
    @Query('newsId') int newsId,
  );

  ///
  @PUT('/api/v1/tag/add-news')
  Future<BooleanApiResponse> tagAddNews(@Body() TagAddNewsDto body);

  ///
  @POST('/api/v1/tag/list-with-news-count')
  Future<TagListDtoListApiResponse> tagListWithNewsCount(
      @Body() TagGetListWithNewsCountQuery body);

  ///
  ///@param classId
  ///@param userId
  ///@param subjectId
  @GET('/api/v1/teacher/static-by-type-exam')
  Future<TeacherStaticByTypeExamDtoListApiResponse> teacherStaticByTypeExam(
      @Queries() TeacherStaticByTypeExamRequest teacherStaticByTypeExamRequest);

  ///
  @GET('/api/v1/test/test-kafka')
  Future<String> testTestKafka();

  ///
  @GET('/api/v1/test/test-parsejson')
  Future<ResponseXApiResponse> testTestParsejson();

  ///
  @GET('/api/v1/test/test-log')
  Future<BooleanApiResponse> testTestLog();

  ///
  ///@param email
  ///@param classId
  @POST('/api/v1/user/get-by-email')
  Future<UserInfoDtoApiResponse> userGetByEmail(
    @Query('email') String email,
    @Query('classId') int classId,
  );

  ///
  @GET('/api/v1/user/template-import')
  Future<String> userTemplateImport();

  ///
  @POST('/api/v1/user/import-user')
  Future<String> userImportUser(@Body() Object body);

  ///
  ///@param id
  @GET('/api/v1/user-exam-result/get-by-id')
  Future<UserExamResultDetailWithMessageDto> userExamResultGetById(
      @Query('id') int id);

  ///
  @POST('/api/v1/user-exam-result/save')
  Future<UserExamResultEntityApiResponse> userExamResultSave(
      @Body() UserExamResultDto body);

  ///
  @POST('/api/v1/user-exam-result/comment')
  Future<BooleanApiResponse> userExamResultComment(
      @Body() UserAnswerEntity body);

  ///
  ///@param userExamResultId
  ///@param comment
  @POST('/api/v1/user-exam-result/change-mark')
  Future<BooleanApiResponse> userExamResultChangeMark(
      @Queries()
      UserExamResultChangeMarkRequest userExamResultChangeMarkRequest);

  ///
  @POST('/api/v1/user-exam-result/essay-suggestion-mark')
  Future<AiResponseApiResponse> userExamResultEssaySuggestionMark(
      @Body() EssaySuggestionMarkDto body);

  ///
  @POST('/api/v1/user-mobile-token/save')
  Future<UserMobileTokenEntityApiResponse> userMobileTokenSave(
      @Body() UserMobileTokenUpdateCommand body);

  ///
  ///@param UserId
  ///@param id
  @GET('/api/v1/user-permission/{id}')
  Future<RoleDto> userPermissionId(
    @Query('UserId') int userId,
    @Path('id') String id,
  );

  ///
  @POST('/api/v1/user-web-token/save')
  Future<UserWebTokenEntityApiResponse> userWebTokenSave(
      @Body() UserWebTokenUpdateCommand body);

  ///
  @DELETE('/api/v1/user-web-token/delete')
  Future<BooleanApiResponse> userWebTokenDelete(
      @Body() UserWebTokenDeleteCommand body);

  ///
  @GET('/api/v1/user-web-token/generate')
  Future<VapidDetailsApiResponse> userWebTokenGenerate();

  ///
  @POST('/api/zoom-webhook')
  Future<dynamic> zoomWebhook();
}
