package session import "time" // StartSessionInput captures requested session start preferences. type StartSessionInput struct { PlayerID string BearerToken string PreferredTheme string Difficulty string } // EndSessionInput captures session end request. type EndSessionInput struct { SessionID string Reason string } // SubmitAnswerInput captures answer submission payload. type SubmitAnswerInput struct { SessionID string Answer string } // RequestHintInput captures hint request payload. type RequestHintInput struct { SessionID string } // SessionQuestion is the normalized question payload from question-bank. type SessionQuestion struct { ID string `json:"id"` Theme string `json:"theme"` Text string `json:"text"` Hint string `json:"hint,omitempty"` Difficulty string `json:"difficulty"` } // SessionSummary is the canonical session response structure. type SessionSummary struct { ID string `json:"id"` PlayerID string `json:"player_id"` PlayerName string `json:"player_name"` Status string `json:"status"` TotalScore int `json:"total_score"` QuestionsAsked int `json:"questions_asked"` QuestionsCorrect int `json:"questions_correct"` HintsUsed int `json:"hints_used"` CurrentQuestionID string `json:"current_question_id,omitempty"` CurrentAttempts int `json:"current_attempts"` CurrentHintUsed bool `json:"current_hint_used"` StartTime time.Time `json:"start_time"` EndTime *time.Time `json:"end_time,omitempty"` RemainingSeconds int64 `json:"remaining_seconds"` } // StartSessionResult is returned for session start endpoint. type StartSessionResult struct { Session SessionSummary `json:"session"` Question SessionQuestion `json:"question"` } // SubmitAnswerResult is returned for answer endpoint. type SubmitAnswerResult struct { Session SessionSummary `json:"session"` Correct bool `json:"correct"` AwardedScore int `json:"awarded_score"` AttemptsRemaining int `json:"attempts_remaining"` NextQuestion *SessionQuestion `json:"next_question,omitempty"` SessionCompleted bool `json:"session_completed"` } // HintResult is returned for hint endpoint. type HintResult struct { Session SessionSummary `json:"session"` Hint string `json:"hint"` } // UserProfile is minimal user-service data required for session start. type UserProfile struct { ID string DisplayName string EmailVerified bool } // AnswerValidationResult is normalized question-bank answer match response. type AnswerValidationResult struct { Matched bool Score float64 }