package domain // FullUpdatePracticeInput updates a practice shell, its linked question set, and set questions in one request. type FullUpdatePracticeInput struct { Practice *FullUpdatePracticeShellInput `json:"practice,omitempty"` QuestionSet *FullUpdateQuestionSetInput `json:"question_set,omitempty"` Questions []FullUpdatePracticeQuestionItem `json:"questions,omitempty"` } // FullUpdatePracticeShellInput updates LMS or exam-prep practice metadata (parent is immutable). type FullUpdatePracticeShellInput struct { Title *string `json:"title,omitempty"` StoryDescription *string `json:"story_description,omitempty"` StoryImage *string `json:"story_image,omitempty"` PersonaID *int64 `json:"persona_id,omitempty"` QuestionSetID *int64 `json:"question_set_id,omitempty"` QuickTips *string `json:"quick_tips,omitempty"` PublishStatus *string `json:"publish_status,omitempty"` } // FullUpdateQuestionSetInput updates settings on the practice's linked question set. type FullUpdateQuestionSetInput struct { Title *string `json:"title,omitempty"` Description *string `json:"description,omitempty"` BannerImage *string `json:"banner_image,omitempty"` Persona *string `json:"persona,omitempty"` TimeLimitMinutes *int32 `json:"time_limit_minutes,omitempty"` PassingScore *int32 `json:"passing_score,omitempty"` ShuffleQuestions *bool `json:"shuffle_questions,omitempty"` Status *string `json:"status,omitempty"` IntroVideoURL *string `json:"intro_video_url,omitempty"` } // FullUpdatePracticeQuestionItem creates or updates a question and its membership in the practice question set. // Omit id to create a new question. display_order defaults to the item's position in the questions array (1-based). type FullUpdatePracticeQuestionItem struct { ID *int64 `json:"id,omitempty"` DisplayOrder *int32 `json:"display_order,omitempty"` QuestionText *string `json:"question_text,omitempty"` QuestionType *string `json:"question_type,omitempty"` QuestionTypeDefinitionID *int64 `json:"question_type_definition_id,omitempty"` DynamicPayload *DynamicQuestionPayload `json:"dynamic_payload,omitempty"` DifficultyLevel *string `json:"difficulty_level,omitempty"` Points *int32 `json:"points,omitempty"` Explanation *string `json:"explanation,omitempty"` Tips *string `json:"tips,omitempty"` VoicePrompt *string `json:"voice_prompt,omitempty"` SampleAnswerVoicePrompt *string `json:"sample_answer_voice_prompt,omitempty"` ImageURL *string `json:"image_url,omitempty"` Status *string `json:"status,omitempty"` Options []CreateQuestionOptionInput `json:"options,omitempty"` ShortAnswers []CreateShortAnswerInput `json:"short_answers,omitempty"` AudioCorrectAnswerText *string `json:"audio_correct_answer_text,omitempty"` } // FullUpdatePracticeResult is returned after a successful full practice update. type FullUpdatePracticeResult struct { Practice interface{} `json:"practice"` QuestionSet QuestionSet `json:"question_set"` Questions []QuestionWithDetails `json:"questions"` }