{"openapi":"3.1.0","info":{"title":"CyKin public learning API","version":"0.1.0"},"paths":{"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Api Health Get"}}}}}}},"/private/login":{"get":{"summary":"Private Login","operationId":"private_login_private_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/private/me":{"get":{"summary":"Api Me","operationId":"api_me_private_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/private/progress":{"get":{"summary":"Api Progress","operationId":"api_progress_private_progress_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/private/progress/lesson":{"post":{"summary":"Api Progress Lesson","operationId":"api_progress_lesson_private_progress_lesson_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonProgress"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/private/progress/exercise":{"post":{"summary":"Api Progress Exercise","operationId":"api_progress_exercise_private_progress_exercise_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseAttempt"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalog":{"get":{"summary":"Api Catalog","operationId":"api_catalog_api_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Catalog Api Catalog Get"}}}}}}},"/api/courses/{level}/{area}/{language}":{"get":{"summary":"Api Course","operationId":"api_course_api_courses__level___area___language__get","parameters":[{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"area","in":"path","required":true,"schema":{"type":"string","title":"Area"}},{"name":"language","in":"path","required":true,"schema":{"type":"string","title":"Language"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Course Api Courses  Level   Area   Language  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lessons/{level}/{area}/{language}/{chapter}":{"get":{"summary":"Api Lesson","operationId":"api_lesson_api_lessons__level___area___language___chapter__get","parameters":[{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"area","in":"path","required":true,"schema":{"type":"string","title":"Area"}},{"name":"language","in":"path","required":true,"schema":{"type":"string","title":"Language"}},{"name":"chapter","in":"path","required":true,"schema":{"type":"integer","title":"Chapter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Lesson Api Lessons  Level   Area   Language   Chapter  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/books/{level}/{area}/{language}":{"get":{"summary":"Api Book","operationId":"api_book_api_books__level___area___language__get","parameters":[{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"area","in":"path","required":true,"schema":{"type":"string","title":"Area"}},{"name":"language","in":"path","required":true,"schema":{"type":"string","title":"Language"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/source":{"get":{"summary":"Api Source","description":"Serve a public Markdown reference so course navigation stays on CyKin.","operationId":"api_source_api_source_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":320,"title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{level}/{area}/{language}":{"get":{"summary":"Api Search","operationId":"api_search_api_search__level___area___language__get","parameters":[{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"area","in":"path","required":true,"schema":{"type":"string","title":"Area"}},{"name":"language","in":"path","required":true,"schema":{"type":"string","title":"Language"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":80,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Search Api Search  Level   Area   Language  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"summary":"Mcp Get","operationId":"mcp_get_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Mcp","operationId":"mcp_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"ExerciseAttempt":{"properties":{"level":{"type":"string","maxLength":50,"pattern":"^[a-z0-9-]+$","title":"Level"},"area":{"type":"string","maxLength":80,"pattern":"^[a-z0-9-]+$","title":"Area"},"language":{"type":"string","pattern":"^[a-z]{2}$","title":"Language"},"chapter":{"type":"integer","maximum":9999.0,"minimum":1.0,"title":"Chapter"},"status":{"type":"string","pattern":"^(attempted|completed)$","title":"Status"},"exercise_id":{"type":"string","pattern":"^EX[0-9]{3,4}$","title":"Exercise Id"},"answer":{"type":"string","maxLength":20000,"title":"Answer","default":""}},"type":"object","required":["level","area","language","chapter","status","exercise_id"],"title":"ExerciseAttempt"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LessonProgress":{"properties":{"level":{"type":"string","maxLength":50,"pattern":"^[a-z0-9-]+$","title":"Level"},"area":{"type":"string","maxLength":80,"pattern":"^[a-z0-9-]+$","title":"Area"},"language":{"type":"string","pattern":"^[a-z]{2}$","title":"Language"},"chapter":{"type":"integer","maximum":9999.0,"minimum":1.0,"title":"Chapter"},"status":{"type":"string","pattern":"^(in_progress|completed)$","title":"Status"}},"type":"object","required":["level","area","language","chapter","status"],"title":"LessonProgress"},"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"}}}}