package model type SmsSendRequest struct { Phone string `json:"phone" binding:"required"` } type SmsSendResponse struct { Code string `json:"code"` } type PhoneLoginRequest struct { Phone string `json:"phone" binding:"required"` Code string `json:"code" binding:"required"` } type PhoneLoginResponse struct { Token string `json:"token"` ExpiresAt int64 `json:"expires_at"` } type UserInfoResponse struct { Username string `json:"username"` Email string `json:"email"` } type EmailRegisterRequest struct { Email string `json:"email" binding:"required,email"` Password string `json:"password" binding:"required,min=6"` } type EmailRegisterResponse struct { Token string `json:"token"` ExpiresAt int64 `json:"expires_at"` } type EmailLoginRequest struct { Email string `json:"email" binding:"required,email"` Password string `json:"password" binding:"required"` } type EmailLoginResponse struct { Token string `json:"token"` ExpiresAt int64 `json:"expires_at"` } type GoogleAuthUrlRequest struct { RedirectURI string `form:"redirect_uri" binding:"required"` State string `form:"state" binding:"required"` } type GoogleAuthUrlResponse struct { AuthURL string `json:"auth_url"` } type GoogleOAuthCallbackRequest struct { Code string `json:"code" binding:"required"` State string `json:"state" binding:"required"` RedirectURI string `json:"redirect_uri" binding:"required"` } type GoogleOAuthCallbackResponse struct { Token string `json:"token"` ExpiresAt int64 `json:"expires_at"` } type GoogleUserInfo struct { ID string `json:"id"` Email string `json:"email"` Name string `json:"name"` Picture string `json:"picture"` VerifiedEmail bool `json:"verified_email"` }