PUT /practices/:id/full and PUT /exam-prep/practices/:id/full sync practice shell, question set settings, and questions in one request. Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
3.5 KiB
Go
62 lines
3.5 KiB
Go
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"`
|
|
}
|