// Code generated by goctl. DO NOT EDIT. // goctl 1.8.5 package types type AddMemberReq struct { Authorization RoomID string `json:"room_id" validate:"required"` UID string `json:"uid" validate:"required"` // 要添加的用戶 UID } type Authorization struct { Authorization string `header:"Authorization" validate:"required"` } type BaseReq struct { } type CreateRoomReq struct { Authorization Name string `json:"name" validate:"required,min=1,max=100"` // 聊天室名稱 Status string `json:"status,optional" validate:"omitempty,oneof=active archived"` // 狀態,預設為 active } type CredentialsPayload struct { Password string `json:"password" validate:"required,min=8,max=128"` // 密碼 (後端應使用 bcrypt 進行雜湊) PasswordConfirm string `json:"password_confirm" validate:"eqfield=Password"` // 確認密碼 AccountType string `json:"account_type" validate:"required,oneof=email phone any"` // 帳號型別 email phone any } type GetUserRoomsResp struct { Rooms []RoomResp `json:"rooms"` Total int64 `json:"total"` } type IsMemberResp struct { IsMember bool `json:"is_member"` } type ListMembersResp struct { Members []Member `json:"members"` Total int64 `json:"total"` } type ListMessagesReq struct { Authorization RoomID string `path:"room_id" validate:"required"` BucketDay string `json:"bucket_day,optional"` // yyyyMMdd,不提供則使用今天 PageSize int64 `json:"page_size,optional" validate:"omitempty,min=1,max=100"` // 每頁大小,預設 20 LastTS int64 `json:"last_ts,optional"` // 用於 cursor-based pagination } type ListMessagesResp struct { Messages []MessageResp `json:"messages"` Total int64 `json:"total,optional"` // 總數(僅第一頁返回) LastTS int64 `json:"last_ts,optional"` // 用於下一頁查詢 } type ListRoomsReq struct { Authorization Status string `json:"status,optional" validate:"omitempty,oneof=active archived"` // 狀態篩選 PageSize int `json:"page_size,optional" validate:"omitempty,min=1,max=100"` // 每頁大小,預設 20 LastID string `json:"last_id,optional"` // 用於 cursor-based pagination } type ListRoomsResp struct { Rooms []RoomResp `json:"rooms"` LastID string `json:"last_id,optional"` // 用於下一頁查詢 Total int64 `json:"total,optional"` // 總數(僅第一頁返回) } type LoginReq struct { AuthMethod string `json:"auth_method" validate:"required,oneof=credentials platform"` // 驗證類型 credentials platform LoginID string `json:"login_id" validate:"required,min=3,max=50"` // 信箱或手機號碼 Credentials *CredentialsPayload `json:"credentials,optional"` // AuthMethod 為 'credentials' 時使用 Platform *PlatformPayload `json:"platform,optional"` // AuthMethod 為 'platform' 時使用 } type LoginResp struct { UID string `json:"uid"` AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` TokenType string `json:"token_type"` // 通常固定為 "Bearer" } type Member struct { UID string `json:"uid"` Name string `json:"name"` Avatar string `json:"avatar"` } type MemberResp struct { RoomID string `json:"room_id"` UID string `json:"uid"` Role string `json:"role"` JoinedAt string `json:"joined_at"` UpdatedAt string `json:"updated_at"` } type MessageResp struct { RoomID string `json:"room_id"` BucketDay string `json:"bucket_day"` // yyyyMMdd TS int64 `json:"ts"` // timestamp UID string `json:"uid"` Content string `json:"content"` } type MyInfo struct { Platform string `json:"platform"` // 註冊平台 UID string `json:"uid"` // 用戶 UID AvatarURL *string `json:"avatar_url,omitempty"` // 頭像 URL FullName *string `json:"full_name,omitempty"` // 用戶全名 Nickname *string `json:"nickname,omitempty"` // 暱稱 GenderCode *string `json:"gender_code,omitempty"` // 性別代碼 Birthdate *string `json:"birthdate,omitempty"` // 生日 (格式: 1993-04-17) PhoneNumber *string `json:"phone_number,omitempty"` // 電話 IsPhoneVerified *bool `json:"is_phone_verified,omitempty"` // 手機是否已驗證 Email *string `json:"email,omitempty"` // 信箱 IsEmailVerified *bool `json:"is_email_verified,omitempty"` // 信箱是否已驗證 Address *string `json:"address,omitempty"` // 地址 UserStatus string `json:"user_status,omitempty"` // 用戶狀態 PreferredLanguage string `json:"preferred_language,omitempty"` // 偏好語言 Currency string `json:"currency,omitempty"` // 偏好幣種 AlarmCategory string `json:"alarm_category,omitempty"` // 告警狀態 PostCode *string `json:"post_code,omitempty"` // 郵遞區號 Carrier *string `json:"carrier,omitempty"` // 載具 Role string `json:"role"` // 角色 UpdateAt string `json:"update_at"` CreateAt string `json:"create_at"` } type PagerResp struct { Total int64 `json:"total"` Size int64 `json:"size"` Index int64 `json:"index"` } type PlatformPayload struct { Provider string `json:"provider" validate:"required,oneof=google line apple"` // 平台名稱,目前支援 google line apple Token string `json:"token" validate:"required"` // 平台提供的 Access Token 或 ID Token } type RefreshTokenReq struct { AccessToken string `json:"access_token" validate:"required"` RefreshToken string `json:"refresh_token" validate:"required"` } type RefreshTokenResp struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` // 可選:某些策略下刷新後也會換發新的 Refresh Token TokenType string `json:"token_type"` } type RemoveMemberReq struct { Authorization RoomID string `path:"room_id" validate:"required"` UID string `path:"uid" validate:"required"` // 要移除的用戶 UID } type RequestPasswordResetReq struct { Identifier string `json:"identifier" validate:"required"` // 使用者帳號 (信箱或手機) AccountType string `json:"account_type" validate:"required,oneof=email phone"` } type RequestVerificationCodeReq struct { Account string `json:"account" validate:"required` Purpose string `json:"purpose" validate:"required,oneof=email_verification phone_verification"` Authorization } type ResetPasswordReq struct { Identifier string `json:"identifier" validate:"required"` VerifyCode string `json:"verify_code" validate:"required"` // 來自上一步驗證通過的 Code,作為一種「票證」 Password string `json:"password" validate:"required,min=8,max=128"` // 新密碼 PasswordConfirm string `json:"password_confirm" validate:"eqfield=Password"` // 確認新密碼 } type Resp struct { Code string `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` Error interface{} `json:"error,omitempty"` // 可選的錯誤信息 } type RespOK struct { } type RoomReq struct { Authorization RoomID string `path:"room_id"` } type RoomResp struct { RoomID string `json:"room_id"` Name string `json:"name"` Status string `json:"status"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } type SendMessageReq struct { Authorization RoomID string `path:"room_id" validate:"required"` Content string `json:"content" validate:"required,min=1,max=5000"` // 訊息內容 } type SendMessageResp struct { RoomID string `json:"room_id"` BucketDay string `json:"bucket_day"` // yyyyMMdd TS int64 `json:"ts"` // timestamp UID string `json:"uid"` Content string `json:"content"` } type SubmitVerificationCodeReq struct { Account string `json:"account" validate:"required` Purpose string `json:"purpose" validate:"required,oneof=email_verification phone_verification"` VerifyCode string `json:"verify_code" validate:"required,len=6"` Authorization } type UpdateMemberRoleReq struct { Authorization RoomID string `path:"room_id" validate:"required"` UID string `path:"uid" validate:"required"` Role string `json:"role" validate:"required,oneof=admin member"` } type UpdatePasswordReq struct { CurrentPassword string `json:"current_password" validate:"required"` NewPassword string `json:"new_password" validate:"required,min=8,max=128"` NewPasswordConfirm string `json:"new_password_confirm" validate:"eqfield=NewPassword"` Authorization } type UpdateRoomReq struct { Authorization RoomID string `path:"room_id" validate:"required"` Name *string `json:"name,optional" validate:"omitempty,min=1,max=100"` Status *string `json:"status,optional" validate:"omitempty,oneof=active archived"` } type UpdateUserInfoReq struct { AvatarURL *string `json:"avatar_url,optional"` // 頭像 URL FullName *string `json:"full_name,optional"` // 用戶全名 Nickname *string `json:"nickname,optional"` // 暱稱 GenderCode *string `json:"gender_code,optional" validate:"omitempty,oneof=secret male female"` // 性別 Birthdate *string `json:"birthdate,optional"` // 生日 (格式: 1993-04-17) Address *string `json:"address,optional"` // 地址 PreferredLanguage *string `json:"preferred_language,optional" validate:"omitempty,oneof=zh-tw en-us"` // 語言 Currency *string `json:"currency,optional" validate:"omitempty,oneof=TWD USD"` // 貨幣代號 National *string `json:"national,optional"` // 國家 PostCode *string `json:"post_code,optional"` // 郵遞區號 Carrier *string `json:"carrier,optional"` // 載具 } type UploadImgReq struct { Authorization Content string `json:"content" validate:"required"` // base64 編碼的圖片內容 } type UploadResp struct { FileUrl string `json:"file_url"` // 文件訪問 URL FileSize int64 `json:"file_size,optional"` // 文件大小(bytes) MimeType string `json:"mime_type,optional"` // MIME 類型 } type UploadVideoReq struct { Authorization } type UserInfoResp struct { Platform string `json:"platform"` // 註冊平台 UID string `json:"uid"` // 用戶 UID AvatarURL string `json:"avatar_url"` // 頭像 URL FullName string `json:"full_name"` // 用戶全名 Nickname string `json:"nickname"` // 暱稱 GenderCode string `json:"gender_code"` // 性別代碼 Birthdate string `json:"birthdate"` // 生日 (格式: 1993-04-17) PhoneNumber string `json:"phone_number"` // 電話 IsPhoneVerified bool `json:"is_phone_verified"` // 手機是否已驗證 Email string `json:"email"` // 信箱 IsEmailVerified bool `json:"is_email_verified"` // 信箱是否已驗證 Address string `json:"address"` // 地址 UserStatus string `json:"user_status"` // 用戶狀態 PreferredLanguage string `json:"preferred_language"` // 偏好語言 Currency string `json:"currency"` // 偏好幣種 Role string `json:"role"` // 角色 UpdateAt string `json:"update_at"` CreateAt string `json:"create_at"` } type VerifyCodeReq struct { Identifier string `json:"identifier" validate:"required"` VerifyCode string `json:"verify_code" validate:"required,len=6"` }