{"openapi":"3.1.0","info":{"title":"TeacherFlow API","description":"REST API сервиса TeacherFlow — генерация вариантов учебных заданий, контроль сложности, экспорт и публичные ссылки для учеников. Документация: /docs · лендинг: /","version":"0.1.0"},"paths":{"/config/public":{"get":{"tags":["config"],"summary":"Public feature flags","operationId":"public_config_config_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicConfigResponse"}}}}}}},"/healthz":{"get":{"tags":["health"],"summary":"Liveness probe","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/readyz":{"get":{"tags":["health"],"summary":"Readiness probe","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadyResponse"}}}}}}},"/auth/signup":{"post":{"tags":["auth"],"summary":"Signup","operationId":"signup_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/classes":{"get":{"tags":["classes"],"summary":"List Classes","operationId":"list_classes_classes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ClassSummaryResponse"},"type":"array","title":"Response List Classes Classes Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["classes"],"summary":"Create Class","operationId":"create_class_classes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClassRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/classes/{class_id}":{"patch":{"tags":["classes"],"summary":"Patch Class","operationId":"patch_class_classes__class_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"class_id","in":"path","required":true,"schema":{"type":"integer","title":"Class Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchClassRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["classes"],"summary":"Delete Class","operationId":"delete_class_classes__class_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"class_id","in":"path","required":true,"schema":{"type":"integer","title":"Class Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/classes/{class_id}/members":{"get":{"tags":["classes"],"summary":"List Members","operationId":"list_members_classes__class_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"class_id","in":"path","required":true,"schema":{"type":"integer","title":"Class Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberResponse"},"title":"Response List Members Classes  Class Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["classes"],"summary":"Replace Members","operationId":"replace_members_classes__class_id__members_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"class_id","in":"path","required":true,"schema":{"type":"integer","title":"Class Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceMembersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberResponse"},"title":"Response Replace Members Classes  Class Id  Members Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/classes/{class_id}/members/import":{"post":{"tags":["classes"],"summary":"Import Members","operationId":"import_members_classes__class_id__members_import_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"class_id","in":"path","required":true,"schema":{"type":"integer","title":"Class Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportMembersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportMembersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/classes/{class_id}/members/import-docx":{"post":{"tags":["classes"],"summary":"Import Members Docx","operationId":"import_members_docx_classes__class_id__members_import_docx_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"class_id","in":"path","required":true,"schema":{"type":"integer","title":"Class Id"}},{"name":"apply","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Apply"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_members_docx_classes__class_id__members_import_docx_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportMembersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/subjects/catalog":{"get":{"tags":["subjects"],"summary":"School subject catalog (2026)","operationId":"get_subject_catalog_subjects_catalog_get","parameters":[{"name":"grade","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":11,"minimum":1},{"type":"null"}],"description":"Filter subjects available in this grade","title":"Grade"},"description":"Filter subjects available in this grade"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCatalogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks":{"get":{"tags":["tasks"],"summary":"List Tasks","operationId":"list_tasks_tasks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TaskResponse"},"type":"array","title":"Response List Tasks Tasks Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["tasks"],"summary":"Create Task","operationId":"create_task_tasks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/tasks/{task_id}":{"get":{"tags":["tasks"],"summary":"Get Task","operationId":"get_task_tasks__task_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tasks"],"summary":"Patch Task","operationId":"patch_task_tasks__task_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchTaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tasks"],"summary":"Delete Task","operationId":"delete_task_tasks__task_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/analyze":{"post":{"tags":["tasks"],"summary":"Analyze Task","description":"Run the analyzer on the reference task and cache profile on the task row.","operationId":"analyze_task_tasks__task_id__analyze_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeTaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeTaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/methodical-check":{"post":{"tags":["tasks"],"summary":"Methodical Check Reference","description":"Advisory methodical compliance of the REFERENCE task (эталон).\n\nReference-first prep tool: checks the эталон against the teacher's materials\n*before* generation and writes ``tasks.methodical_advice_json``. Decoupled\nand fail-open — advisor errors yield ``status=error`` with empty notes and\nnever block. Independent from the variant-set check; touches nothing in the\ngeneration path.","operationId":"methodical_check_reference_tasks__task_id__methodical_check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceMethodicalCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Methodical Check Reference Tasks  Task Id  Methodical Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/rollback":{"post":{"tags":["tasks"],"summary":"Rollback Task","description":"Restore reference text from a prior ``task_edited`` event snapshot.","operationId":"rollback_task_tasks__task_id__rollback_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackTaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/modification_events":{"get":{"tags":["tasks"],"summary":"List Modification Events","operationId":"list_modification_events_tasks__task_id__modification_events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModificationEventResponse"},"title":"Response List Modification Events Tasks  Task Id  Modification Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/upload":{"post":{"tags":["tasks"],"summary":"Create Task From File","operationId":"create_task_from_file_tasks_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_task_from_file_tasks_upload_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/variant_sets":{"post":{"tags":["variants"],"summary":"Create Variant Set","operationId":"create_variant_set_variant_sets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVariantSetRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVariantSetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/variant_sets/by_task/{task_id}/latest":{"get":{"tags":["variants"],"summary":"Get Latest Variant Set For Task","description":"Return the latest ready variant set for a task, if one exists.","operationId":"get_latest_variant_set_for_task_variant_sets_by_task__task_id__latest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/VariantSetResponse"},{"type":"null"}],"title":"Response Get Latest Variant Set For Task Variant Sets By Task  Task Id  Latest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}":{"get":{"tags":["variants"],"summary":"Get Variant Set","operationId":"get_variant_set_variant_sets__variant_set_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantSetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/methodical-check":{"post":{"tags":["variants"],"summary":"Methodical Check","description":"Advisory compliance of a finished set vs. methodical materials.\n\nDecoupled from generation: reads the already-stored variants + reference +\nselected materials, runs the advisor LLM once, and writes\n``variant_sets.methodical_advice_json``. Never touches idempotency_key or\nparams_json, and never creates a new set. Fail-open: advisor errors yield\n``status=error`` with empty notes; the set and its variants are untouched.","operationId":"methodical_check_variant_sets__variant_set_id__methodical_check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodicalCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Methodical Check Variant Sets  Variant Set Id  Methodical Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/variants/{variant_idx}/regenerate":{"post":{"tags":["variants"],"summary":"Regenerate Variant","description":"Regenerate a single variant in-place (Day 6).","operationId":"regenerate_variant_variant_sets__variant_set_id__variants__variant_idx__regenerate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"variant_idx","in":"path","required":true,"schema":{"type":"integer","title":"Variant Idx"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/variants/{variant_idx}":{"patch":{"tags":["variants"],"summary":"Patch Variant Content","description":"Save teacher edits to variant content and optional answer.","operationId":"patch_variant_content_variant_sets__variant_set_id__variants__variant_idx__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"variant_idx","in":"path","required":true,"schema":{"type":"integer","title":"Variant Idx"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchVariantContentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["variants"],"summary":"Delete Variant","description":"Remove one variant from a completed set (minimum 2 remain).","operationId":"delete_variant_variant_sets__variant_set_id__variants__variant_idx__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"variant_idx","in":"path","required":true,"schema":{"type":"integer","title":"Variant Idx"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/variants/{variant_idx}/rollback":{"post":{"tags":["variants"],"summary":"Rollback Variant","description":"Restore variant text from a prior ``variant_edited`` event snapshot.","operationId":"rollback_variant_variant_sets__variant_set_id__variants__variant_idx__rollback_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"variant_idx","in":"path","required":true,"schema":{"type":"integer","title":"Variant Idx"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackVariantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/variants/{variant_idx}/refine":{"post":{"tags":["variants"],"summary":"Refine Variant","description":"Refine one variant with a natural-language teacher instruction.","operationId":"refine_variant_variant_sets__variant_set_id__variants__variant_idx__refine_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"variant_idx","in":"path","required":true,"schema":{"type":"integer","title":"Variant Idx"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefineVariantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/assignments":{"post":{"tags":["assignments"],"summary":"Create Assignment","operationId":"create_assignment_variant_sets__variant_set_id__assignments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssignmentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/assignments/latest":{"get":{"tags":["assignments"],"summary":"Get Latest Assignment","operationId":"get_latest_assignment_variant_sets__variant_set_id__assignments_latest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AssignmentResponse"},{"type":"null"}],"title":"Response Get Latest Assignment Variant Sets  Variant Set Id  Assignments Latest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/assignments/{assignment_id}/shuffle":{"post":{"tags":["assignments"],"summary":"Shuffle Assignment","operationId":"shuffle_assignment_variant_sets__variant_set_id__assignments__assignment_id__shuffle_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"assignment_id","in":"path","required":true,"schema":{"type":"integer","title":"Assignment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShuffleAssignmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variant_sets/{variant_set_id}/assignments/{assignment_id}/export":{"post":{"tags":["assignments"],"summary":"Export Assignment Pdf","operationId":"export_assignment_pdf_variant_sets__variant_set_id__assignments__assignment_id__export_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"assignment_id","in":"path","required":true,"schema":{"type":"integer","title":"Assignment Id"}},{"name":"mode","in":"query","required":true,"schema":{"enum":["handouts","answer_key"],"type":"string","title":"Mode"}},{"name":"show_variant_number","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Variant Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generation_jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Generation Job","operationId":"get_generation_job_generation_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generation_jobs/{job_id}/stream":{"get":{"tags":["jobs"],"summary":"Stream Generation Job","description":"SSE stream of generation job progress (step labels + terminal status).","operationId":"stream_generation_job_generation_jobs__job_id__stream_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/exports/{variant_set_id}/pdf":{"get":{"tags":["exports"],"summary":"Export Variant Set Pdf","operationId":"export_variant_set_pdf_exports__variant_set_id__pdf_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"layout","in":"query","required":false,"schema":{"enum":["handout","compact"],"type":"string","default":"handout","title":"Layout"}},{"name":"include_answers","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Answers"}},{"name":"variant_idx","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":9,"minimum":0},{"type":"null"}],"title":"Variant Idx"}},{"name":"answers_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Answers Only"}},{"name":"show_variant_number","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Show Variant Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/exports/{variant_set_id}/docx":{"get":{"tags":["exports"],"summary":"Export Variant Set Docx","operationId":"export_variant_set_docx_exports__variant_set_id__docx_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"layout","in":"query","required":false,"schema":{"enum":["handout","compact"],"type":"string","default":"handout","title":"Layout"}},{"name":"include_answers","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Answers"}},{"name":"show_variant_number","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Show Variant Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/exports/{variant_set_id}/zip":{"get":{"tags":["exports"],"summary":"Export Variant Set Zip","description":"One PDF per variant in a ZIP; optional separate answers.pdf inside.","operationId":"export_variant_set_zip_exports__variant_set_id__zip_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Set Id"}},{"name":"include_answers","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Answers"}},{"name":"show_variant_number","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Show Variant Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_links":{"post":{"tags":["share"],"summary":"Create Share Link Deprecated","operationId":"create_share_link_deprecated_share_links_post","responses":{"410":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/variants/{variant_id}/share_links":{"post":{"tags":["share"],"summary":"Create Variant Card Share Link","operationId":"create_variant_card_share_link_variants__variant_id__share_links_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"variant_id","in":"path","required":true,"schema":{"type":"integer","title":"Variant Id"}},{"name":"ttl_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":30,"title":"Ttl Days"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assignment_rows/{row_id}/share_links":{"post":{"tags":["share"],"summary":"Create Assignment Row Share Link","operationId":"create_assignment_row_share_link_assignment_rows__row_id__share_links_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"integer","title":"Row Id"}},{"name":"ttl_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":30,"title":"Ttl Days"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share/{slug}":{"get":{"tags":["share"],"summary":"Get Public Share","operationId":"get_public_share_share__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PublicVariantCardResponse"},{"$ref":"#/components/schemas/PublicShareLegacyResponse"}],"title":"Response Get Public Share Share  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share/{slug}/pdf":{"get":{"tags":["share"],"summary":"Get Public Share Pdf","description":"Public handout PDF for a shared variant card (no auth, no answers).","operationId":"get_public_share_pdf_share__slug__pdf_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share/{slug}/docx":{"get":{"tags":["share"],"summary":"Get Public Share Docx","description":"Public handout DOCX for a shared variant card (no auth, no answers).","operationId":"get_public_share_docx_share__slug__docx_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/library":{"get":{"tags":["library"],"summary":"List Library","operationId":"list_library_library_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"subject","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Subject"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Tag"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TaskResponse"},"title":"Response List Library Library Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/library/{task_id}/pin":{"patch":{"tags":["library"],"summary":"Set Task Pinned","operationId":"set_task_pinned_library__task_id__pin_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinTaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media/upload":{"post":{"tags":["media"],"summary":"Upload Media","operationId":"upload_media_media_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_media_media_upload_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/media/{filename}":{"get":{"tags":["media"],"summary":"Get Media","description":"Public read — img src in saved HTML must load without auth.","operationId":"get_media_media__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/methodical":{"get":{"tags":["methodical"],"summary":"List Materials","operationId":"list_materials_methodical_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"subject","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Subject"}},{"name":"grade","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":11,"minimum":1},{"type":"null"}],"title":"Grade"}},{"name":"material_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Material Type"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MaterialResponse"},"title":"Response List Materials Methodical Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/methodical/upload":{"post":{"tags":["methodical"],"summary":"Upload Material","operationId":"upload_material_methodical_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_material_methodical_upload_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterialUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/methodical/{material_id}":{"get":{"tags":["methodical"],"summary":"Get Material","operationId":"get_material_methodical__material_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"material_id","in":"path","required":true,"schema":{"type":"integer","title":"Material Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterialDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["methodical"],"summary":"Patch Material","operationId":"patch_material_methodical__material_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"material_id","in":"path","required":true,"schema":{"type":"integer","title":"Material Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMaterialRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterialResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["methodical"],"summary":"Delete Material","operationId":"delete_material_methodical__material_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"material_id","in":"path","required":true,"schema":{"type":"integer","title":"Material Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/methodical/{material_id}/download":{"get":{"tags":["methodical"],"summary":"Download Material","operationId":"download_material_methodical__material_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"material_id","in":"path","required":true,"schema":{"type":"integer","title":"Material Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats/subject-metrics":{"get":{"tags":["stats"],"summary":"Subject Metrics","operationId":"subject_metrics_stats_subject_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectMetricsResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/stats/summary":{"get":{"tags":["stats"],"summary":"Stats Summary","operationId":"stats_summary_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsSummaryResponse"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AnalyzeTaskRequest":{"properties":{"fixture_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Fixture Id"}},"type":"object","title":"AnalyzeTaskRequest","description":"Optional fixture override for deterministic tests (LLM_BACKEND=fake)."},"AnalyzeTaskResponse":{"properties":{"analyzed_profile":{"additionalProperties":true,"type":"object","title":"Analyzed Profile"},"cache_hit":{"type":"boolean","title":"Cache Hit"}},"type":"object","required":["analyzed_profile","cache_hit"],"title":"AnalyzeTaskResponse"},"AssignmentMemberInput":{"properties":{"member_id":{"type":"integer","title":"Member Id"},"on_site":{"type":"boolean","title":"On Site","default":true},"remote":{"type":"boolean","title":"Remote","default":false}},"type":"object","required":["member_id"],"title":"AssignmentMemberInput"},"AssignmentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"variant_set_id":{"type":"integer","title":"Variant Set Id"},"class_id":{"type":"integer","title":"Class Id"},"class_name":{"type":"string","title":"Class Name"},"algorithm":{"type":"string","title":"Algorithm"},"seed":{"type":"string","title":"Seed"},"warnings":{"$ref":"#/components/schemas/AssignmentWarningsResponse"},"rows":{"items":{"$ref":"#/components/schemas/AssignmentRowResponse"},"type":"array","title":"Rows"}},"type":"object","required":["id","variant_set_id","class_id","class_name","algorithm","seed","warnings","rows"],"title":"AssignmentResponse"},"AssignmentRowResponse":{"properties":{"id":{"type":"integer","title":"Id"},"member_id":{"type":"integer","title":"Member Id"},"display_name":{"type":"string","title":"Display Name"},"variant_id":{"type":"integer","title":"Variant Id"},"variant_index":{"type":"integer","title":"Variant Index"},"on_site":{"type":"boolean","title":"On Site"},"remote":{"type":"boolean","title":"Remote"}},"type":"object","required":["id","member_id","display_name","variant_id","variant_index","on_site","remote"],"title":"AssignmentRowResponse"},"AssignmentWarningsResponse":{"properties":{"variants_repeat":{"type":"boolean","title":"Variants Repeat"},"unused_variants":{"type":"boolean","title":"Unused Variants"},"active_count":{"type":"integer","title":"Active Count"},"variant_count":{"type":"integer","title":"Variant Count"}},"type":"object","required":["variants_repeat","unused_variants","active_count","variant_count"],"title":"AssignmentWarningsResponse"},"Body_create_task_from_file_tasks_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title","default":""},"subject":{"type":"string","maxLength":50,"minLength":1,"title":"Subject","default":"math"},"grade_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Course Slug"}},"type":"object","required":["file"],"title":"Body_create_task_from_file_tasks_upload_post"},"Body_import_members_docx_classes__class_id__members_import_docx_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_members_docx_classes__class_id__members_import_docx_post"},"Body_upload_material_methodical_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"material_type":{"type":"string","maxLength":30,"title":"Material Type"},"scope":{"type":"string","maxLength":20,"title":"Scope","default":"general"},"subject":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Subject"},"grade_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Course Slug"},"topic_tag":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Topic Tag"}},"type":"object","required":["file","title","material_type"],"title":"Body_upload_material_methodical_upload_post"},"Body_upload_media_media_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_media_media_upload_post"},"ClassResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","created_at","updated_at"],"title":"ClassResponse"},"ClassSummaryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"member_count":{"type":"integer","title":"Member Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","member_count","created_at","updated_at"],"title":"ClassSummaryResponse"},"CourseEntry":{"properties":{"slug":{"type":"string","maxLength":50,"minLength":1,"title":"Slug"},"label":{"type":"string","maxLength":120,"minLength":1,"title":"Label"},"grades":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Grades"}},"type":"object","required":["slug","label","grades"],"title":"CourseEntry"},"CreateAssignmentRequest":{"properties":{"class_id":{"type":"integer","title":"Class Id"},"members":{"anyOf":[{"items":{"$ref":"#/components/schemas/AssignmentMemberInput"},"type":"array"},{"type":"null"}],"title":"Members"},"seed":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Seed"}},"type":"object","required":["class_id"],"title":"CreateAssignmentRequest"},"CreateClassRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"CreateClassRequest"},"CreateShareLinkResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"url":{"type":"string","title":"Url"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["slug","url","expires_at"],"title":"CreateShareLinkResponse"},"CreateTaskRequest":{"properties":{"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"subject":{"type":"string","maxLength":50,"minLength":1,"title":"Subject"},"grade_level":{"anyOf":[{"type":"integer","maximum":11.0,"minimum":1.0},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Course Slug"},"original_text":{"type":"string","minLength":1,"title":"Original Text"},"original_text_html":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Original Text Html"},"source_type":{"type":"string","enum":["text","pdf","docx","pptx","img"],"title":"Source Type","default":"text"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["title","subject","original_text"],"title":"CreateTaskRequest"},"CreateVariantSetRequest":{"properties":{"task_id":{"type":"integer","title":"Task Id"},"n_variants":{"type":"integer","maximum":10.0,"minimum":2.0,"title":"N Variants"},"fixture_id":{"type":"string","maxLength":100,"minLength":1,"title":"Fixture Id"},"expected_answer":{"type":"string","title":"Expected Answer","default":""},"params":{"additionalProperties":true,"type":"object","title":"Params"},"variation_types":{"anyOf":[{"items":{"type":"string","enum":["numbers","context","synonyms","order","units_names","step_reorder"]},"type":"array"},{"type":"null"}],"title":"Variation Types"},"quality_mode":{"type":"string","enum":["fast","full"],"title":"Quality Mode","default":"full"},"require_unique_answers":{"type":"boolean","title":"Require Unique Answers","default":true},"locked_fragments":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Locked Fragments"},"number_range":{"anyOf":[{"$ref":"#/components/schemas/NumberRangeParams"},{"type":"null"}]}},"type":"object","required":["task_id","n_variants","fixture_id"],"title":"CreateVariantSetRequest"},"CreateVariantSetResponse":{"properties":{"variant_set_id":{"type":"integer","title":"Variant Set Id"},"job_id":{"type":"integer","title":"Job Id"},"status":{"type":"string","enum":["pending","queued","running","ok","failed","partial"],"title":"Status"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay"}},"type":"object","required":["variant_set_id","job_id","status","idempotent_replay"],"title":"CreateVariantSetResponse"},"GenerationJobResponse":{"properties":{"id":{"type":"integer","title":"Id"},"variant_set_id":{"type":"integer","title":"Variant Set Id"},"status":{"type":"string","title":"Status"},"step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"error_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Detail"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"llm_wallclock_ms":{"type":"integer","title":"Llm Wallclock Ms"},"llm_calls_total":{"type":"integer","title":"Llm Calls Total","default":0},"llm_calls_skipped":{"type":"integer","title":"Llm Calls Skipped","default":0},"llm_tokens_total":{"type":"integer","title":"Llm Tokens Total","default":0}},"type":"object","required":["id","variant_set_id","status","step","error_code","error_detail","started_at","finished_at","llm_wallclock_ms"],"title":"GenerationJobResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"service":{"type":"string","title":"Service","default":"teacherflow-api"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["ok","timestamp"],"title":"HealthResponse"},"ImportMembersRequest":{"properties":{"text":{"type":"string","minLength":1,"title":"Text"},"apply":{"type":"boolean","title":"Apply","default":false}},"type":"object","required":["text"],"title":"ImportMembersRequest"},"ImportMembersResponse":{"properties":{"names":{"items":{"type":"string"},"type":"array","title":"Names"},"count":{"type":"integer","title":"Count"},"applied":{"type":"boolean","title":"Applied"},"members":{"anyOf":[{"items":{"$ref":"#/components/schemas/MemberResponse"},"type":"array"},{"type":"null"}],"title":"Members"}},"type":"object","required":["names","count","applied"],"title":"ImportMembersResponse"},"LatestJobResponse":{"properties":{"id":{"type":"integer","title":"Id"},"status":{"type":"string","title":"Status"},"step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"error_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Detail"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"llm_wallclock_ms":{"type":"integer","title":"Llm Wallclock Ms"},"llm_calls_total":{"type":"integer","title":"Llm Calls Total","default":0},"llm_calls_skipped":{"type":"integer","title":"Llm Calls Skipped","default":0},"llm_tokens_total":{"type":"integer","title":"Llm Tokens Total","default":0}},"type":"object","required":["id","status","step","error_code","error_detail","started_at","finished_at","llm_wallclock_ms"],"title":"LatestJobResponse"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"MaterialDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"material_type":{"type":"string","title":"Material Type"},"scope":{"type":"string","title":"Scope"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"grade_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Course Slug"},"topic_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Tag"},"source_type":{"type":"string","title":"Source Type"},"char_count":{"type":"integer","title":"Char Count"},"has_blob":{"type":"boolean","title":"Has Blob"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"extracted_text":{"type":"string","title":"Extracted Text"}},"type":"object","required":["id","title","material_type","scope","source_type","char_count","has_blob","created_at","updated_at","extracted_text"],"title":"MaterialDetailResponse"},"MaterialResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"material_type":{"type":"string","title":"Material Type"},"scope":{"type":"string","title":"Scope"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"grade_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Course Slug"},"topic_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Tag"},"source_type":{"type":"string","title":"Source Type"},"char_count":{"type":"integer","title":"Char Count"},"has_blob":{"type":"boolean","title":"Has Blob"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","title","material_type","scope","source_type","char_count","has_blob","created_at","updated_at"],"title":"MaterialResponse"},"MaterialUploadResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"material_type":{"type":"string","title":"Material Type"},"scope":{"type":"string","title":"Scope"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"grade_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Course Slug"},"topic_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Tag"},"source_type":{"type":"string","title":"Source Type"},"char_count":{"type":"integer","title":"Char Count"},"has_blob":{"type":"boolean","title":"Has Blob"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["id","title","material_type","scope","source_type","char_count","has_blob","created_at","updated_at","truncated"],"title":"MaterialUploadResponse"},"MediaUploadResponse":{"properties":{"url":{"type":"string","title":"Url"},"media_id":{"type":"string","title":"Media Id"},"content_type":{"type":"string","title":"Content Type"}},"type":"object","required":["url","media_id","content_type"],"title":"MediaUploadResponse"},"MemberPayload":{"properties":{"display_name":{"type":"string","maxLength":120,"minLength":1,"title":"Display Name"}},"type":"object","required":["display_name"],"title":"MemberPayload"},"MemberResponse":{"properties":{"id":{"type":"integer","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"sort_order":{"type":"integer","title":"Sort Order"}},"type":"object","required":["id","display_name","sort_order"],"title":"MemberResponse"},"MethodicalCheckRequest":{"properties":{"material_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array","maxItems":5},{"type":"null"}],"title":"Material Ids"},"auto":{"type":"boolean","title":"Auto","default":false},"fixture_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Fixture Id"}},"type":"object","title":"MethodicalCheckRequest","description":"Decoupled advisory check against methodical materials.\n\nEither pass explicit ``material_ids`` or set ``auto=true`` to auto-select\nthe user's materials matching the task's subject/grade (plus general ones)."},"ModificationEventResponse":{"properties":{"id":{"type":"integer","title":"Id"},"event_type":{"type":"string","title":"Event Type"},"task_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Task Id"},"variant_set_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Variant Set Id"},"variant_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Variant Id"},"detail":{"additionalProperties":true,"type":"object","title":"Detail"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","event_type","task_id","variant_set_id","variant_id","detail","created_at"],"title":"ModificationEventResponse"},"NumberRangeParams":{"properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"},"kind":{"type":"string","enum":["int","decimal","fraction"],"title":"Kind","default":"int"}},"type":"object","title":"NumberRangeParams"},"PatchClassRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"PatchClassRequest"},"PatchTaskRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Title"},"original_text":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Original Text"},"original_text_html":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Original Text Html"}},"type":"object","title":"PatchTaskRequest"},"PatchVariantContentRequest":{"properties":{"content":{"anyOf":[{"type":"string","maxLength":10000,"minLength":1},{"type":"null"}],"title":"Content"},"content_html":{"anyOf":[{"type":"string","maxLength":200000,"minLength":1},{"type":"null"}],"title":"Content Html"},"answer":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Answer"}},"type":"object","title":"PatchVariantContentRequest"},"PinTaskRequest":{"properties":{"pinned":{"type":"boolean","title":"Pinned"}},"type":"object","required":["pinned"],"title":"PinTaskRequest"},"PublicConfigResponse":{"properties":{"subject_catalog_enabled":{"type":"boolean","title":"Subject Catalog Enabled"},"subjects_all_enabled":{"type":"boolean","title":"Subjects All Enabled"},"demo_subject_slugs":{"items":{"type":"string"},"type":"array","title":"Demo Subject Slugs"},"validated_method_families":{"items":{"type":"string"},"type":"array","title":"Validated Method Families"}},"type":"object","required":["subject_catalog_enabled","subjects_all_enabled"],"title":"PublicConfigResponse"},"PublicShareLegacyResponse":{"properties":{"kind":{"type":"string","const":"variant_set_legacy","title":"Kind","default":"variant_set_legacy"},"title":{"type":"string","title":"Title"},"subject":{"type":"string","title":"Subject"},"variants":{"items":{"$ref":"#/components/schemas/PublicVariantResponse"},"type":"array","title":"Variants"},"view_count":{"type":"integer","title":"View Count"},"deprecated_notice":{"type":"string","title":"Deprecated Notice","default":"Устаревший формат ссылки: показаны все варианты без ответов. Попросите учителя отправить персональную ссылку на ваш вариант."}},"type":"object","required":["title","subject","variants","view_count"],"title":"PublicShareLegacyResponse"},"PublicVariantCardResponse":{"properties":{"kind":{"type":"string","const":"variant_card","title":"Kind","default":"variant_card"},"title":{"type":"string","title":"Title"},"subject":{"type":"string","title":"Subject"},"variant_index":{"type":"integer","title":"Variant Index"},"show_variant_number":{"type":"boolean","title":"Show Variant Number","default":false},"student_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student Label"},"content":{"type":"string","title":"Content"},"content_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Html"},"view_count":{"type":"integer","title":"View Count"}},"type":"object","required":["title","subject","variant_index","content","view_count"],"title":"PublicVariantCardResponse"},"PublicVariantResponse":{"properties":{"idx":{"type":"integer","title":"Idx"},"content":{"type":"string","title":"Content"},"content_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Html"}},"type":"object","required":["idx","content"],"title":"PublicVariantResponse"},"ReadyCheck":{"properties":{"status":{"type":"string","enum":["ok","fail","skipped"],"title":"Status"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["status"],"title":"ReadyCheck"},"ReadyResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"checks":{"additionalProperties":{"$ref":"#/components/schemas/ReadyCheck"},"type":"object","title":"Checks"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["ok","checks","timestamp"],"title":"ReadyResponse"},"ReferenceMethodicalCheckRequest":{"properties":{"auto":{"type":"boolean","title":"Auto","default":true},"material_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array","maxItems":5},{"type":"null"}],"title":"Material Ids"},"fixture_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Fixture Id"}},"type":"object","title":"ReferenceMethodicalCheckRequest","description":"Request for the advisory methodical check of the reference (эталон).\n\n``auto=True`` selects general + subject/grade-matching materials; otherwise\n``material_ids`` must list the materials explicitly. ``fixture_id`` is a\ndeterministic override for fake/recorded backends (defaults to\n``task-{id}``)."},"RefineVariantRequest":{"properties":{"instruction":{"type":"string","maxLength":500,"minLength":1,"title":"Instruction"}},"type":"object","required":["instruction"],"title":"RefineVariantRequest"},"RegenerateResponse":{"properties":{"job_id":{"type":"integer","title":"Job Id"},"variant_set_id":{"type":"integer","title":"Variant Set Id"},"variant_idx":{"type":"integer","title":"Variant Idx"},"status":{"type":"string","const":"queued","title":"Status"}},"type":"object","required":["job_id","variant_set_id","variant_idx","status"],"title":"RegenerateResponse"},"ReplaceMembersRequest":{"properties":{"members":{"items":{"$ref":"#/components/schemas/MemberPayload"},"type":"array","title":"Members"}},"type":"object","title":"ReplaceMembersRequest"},"RollbackTaskRequest":{"properties":{"event_id":{"type":"integer","title":"Event Id"}},"type":"object","required":["event_id"],"title":"RollbackTaskRequest"},"RollbackVariantRequest":{"properties":{"event_id":{"type":"integer","minimum":1.0,"title":"Event Id"}},"type":"object","required":["event_id"],"title":"RollbackVariantRequest"},"ShuffleAssignmentRequest":{"properties":{"seed":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Seed"}},"type":"object","title":"ShuffleAssignmentRequest"},"SignupRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"}},"type":"object","required":["email","password"],"title":"SignupRequest"},"StatsSummaryResponse":{"properties":{"tasks_count":{"type":"integer","title":"Tasks Count"},"variant_sets_count":{"type":"integer","title":"Variant Sets Count"},"generations_completed":{"type":"integer","title":"Generations Completed"},"exports_count":{"type":"integer","title":"Exports Count"},"avg_keep_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Keep Rate"},"total_llm_calls":{"type":"integer","title":"Total Llm Calls"}},"type":"object","required":["tasks_count","variant_sets_count","generations_completed","exports_count","avg_keep_rate","total_llm_calls"],"title":"StatsSummaryResponse"},"SubjectCatalogResponse":{"properties":{"catalog_version":{"type":"string","title":"Catalog Version"},"source_basis":{"items":{"type":"string"},"type":"array","title":"Source Basis"},"subjects":{"items":{"$ref":"#/components/schemas/SubjectEntry"},"type":"array","title":"Subjects"}},"type":"object","required":["catalog_version","source_basis","subjects"],"title":"SubjectCatalogResponse"},"SubjectEntry":{"properties":{"slug":{"type":"string","maxLength":50,"minLength":1,"title":"Slug"},"label":{"type":"string","maxLength":120,"minLength":1,"title":"Label"},"education_levels":{"items":{"type":"string","enum":["noo","ooo","soo"]},"type":"array","minItems":1,"title":"Education Levels"},"grades":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Grades"},"required_status":{"type":"string","enum":["required","conditional","profile_or_choice","required_transition"],"title":"Required Status"},"method_family":{"type":"string","enum":["math","language_native","language_foreign","literature","social_science","natural_science","informatics","arts","technology","physical_education","safety","project","generic"],"title":"Method Family"},"courses":{"items":{"$ref":"#/components/schemas/CourseEntry"},"type":"array","title":"Courses"},"legacy_aliases":{"items":{"type":"string"},"type":"array","title":"Legacy Aliases"}},"type":"object","required":["slug","label","education_levels","grades","required_status","method_family"],"title":"SubjectEntry"},"SubjectMetricRow":{"properties":{"subject_slug":{"type":"string","title":"Subject Slug"},"method_family":{"type":"string","title":"Method Family"},"generations_total":{"type":"integer","title":"Generations Total"},"generations_ok":{"type":"integer","title":"Generations Ok"},"generations_partial":{"type":"integer","title":"Generations Partial"},"generations_failed":{"type":"integer","title":"Generations Failed"},"repair_total":{"type":"integer","title":"Repair Total"},"judge_disagreements":{"type":"integer","title":"Judge Disagreements"},"json_validation_failures":{"type":"integer","title":"Json Validation Failures"},"manual_edits":{"type":"integer","title":"Manual Edits"},"success_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Success Rate"}},"type":"object","required":["subject_slug","method_family","generations_total","generations_ok","generations_partial","generations_failed","repair_total","judge_disagreements","json_validation_failures","manual_edits","success_rate"],"title":"SubjectMetricRow"},"SubjectMetricsResponse":{"properties":{"rows":{"items":{"$ref":"#/components/schemas/SubjectMetricRow"},"type":"array","title":"Rows"}},"type":"object","required":["rows"],"title":"SubjectMetricsResponse","description":"In-process counters since API worker start (ops/debug)."},"TaskResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"subject":{"type":"string","title":"Subject"},"grade_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Course Slug"},"subject_catalog_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Catalog Version"},"source_type":{"type":"string","title":"Source Type"},"original_text":{"type":"string","title":"Original Text"},"original_text_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Text Html"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"pinned":{"type":"boolean","title":"Pinned"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"analyzed_profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Analyzed Profile"},"methodical_advice":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Methodical Advice"}},"type":"object","required":["id","title","subject","source_type","original_text","tags","pinned","created_at"],"title":"TaskResponse"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserResponse"}},"type":"object","required":["access_token","user"],"title":"TokenResponse"},"UpdateMaterialRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Title"},"material_type":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Material Type"},"scope":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Scope"},"subject":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Subject"},"grade_level":{"anyOf":[{"type":"integer","maximum":11.0,"minimum":1.0},{"type":"null"}],"title":"Grade Level"},"course_slug":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Course Slug"},"topic_tag":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Topic Tag"},"extracted_text":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Extracted Text"}},"type":"object","title":"UpdateMaterialRequest"},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["id","email"],"title":"UserResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VariantResponse":{"properties":{"id":{"type":"integer","title":"Id"},"idx":{"type":"integer","title":"Idx"},"content":{"type":"string","title":"Content"},"content_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Html"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"},"judge_results_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Judge Results Json"},"is_locked_by_user":{"type":"boolean","title":"Is Locked By User"}},"type":"object","required":["id","idx","content","answer","judge_results_json","is_locked_by_user"],"title":"VariantResponse"},"VariantSetResponse":{"properties":{"id":{"type":"integer","title":"Id"},"task_id":{"type":"integer","title":"Task Id"},"n_variants":{"type":"integer","title":"N Variants"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"policy_name":{"type":"string","title":"Policy Name"},"policy_version":{"type":"string","title":"Policy Version"},"profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Profile"},"quality_mode":{"type":"string","enum":["fast","full"],"title":"Quality Mode","default":"full"},"variants":{"items":{"$ref":"#/components/schemas/VariantResponse"},"type":"array","title":"Variants"},"latest_job":{"anyOf":[{"$ref":"#/components/schemas/LatestJobResponse"},{"type":"null"}]},"methodical_advice":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Methodical Advice"}},"type":"object","required":["id","task_id","n_variants","status","created_at","policy_name","policy_version","profile","variants","latest_job"],"title":"VariantSetResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}