package requests // LoginRequest represents the login request body type LoginRequest struct { Username string `json:"username" binding:"required_without=Email"` Email string `json:"email" binding:"required_without=Username,omitempty,email"` Password string `json:"password" binding:"required,min=1"` } // RegisterRequest represents the registration request body type RegisterRequest struct { Username string `json:"username" binding:"required,min=3,max=150"` Email string `json:"email" binding:"required,email,max=254"` Password string `json:"password" binding:"required,min=8"` FirstName string `json:"first_name" binding:"max=150"` LastName string `json:"last_name" binding:"max=150"` } // VerifyEmailRequest represents the email verification request body type VerifyEmailRequest struct { Code string `json:"code" binding:"required,len=6"` } // ForgotPasswordRequest represents the forgot password request body type ForgotPasswordRequest struct { Email string `json:"email" binding:"required,email"` } // VerifyResetCodeRequest represents the verify reset code request body type VerifyResetCodeRequest struct { Email string `json:"email" binding:"required,email"` Code string `json:"code" binding:"required,len=6"` } // ResetPasswordRequest represents the reset password request body type ResetPasswordRequest struct { ResetToken string `json:"reset_token" binding:"required"` NewPassword string `json:"new_password" binding:"required,min=8"` } // UpdateProfileRequest represents the profile update request body type UpdateProfileRequest struct { Email *string `json:"email" binding:"omitempty,email,max=254"` FirstName *string `json:"first_name" binding:"omitempty,max=150"` LastName *string `json:"last_name" binding:"omitempty,max=150"` } // ResendVerificationRequest represents the resend verification email request type ResendVerificationRequest struct { // No body needed - uses authenticated user's email } // AppleSignInRequest represents the Apple Sign In request body type AppleSignInRequest struct { IDToken string `json:"id_token" binding:"required"` UserID string `json:"user_id" binding:"required"` // Apple's sub claim Email *string `json:"email"` // May be nil or private relay FirstName *string `json:"first_name"` LastName *string `json:"last_name"` } // GoogleSignInRequest represents the Google Sign In request body type GoogleSignInRequest struct { IDToken string `json:"id_token" binding:"required"` // Google ID token from Credential Manager }