export interface ApiResponse { code: number message: string data: T timestamp: number } export interface UserInfo { iIncrement: number sUserNo: string sUserName: string sUserType: string sLanguage: string } export interface LoginRequest { sUserName: string sPassword: string sVersion: 'standard' } export interface LoginResponse { accessToken: string expiresIn: number user: UserInfo } export interface UserListItem { iIncrement: number sUserName: string sStaffName: string | null sUserNo: string sDepartment: string | null sUserType: string sLanguage: string bDeleted: boolean tLastLoginDate: string | null sCreatedBy: string | null tCreateDate: string | null } export interface UserListPage { total: number list: UserListItem[] pageNum: number pageSize: number } export type QueryField = 'username' | 'userno' | 'staff' | 'department' | 'usertype' | 'language' | 'deleted' export type MatchType = 'contains' | 'equals' | 'startsWith' | 'endsWith' export interface UserQuery { pageNum: number pageSize: number queryField?: QueryField matchType?: MatchType queryValue?: string } export interface UserCreate { sUserNo: string sUserName: string iStaffId?: number | null sUserType: string sLanguage: string bCanModifyDocs?: boolean permissionCategoryIds?: number[] } export interface UserUpdate { iStaffId?: number | null sUserType: string sLanguage: string bCanModifyDocs?: boolean permissionCategoryIds?: number[] } export interface ErrorPayload { cooldownSeconds?: number [key: string]: unknown }