{"info":{"name":"Jutge API","description":"Jutge API","version":"2.0.0","url":"https://api.jutge.org"},"models":[["CredentialsIn",{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"]}],["ExamCredentialsIn",{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"},"exam":{"type":"string"},"exam_password":{"type":"string"}},"required":["email","password","exam","exam_password"]}],["CredentialsOut",{"type":"object","properties":{"token":{"type":"string"},"expiration":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.560Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.560Z","type":"string"},{"type":"number"}]},"user_uid":{"type":"string"},"error":{"type":"string"}},"required":["token","expiration","user_uid","error"]}],["CredentialsWithUsernameIn",{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}},"required":["username","password"]}],["Time",{"type":"object","properties":{"full_time":{"type":"string"},"int_timestamp":{"type":"integer"},"float_timestamp":{"type":"number"},"time":{"type":"string"},"date":{"type":"string"}},"required":["full_time","int_timestamp","float_timestamp","time","date"]}],["HomepageStats",{"type":"object","properties":{"users":{"type":"integer"},"problems":{"type":"integer"},"submissions":{"type":"integer"},"exams":{"type":"integer"},"contests":{"type":"integer"}},"required":["users","problems","submissions","exams","contests"]}],["ColorMapping",{"type":"object","patternProperties":{"^(.*)$":{"type":"object","patternProperties":{"^(.*)$":{"type":"string"}}}}}],["ApiVersion",{"type":"object","properties":{"version":{"type":"string"},"mode":{"type":"string"},"gitHash":{"type":"string"},"gitBranch":{"type":"string"},"gitDate":{"type":"string"}},"required":["version","mode","gitHash","gitBranch","gitDate"]}],["RequestInformation",{"type":"object","properties":{"url":{"type":"string"},"ip":{"type":"string"},"domain":{"type":"string"}},"required":["url","ip","domain"]}],["Language",{"type":"object","properties":{"language_id":{"description":"Id of the language","type":"string"},"eng_name":{"description":"English name of the language","type":"string"},"own_name":{"description":"Name of the language in its own language","type":"string"}},"required":["language_id","eng_name","own_name"]}],["Country",{"type":"object","properties":{"country_id":{"description":"Id of the country","type":"string"},"eng_name":{"description":"English name of the country","type":"string"}},"required":["country_id","eng_name"]}],["Compiler",{"type":"object","properties":{"compiler_id":{"description":"Id of the compiler","type":"string"},"name":{"type":"string"},"language":{"type":"string"},"extension":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags1":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags2":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"warning":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["compiler_id","name","language","extension","description","version","flags1","flags2","type","warning","status","notes"]}],["Driver",{"type":"object","properties":{"driver_id":{"description":"Id of the driver","type":"string"}},"required":["driver_id"]}],["Verdict",{"type":"object","properties":{"verdict_id":{"description":"Id of the verdict","type":"string"},"name":{"type":"string"},"description":{"type":"string"},"emoji":{"type":"string"}},"required":["verdict_id","name","description","emoji"]}],["Proglang",{"type":"object","properties":{"proglang_id":{"description":"Id of the proglang","type":"string"}},"required":["proglang_id"]}],["AllTables",{"type":"object","properties":{"languages":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Language"}}},"countries":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Country"}}},"compilers":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Compiler"}}},"drivers":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Driver"}}},"verdicts":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Verdict"}}},"proglangs":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Proglang"}}}},"required":["languages","countries","compilers","drivers","verdicts","proglangs"]}],["ProblemSummary",{"type":"object","properties":{"summary_1s":{"description":"One sentence summary","type":"string"},"summary_1p":{"description":"One paragraph summary","type":"string"},"keywords":{"description":"Comma separated keywords","type":"string"},"model":{"description":"system/model","type":"string"},"duration":{"description":"Time in seconds to generate","type":"number"}},"required":["summary_1s","summary_1p","keywords","model","duration"]}],["SolutionTags",{"type":"object","properties":{"tags":{"description":"Comma separated tags","type":"string"},"model":{"description":"system/model","type":"string"},"duration":{"description":"Time in seconds to generate","type":"number"}},"required":["tags","model","duration"]}],["BriefAbstractProblem",{"type":"object","properties":{"problem_nm":{"type":"string"},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"author_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"public":{"anyOf":[{"type":"integer"},{"type":"null"}]},"official":{"anyOf":[{"type":"integer"},{"type":"null"}]},"compilers":{"anyOf":[{"type":"string"},{"type":"null"}]},"driver_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"deprecation":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.557Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.557Z","type":"string"},{"type":"number"}]},"updated_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.557Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.557Z","type":"string"},{"type":"number"}]},"solution_tags":{"anyOf":[{"$ref":"SolutionTags"},{"type":"null"}]}},"required":["problem_nm","author","author_email","public","official","compilers","driver_id","type","deprecation","created_at","updated_at"]}],["BriefProblem",{"type":"object","properties":{"problem_id":{"type":"string"},"problem_nm":{"type":"string"},"language_id":{"type":"string"},"title":{"type":"string"},"original_language_id":{"type":"string"},"translator":{"anyOf":[{"type":"string"},{"type":"null"}]},"translator_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"checked":{"anyOf":[{"type":"integer"},{"type":"null"}]},"summary":{"anyOf":[{"$ref":"ProblemSummary"},{"type":"null"}]}},"required":["problem_id","problem_nm","language_id","title","original_language_id","translator","translator_email","checked"]}],["BriefProblemDict",{"type":"object","patternProperties":{"^(.*)$":{"$ref":"BriefProblem"}}}],["AbstractProblem",{"type":"object","properties":{"problem_nm":{"type":"string"},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"author_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"public":{"anyOf":[{"type":"integer"},{"type":"null"}]},"official":{"anyOf":[{"type":"integer"},{"type":"null"}]},"compilers":{"anyOf":[{"type":"string"},{"type":"null"}]},"driver_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"deprecation":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.557Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.557Z","type":"string"},{"type":"number"}]},"updated_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.557Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.557Z","type":"string"},{"type":"number"}]},"solution_tags":{"anyOf":[{"$ref":"SolutionTags"},{"type":"null"}]},"problems":{"$ref":"BriefProblemDict"}},"required":["problem_nm","author","author_email","public","official","compilers","driver_id","type","deprecation","created_at","updated_at","problems"]}],["AbstractProblemSuppl",{"type":"object","properties":{"compilers_with_ac":{"type":"array","items":{"type":"string"}},"proglangs_with_ac":{"type":"array","items":{"type":"string"}}},"required":["compilers_with_ac","proglangs_with_ac"]}],["ProblemSuppl",{"type":"object","properties":{"compilers_with_ac":{"type":"array","items":{"type":"string"}},"proglangs_with_ac":{"type":"array","items":{"type":"string"}},"official_solution_checks":{"type":"object","patternProperties":{"^(.*)$":{"type":"boolean"}}},"handler":{}},"required":["compilers_with_ac","proglangs_with_ac","official_solution_checks","handler"]}],["Problem",{"type":"object","properties":{"problem_id":{"type":"string"},"problem_nm":{"type":"string"},"language_id":{"type":"string"},"title":{"type":"string"},"original_language_id":{"type":"string"},"translator":{"anyOf":[{"type":"string"},{"type":"null"}]},"translator_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"checked":{"anyOf":[{"type":"integer"},{"type":"null"}]},"summary":{"anyOf":[{"$ref":"ProblemSummary"},{"type":"null"}]},"abstract_problem":{"$ref":"BriefAbstractProblem"}},"required":["problem_id","problem_nm","language_id","title","original_language_id","translator","translator_email","checked","abstract_problem"]}],["Testcase",{"type":"object","properties":{"name":{"type":"string"},"input_b64":{"type":"string"},"correct_b64":{"type":"string"}},"required":["name","input_b64","correct_b64"]}],["ProblemRich",{"type":"object","properties":{"problem_id":{"type":"string"},"problem_nm":{"type":"string"},"language_id":{"type":"string"},"title":{"type":"string"},"original_language_id":{"type":"string"},"translator":{"anyOf":[{"type":"string"},{"type":"null"}]},"translator_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"checked":{"anyOf":[{"type":"integer"},{"type":"null"}]},"summary":{"anyOf":[{"$ref":"ProblemSummary"},{"type":"null"}]},"abstract_problem":{"$ref":"BriefAbstractProblem"},"sample_testcases":{"type":"array","items":{"$ref":"Testcase"}},"html_statement":{"type":"string"}},"required":["problem_id","problem_nm","language_id","title","original_language_id","translator","translator_email","checked","abstract_problem","sample_testcases","html_statement"]}],["SearchResult",{"type":"object","properties":{"problem_nm":{"type":"string"},"score":{"type":"number"}},"required":["problem_nm","score"]}],["SearchResults",{"type":"array","items":{"$ref":"SearchResult"}}],["AllKeys",{"type":"object","properties":{"problems":{"type":"array","items":{"type":"string"}},"enrolled_courses":{"type":"array","items":{"type":"string"}},"available_courses":{"type":"array","items":{"type":"string"}},"lists":{"type":"array","items":{"type":"string"}}},"required":["problems","enrolled_courses","available_courses","lists"]}],["Profile",{"type":"object","properties":{"user_uid":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"username":{"anyOf":[{"type":"string"},{"type":"null"}]},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"webpage":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"affiliation":{"anyOf":[{"type":"string"},{"type":"null"}]},"birth_year":{"anyOf":[{"type":"integer"},{"type":"null"}]},"max_subsxhour":{"type":"integer"},"max_subsxday":{"type":"integer"},"administrator":{"type":"integer"},"instructor":{"type":"integer"},"parent_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone_id":{"type":"string"},"compiler_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"language_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["user_uid","email","name","username","nickname","webpage","description","affiliation","birth_year","max_subsxhour","max_subsxday","administrator","instructor","parent_email","country_id","timezone_id","compiler_id","language_id"]}],["NewProfile",{"type":"object","properties":{"name":{"type":"string"},"birth_year":{"type":"integer"},"nickname":{"type":"string"},"webpage":{"type":"string"},"affiliation":{"type":"string"},"description":{"type":"string"},"country_id":{"type":"string"},"timezone_id":{"type":"string"}}}],["NewPassword",{"type":"object","properties":{"oldPassword":{"type":"string"},"newPassword":{"type":"string"}},"required":["oldPassword","newPassword"]}],["DateValue",{"type":"object","properties":{"date":{"type":"integer"},"value":{"type":"integer"}},"required":["date","value"]}],["HeatmapCalendar",{"type":"array","items":{"$ref":"DateValue"}}],["Distribution",{"type":"object","patternProperties":{"^(.*)$":{"type":"integer"}}}],["AllDistributions",{"type":"object","properties":{"verdicts":{"$ref":"Distribution"},"compilers":{"$ref":"Distribution"},"proglangs":{"$ref":"Distribution"},"submissions_by_hour":{"$ref":"Distribution"},"submissions_by_weekday":{"$ref":"Distribution"}},"required":["verdicts","compilers","proglangs","submissions_by_hour","submissions_by_weekday"]}],["Dashboard",{"type":"object","properties":{"stats":{"$ref":"Distribution"},"heatmap":{"$ref":"HeatmapCalendar"},"distributions":{"$ref":"AllDistributions"}},"required":["stats","heatmap","distributions"]}],["Submission",{"type":"object","properties":{"problem_id":{"type":"string"},"submission_id":{"type":"string"},"compiler_id":{"type":"string"},"annotation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"type":"string"},"time_in":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.587Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.587Z","type":"string"},{"type":"number"}]},"veredict":{"anyOf":[{"type":"string"},{"type":"null"}]},"veredict_info":{"anyOf":[{"type":"string"},{"type":"null"}]},"veredict_publics":{"anyOf":[{"type":"string"},{"type":"null"}]},"ok_publics_but_wrong":{"type":"integer"}},"required":["problem_id","submission_id","compiler_id","annotation","state","time_in","veredict","veredict_info","veredict_publics","ok_publics_but_wrong"]}],["NewSubmissionIn",{"type":"object","properties":{"problem_id":{"type":"string"},"compiler_id":{"type":"string"},"annotation":{"type":"string"}},"required":["problem_id","compiler_id","annotation"]}],["NewSubmissionOut",{"type":"object","properties":{"submission_id":{"type":"string"}},"required":["submission_id"]}],["SubmissionAnalysis",{"type":"object","properties":{"testcase":{"type":"string"},"execution":{"type":"string"},"verdict":{"type":"string"}},"required":["testcase","execution","verdict"]}],["TestcaseAnalysis",{"type":"object","properties":{"testcase":{"type":"string"},"execution":{"type":"string"},"verdict":{"type":"string"},"input_b64":{"type":"string"},"output_b64":{"type":"string"},"expected_b64":{"type":"string"}},"required":["testcase","execution","verdict","input_b64","output_b64","expected_b64"]}],["GetGameResultIn",{"type":"object","properties":{"problem_id":{"type":"string"},"submission_id":{"type":"string"}},"required":["problem_id","submission_id"]}],["MatchSchema",{"type":"object","properties":{"seed":{"type":"number"},"status":{"type":"array","items":{"type":"number"}},"players":{"type":"array","items":{"type":"string"}},"scores":{"type":"array","items":{"type":"number"}}},"required":["seed","status","players","scores"]}],["ProblemSchema",{"type":"object","properties":{"author":{"type":"string"},"description":{"type":"string"},"email":{"type":"string"},"gamename":{"type":"string"},"title":{"type":"string"},"version":{"type":"number"}},"required":["author","description","email","gamename","title","version"]}],["SubmissionSchema",{"type":"object","properties":{"compiler_id":{"type":"string"},"description":{"type":"string"},"email":{"type":"string"},"problem_id":{"type":"string"}},"required":["compiler_id","description","email","problem_id"]}],["GetGameResultOut",{"type":"object","properties":{"games":{"type":"array","items":{"$ref":"MatchSchema"}},"problem":{"$ref":"ProblemSchema"},"submission":{"$ref":"SubmissionSchema"}},"required":["games","problem","submission"]}],["GetGameOutputIn",{"type":"object","properties":{"problem_id":{"type":"string"},"submission_id":{"type":"string"},"game_id":{"type":"integer"}},"required":["problem_id","submission_id","game_id"]}],["CodeMetrics",{"type":"object","properties":{"comment_ratio":{"type":"number"},"cyclomatic_complexity":{"type":"number"},"fanout_external":{"type":"number"},"fanout_internal":{"type":"number"},"halstead_bugprop":{"type":"number"},"halstead_difficulty":{"type":"number"},"halstead_effort":{"type":"number"},"halstead_timerequired":{"type":"number"},"halstead_volume":{"type":"number"},"loc":{"type":"number"},"maintainability_index":{"type":"number"},"operands_sum":{"type":"number"},"operands_uniq":{"type":"number"},"operators_sum":{"type":"number"},"operators_uniq":{"type":"number"},"pylint":{"type":"number"},"tiobe":{"type":"number"},"tiobe_compiler":{"type":"number"},"tiobe_complexity":{"type":"number"},"tiobe_coverage":{"type":"number"},"tiobe_duplication":{"type":"number"},"tiobe_fanout":{"type":"number"},"tiobe_functional":{"type":"number"},"tiobe_security":{"type":"number"},"tiobe_standard":{"type":"number"}},"required":["comment_ratio","cyclomatic_complexity","fanout_external","fanout_internal","halstead_bugprop","halstead_difficulty","halstead_effort","halstead_timerequired","halstead_volume","loc","maintainability_index","operands_sum","operands_uniq","operators_sum","operators_uniq","pylint","tiobe","tiobe_compiler","tiobe_complexity","tiobe_coverage","tiobe_duplication","tiobe_fanout","tiobe_functional","tiobe_security","tiobe_standard"]}],["PublicProfile",{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"username":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["email","name","username"]}],["BriefCourse",{"type":"object","properties":{"course_nm":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"annotation":{"anyOf":[{"type":"string"},{"type":"null"}]},"public":{"type":"integer"},"official":{"type":"integer"}},"required":["course_nm","title","description","annotation","public","official"]}],["Course",{"type":"object","properties":{"course_nm":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"annotation":{"anyOf":[{"type":"string"},{"type":"null"}]},"public":{"type":"integer"},"official":{"type":"integer"},"owner":{"$ref":"PublicProfile"},"lists":{"type":"array","items":{"type":"string"}}},"required":["course_nm","title","description","annotation","public","official","owner","lists"]}],["ListItem",{"type":"object","properties":{"problem_nm":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["problem_nm","description"]}],["BriefList",{"type":"object","properties":{"list_nm":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"annotation":{"anyOf":[{"type":"string"},{"type":"null"}]},"public":{"type":"integer"},"official":{"type":"integer"}},"required":["list_nm","title","description","annotation","public","official"]}],["List",{"type":"object","properties":{"list_nm":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"annotation":{"anyOf":[{"type":"string"},{"type":"null"}]},"public":{"type":"integer"},"official":{"type":"integer"},"items":{"type":"array","items":{"$ref":"ListItem"}},"owner":{"$ref":"PublicProfile"}},"required":["list_nm","title","description","annotation","public","official","items","owner"]}],["ReadyExam",{"type":"object","properties":{"exam_key":{"description":"Unique key for the exam, in the format \"username:exam_nm\"","type":"string"},"title":{"type":"string"},"place":{"type":"string"},"description":{"type":"string"},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.588Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.588Z","type":"string"},{"type":"number"}]},"running_time":{"type":"integer"},"contest":{"type":"boolean"}},"required":["exam_key","title","place","description","exp_time_start","running_time","contest"]}],["RunningExamProblem",{"type":"object","properties":{"problem_nm":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"weight":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["problem_nm","icon","caption","weight"]}],["RunningExamDocument",{"type":"object","properties":{"document_nm":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"required":["document_nm","title","description"]}],["RunningExam",{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"time_start":{"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.588Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.588Z","type":"string"},{"type":"number"}]},{"type":"null"}]},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.588Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.588Z","type":"string"},{"type":"number"}]},"running_time":{"type":"integer"},"contest":{"type":"integer"},"problems":{"type":"array","items":{"$ref":"RunningExamProblem"}},"compilers":{"type":"array","items":{"type":"string"}},"documents":{"type":"array","items":{"$ref":"RunningExamDocument"}}},"required":["title","description","instructions","time_start","exp_time_start","running_time","contest","problems","compilers","documents"]}],["AbstractStatus",{"type":"object","properties":{"problem_nm":{"type":"string"},"nb_submissions":{"type":"integer"},"nb_pending_submissions":{"type":"integer"},"nb_accepted_submissions":{"type":"integer"},"nb_rejected_submissions":{"type":"integer"},"nb_scored_submissions":{"type":"integer"},"status":{"type":"string"}},"required":["problem_nm","nb_submissions","nb_pending_submissions","nb_accepted_submissions","nb_rejected_submissions","nb_scored_submissions","status"]}],["Status",{"type":"object","properties":{"problem_id":{"type":"string"},"problem_nm":{"type":"string"},"nb_submissions":{"type":"integer"},"nb_pending_submissions":{"type":"integer"},"nb_accepted_submissions":{"type":"integer"},"nb_rejected_submissions":{"type":"integer"},"nb_scored_submissions":{"type":"integer"},"status":{"type":"string"}},"required":["problem_id","problem_nm","nb_submissions","nb_pending_submissions","nb_accepted_submissions","nb_rejected_submissions","nb_scored_submissions","status"]}],["Award",{"type":"object","properties":{"award_id":{"type":"string"},"time":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.587Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.587Z","type":"string"},{"type":"number"}]},"type":{"type":"string"},"icon":{"type":"string"},"title":{"type":"string"},"info":{"type":"string"},"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"submission":{"anyOf":[{"$ref":"Submission"},{"type":"null"}]}},"required":["award_id","time","type","icon","title","info","youtube","submission"]}],["BriefAward",{"type":"object","properties":{"award_id":{"type":"string"},"time":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.587Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.587Z","type":"string"},{"type":"number"}]},"type":{"type":"string"},"icon":{"type":"string"},"title":{"type":"string"},"info":{"type":"string"},"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["award_id","time","type","icon","title","info","youtube"]}],["Document",{"type":"object","properties":{"document_nm":{"param":"document_nm","description":"Document name","type":"string"},"title":{"description":"The title of the document","type":"string"},"description":{"description":"The description of the document","default":"","type":"string"},"created_at":{"description":"The date when the document was created","anyOf":[{"description":"The date when the document was created","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},"updated_at":{"description":"The date when the document was last updated","anyOf":[{"description":"The date when the document was last updated","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]}},"required":["document_nm","title","description","created_at","updated_at"]}],["DocumentCreation",{"type":"object","properties":{"document_nm":{"param":"document_nm","description":"Document name","type":"string"},"title":{"description":"The title of the document","type":"string"},"description":{"description":"The description of the document","default":"","type":"string"}},"required":["document_nm","title","description"]}],["DocumentUpdate",{"$ref":"DocumentCreation"}],["InstructorBriefList",{"type":"object","properties":{"list_nm":{"description":"The name of the list","type":"string"},"title":{"description":"The title of the list","type":"string"},"description":{"description":"The description of the list","default":"","type":"string"},"annotation":{"description":"Additional private annotations for the list","default":"","type":"string"},"official":{"description":"Indicates if the list is official (1) or not (0) TODO","default":0,"type":"integer"},"public":{"description":"Indicates if the list is public (1) or private (0) TODO","default":0,"type":"integer"},"created_at":{"description":"Creation date of the list","anyOf":[{"description":"Creation date of the list","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.586Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.586Z","type":"string"},{"type":"number"}]},"updated_at":{"description":"Last update date of the list","anyOf":[{"description":"Last update date of the list","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.586Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.586Z","type":"string"},{"type":"number"}]}},"required":["list_nm","title","description","annotation","official","public","created_at","updated_at"]}],["InstructorListItem",{"description":"Provide a problem_nm or a description, not both or none","type":"object","properties":{"problem_nm":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["problem_nm","description"]}],["InstructorListItems",{"type":"array","items":{"$ref":"InstructorListItem"}}],["InstructorList",{"type":"object","properties":{"list_nm":{"description":"The name of the list","type":"string"},"title":{"description":"The title of the list","type":"string"},"description":{"description":"The description of the list","default":"","type":"string"},"annotation":{"description":"Additional private annotations for the list","default":"","type":"string"},"official":{"description":"Indicates if the list is official (1) or not (0) TODO","default":0,"type":"integer"},"public":{"description":"Indicates if the list is public (1) or private (0) TODO","default":0,"type":"integer"},"created_at":{"description":"Creation date of the list","anyOf":[{"description":"Creation date of the list","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.586Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.586Z","type":"string"},{"type":"number"}]},"updated_at":{"description":"Last update date of the list","anyOf":[{"description":"Last update date of the list","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.586Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.586Z","type":"string"},{"type":"number"}]},"items":{"$ref":"InstructorListItems"}},"required":["list_nm","title","description","annotation","official","public","created_at","updated_at","items"]}],["InstructorListCreation",{"type":"object","properties":{"list_nm":{"description":"The name of the list","type":"string"},"title":{"description":"The title of the list","type":"string"},"description":{"description":"The description of the list","default":"","type":"string"},"annotation":{"description":"Additional private annotations for the list","default":"","type":"string"},"official":{"description":"Indicates if the list is official (1) or not (0) TODO","default":0,"type":"integer"},"public":{"description":"Indicates if the list is public (1) or private (0) TODO","default":0,"type":"integer"},"items":{"$ref":"InstructorListItems"}},"required":["list_nm","title","description","annotation","official","public","items"]}],["InstructorListUpdate",{"$ref":"InstructorListCreation"}],["InstructorBriefCourse",{"type":"object","properties":{"course_nm":{"description":"The name of the course","type":"string"},"title":{"description":"The title of the course","type":"string"},"description":{"description":"The description of the course","default":"","type":"string"},"annotation":{"description":"Additional private annotations for the course","default":"","type":"string"},"official":{"description":"Indicates if the course is official (1) or not (0) TODO","default":0,"type":"integer"},"public":{"description":"Indicates if the course is public (1) or private (0) TODO","default":0,"type":"integer"},"created_at":{"description":"Creation date of the course","anyOf":[{"description":"Creation date of the course","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.578Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.578Z","type":"string"},{"type":"number"}]},"updated_at":{"description":"Last update date of the course","anyOf":[{"description":"Last update date of the course","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.578Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.578Z","type":"string"},{"type":"number"}]}},"required":["course_nm","title","description","annotation","official","public","created_at","updated_at"]}],["CourseMembers",{"type":"object","properties":{"invited":{"type":"array","items":{"type":"string"}},"enrolled":{"type":"array","items":{"type":"string"}},"pending":{"type":"array","items":{"type":"string"}}},"required":["invited","enrolled","pending"]}],["InstructorCourse",{"type":"object","properties":{"course_nm":{"description":"The name of the course","type":"string"},"title":{"description":"The title of the course","type":"string"},"description":{"description":"The description of the course","default":"","type":"string"},"annotation":{"description":"Additional private annotations for the course","default":"","type":"string"},"official":{"description":"Indicates if the course is official (1) or not (0) TODO","default":0,"type":"integer"},"public":{"description":"Indicates if the course is public (1) or private (0) TODO","default":0,"type":"integer"},"created_at":{"description":"Creation date of the course","anyOf":[{"description":"Creation date of the course","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.578Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.578Z","type":"string"},{"type":"number"}]},"updated_at":{"description":"Last update date of the course","anyOf":[{"description":"Last update date of the course","type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.578Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.578Z","type":"string"},{"type":"number"}]},"lists":{"type":"array","items":{"type":"string"}},"students":{"$ref":"CourseMembers"},"tutors":{"$ref":"CourseMembers"}},"required":["course_nm","title","description","annotation","official","public","created_at","updated_at","lists","students","tutors"]}],["StudentProfile",{"type":"object","properties":{"name":{"description":"The name of the student","type":"string"},"email":{"description":"The email of the student","type":"string"}},"required":["name","email"]}],["InstructorCourseCreation",{"type":"object","properties":{"course_nm":{"description":"The name of the course","type":"string"},"title":{"description":"The title of the course","type":"string"},"description":{"description":"The description of the course","default":"","type":"string"},"annotation":{"description":"Additional private annotations for the course","default":"","type":"string"},"official":{"description":"Indicates if the course is official (1) or not (0) TODO","default":0,"type":"integer"},"public":{"description":"Indicates if the course is public (1) or private (0) TODO","default":0,"type":"integer"},"lists":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"students":{"anyOf":[{"$ref":"CourseMembers"},{"type":"null"}]},"tutors":{"anyOf":[{"$ref":"CourseMembers"},{"type":"null"}]}},"required":["course_nm","title","description","annotation","official","public","lists","students","tutors"]}],["InstructorCourseUpdate",{"type":"object","properties":{"course_nm":{"description":"Name of the course","type":"string"},"title":{"anyOf":[{"description":"Title of the course","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"description":"Description of the course","default":"","type":"string"},{"type":"null"}]},"annotation":{"anyOf":[{"description":"Additional private annotations for the course","default":"","type":"string"},{"type":"null"}]},"official":{"anyOf":[{"description":"Indicates if the course is official (1) or not (0) TODO","default":0,"type":"integer"},{"type":"null"}]},"public":{"anyOf":[{"description":"Indicates if the course is public (1) or private (0) TODO","default":0,"type":"integer"},{"type":"null"}]},"lists":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"students":{"anyOf":[{"$ref":"CourseMembers"},{"type":"null"}]},"tutors":{"anyOf":[{"$ref":"CourseMembers"},{"type":"null"}]}},"required":["course_nm","title","description","annotation","official","public","lists","students","tutors"]}],["InstructorExamCourse",{"type":"object","properties":{"course_nm":{"type":"string"},"title":{"type":"string"}},"required":["course_nm","title"]}],["InstructorExamDocument",{"$ref":"RunningExamDocument"}],["InstructorExamCompiler",{"type":"object","properties":{"compiler_id":{"type":"string"},"name":{"type":"string"}},"required":["compiler_id","name"]}],["InstructorExamProblem",{"type":"object","properties":{"problem_nm":{"type":"string"},"weight":{"anyOf":[{"default":1,"type":"number"},{"type":"null"}]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["problem_nm","weight","icon","caption"]}],["InstructorExamStudent",{"type":"object","properties":{"email":{"type":"string"},"name":{"anyOf":[{"default":null,"type":"string"},{"type":"null"}]},"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"restricted":{"default":0,"type":"integer"},"annotation":{"anyOf":[{"default":null,"type":"string"},{"type":"null"}]},"result":{"anyOf":[{"default":null,"type":"string"},{"type":"null"}]},"finished":{"default":0,"type":"integer"},"banned":{"default":0,"type":"integer"},"reason_ban":{"anyOf":[{"default":null,"type":"string"},{"type":"null"}]},"inc":{"anyOf":[{"default":null,"type":"integer"},{"type":"null"}]},"reason_inc":{"anyOf":[{"default":null,"type":"string"},{"type":"null"}]},"taken_exam":{"default":0,"type":"integer"},"emergency_password":{"anyOf":[{"default":null,"type":"string"},{"type":"null"}]},"invited":{"default":0,"type":"integer"}},"required":["email","name","code","restricted","annotation","result","finished","banned","reason_ban","inc","reason_inc","taken_exam","emergency_password","invited"]}],["InstructorExamCreation",{"type":"object","properties":{"exam_nm":{"type":"string"},"course_nm":{"type":"string"},"title":{"type":"string"},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.583Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.583Z","type":"string"},{"type":"number"}]}},"required":["exam_nm","title","exp_time_start"]}],["InstructorExamUpdate",{"type":"object","properties":{"exam_nm":{"type":"string"},"course_nm":{"type":"string"},"title":{"type":"string"},"place":{"default":"","type":"string"},"code":{"type":"string"},"description":{"default":"","type":"string"},"time_start":{"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.583Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.583Z","type":"string"},{"type":"number"}]},{"type":"null"}]},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.583Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.583Z","type":"string"},{"type":"number"}]},"running_time":{"type":"integer"},"visible_submissions":{"default":0,"type":"integer"},"started_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"contest":{"default":0,"type":"integer"},"instructions":{"default":"","type":"string"},"avatars":{"anyOf":[{"type":"string"},{"type":"null"}]},"anonymous":{"default":1,"type":"integer"}},"required":["exam_nm","title","place","code","description","time_start","exp_time_start","running_time","visible_submissions","started_by","contest","instructions","avatars","anonymous"]}],["InstructorNewExamStudent",{"type":"object","properties":{"email":{"type":"string"},"invited":{"default":0,"type":"integer"},"restricted":{"default":0,"type":"integer"},"code":{"default":"","type":"string"},"emergency_password":{"default":"","type":"string"},"annotation":{"default":"","type":"string"}},"required":["email","invited","restricted","annotation"]}],["InstructorExamSubmissionsOptions",{"type":"object","properties":{"problems":{"description":"Comma-separated list of problem names (without language). Use `all` to include all problems.","default":"all","type":"string"},"include_source":{"description":"Include source code","default":true,"type":"boolean"},"include_pdf":{"description":"Include source code formated in PDF","default":true,"type":"boolean"},"include_metadata":{"description":"Include metadata in the code","default":true,"type":"boolean"},"only_last":{"description":"Only include last submission of each problem for each student","default":true,"type":"boolean"},"font_size":{"description":"Font size on the PDF","default":10,"type":"number"},"layout":{"description":"Layout (vertical|horizontal|double)","default":"vertical","type":"string"},"obscure_private_testcases_names":{"description":"Obscure private testcases names","default":false,"type":"boolean"}},"required":["problems","include_source","include_pdf","include_metadata","only_last","font_size","layout","obscure_private_testcases_names"]}],["Pack",{"type":"object","properties":{"message":{"type":"string"},"href":{"type":"string"}},"required":["message","href"]}],["InstructorBriefExam",{"type":"object","properties":{"exam_nm":{"type":"string"},"title":{"type":"string"},"place":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"time_start":{"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},{"type":"null"}]},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},"running_time":{"type":"integer"},"visible_submissions":{"type":"integer"},"started_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"contest":{"type":"integer"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatars":{"anyOf":[{"type":"string"},{"type":"null"}]},"anonymous":{"type":"integer"},"course":{"$ref":"InstructorExamCourse"},"created_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},"updated_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]}},"required":["exam_nm","title","place","description","code","time_start","exp_time_start","running_time","visible_submissions","started_by","contest","instructions","avatars","anonymous","course","created_at","updated_at"]}],["InstructorExam",{"type":"object","properties":{"exam_nm":{"type":"string"},"title":{"type":"string"},"place":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"time_start":{"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},{"type":"null"}]},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},"running_time":{"type":"integer"},"visible_submissions":{"type":"integer"},"started_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"contest":{"type":"integer"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatars":{"anyOf":[{"type":"string"},{"type":"null"}]},"anonymous":{"type":"integer"},"course":{"$ref":"InstructorExamCourse"},"created_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},"updated_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.582Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.582Z","type":"string"},{"type":"number"}]},"documents":{"type":"array","items":{"$ref":"RunningExamDocument"}},"compilers":{"type":"array","items":{"$ref":"InstructorExamCompiler"}},"problems":{"type":"array","items":{"$ref":"InstructorExamProblem"}},"students":{"type":"array","items":{"$ref":"InstructorExamStudent"}}},"required":["exam_nm","title","place","description","code","time_start","exp_time_start","running_time","visible_submissions","started_by","contest","instructions","avatars","anonymous","course","created_at","updated_at","documents","compilers","problems","students"]}],["ExamStatisticsEntry",{"type":"object","properties":{"minute":{"type":"integer"},"ok":{"type":"integer"},"ko":{"type":"integer"}},"required":["minute","ok","ko"]}],["ExamStatistics",{"type":"object","properties":{"submissions":{"type":"object","patternProperties":{"^(.*)$":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}}}},"statuses":{"type":"object","patternProperties":{"^(.*)$":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}}}},"timeline":{"type":"array","items":{"$ref":"ExamStatisticsEntry"}},"compilers":{"type":"object","patternProperties":{"^(.*)$":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}}}},"proglangs":{"type":"object","patternProperties":{"^(.*)$":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}}}}},"required":["submissions","statuses","timeline","compilers","proglangs"]}],["RankingResult",{"type":"object","properties":{"problem_nm":{"type":"string"},"submissions":{"type":"integer"},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"type":"number"},"time":{"type":"number"},"penalty":{"type":"number"},"wrongs":{"type":"number"}},"required":["problem_nm","submissions","verdict","score","time","penalty","wrongs"]}],["RankingRow",{"type":"object","properties":{"position":{"anyOf":[{"type":"integer"},{"type":"null"}]},"name":{"type":"string"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"type":"number"},"time":{"type":"number"},"invited":{"type":"boolean"},"submissions":{"type":"integer"},"rankingResults":{"type":"array","items":{"$ref":"RankingResult"}}},"required":["position","name","avatar","score","time","invited","submissions","rankingResults"]}],["Ranking",{"type":"array","items":{"$ref":"RankingRow"}}],["WebStream",{"type":"object","properties":{"title":{"type":"string"},"id":{"type":"string"}},"required":["title","id"]}],["ProblemGenerationInfo",{"type":"object","properties":{"title":{"type":"string"},"prompt":{"type":"string"},"model":{"type":"string"}},"required":["title","prompt","model"]}],["Deprecation",{"type":"object","properties":{"problem_nm":{"param":"problem_nm","type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["problem_nm","reason"]}],["SharingSettings",{"type":"object","properties":{"problem_nm":{"param":"problem_nm","type":"string"},"passcode":{"anyOf":[{"type":"string"},{"type":"null"}]},"shared_testcases":{"type":"boolean"},"shared_solutions":{"type":"boolean"}},"required":["problem_nm","passcode","shared_testcases","shared_solutions"]}],["ProblemAnonymousSubmission",{"type":"object","properties":{"time":{"type":"string"},"anonymous_user_id":{"type":"string"},"problem_id":{"type":"string"},"verdict":{"type":"string"},"compiler_id":{"type":"string"},"proglang":{"type":"string"}},"required":["time","anonymous_user_id","problem_id","verdict","compiler_id","proglang"]}],["ShareWithInp",{"type":"object","properties":{"problem_nm":{"param":"problem_nm","type":"string"},"emails":{"type":"array","items":{"type":"string"}},"text":{"type":"string"}},"required":["problem_nm","emails","text"]}],["ProblemPopularityBucketEntry",{"type":"object","properties":{"log2_bucket":{"type":"number"},"bucket_min":{"type":"number"},"bucket_max":{"type":"number"},"problem_count":{"type":"number"}},"required":["log2_bucket","bucket_min","bucket_max","problem_count"]}],["SubmissionQuery",{"type":"object","properties":{"email":{"type":"string"},"problem_nm":{"type":"string"},"problem_id":{"type":"string"},"time":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.586Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.586Z","type":"string"},{"type":"number"}]},"ip":{"type":"string"},"verdict":{"type":"string"}},"required":["email","problem_nm","problem_id","time","ip","verdict"]}],["SubmissionsQuery",{"type":"array","items":{"$ref":"SubmissionQuery"}}],["TagsDict",{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"type":"string"}}}}],["ChatMessage",{"type":"object","properties":{"role":{"description":"The role of the message: system|user|assistant.","type":"string"},"content":{"description":"The content of the message.","type":"string"}},"required":["role","content"]}],["ChatPrompt",{"type":"object","properties":{"model":{"description":"The model to use. Models are listed in the `supportedModels` endpoint.","type":"string"},"label":{"description":"A label for the chat. This is used to identify the chat in the usage audit.","type":"string"},"messages":{"type":"array","items":{"$ref":"ChatMessage"}},"addUsage":{"description":"If true, the usage of the model will be added at the end of the response as a JSON object between `---USAGE_JSON_START---` and `---USAGE_JSON_END---`.","type":"boolean"}},"required":["model","label","messages","addUsage"]}],["LlmUsageEntry",{"type":"object","properties":{"id":{"type":"string"},"created_at":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.586Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.586Z","type":"string"},{"type":"number"}]},"model":{"type":"string"},"label":{"type":"string"},"duration":{"type":"number"},"input_tokens":{"type":"number"},"output_tokens":{"type":"number"},"finish_reason":{"type":"string"}},"required":["id","created_at","model","label","duration","input_tokens","output_tokens","finish_reason"]}],["CreateImageInput",{"type":"object","properties":{"model":{"description":"The image model to use. See supportedImageModels.","type":"string"},"label":{"description":"A label for the request (usage audit).","type":"string"},"prompt":{"description":"The prompt to generate the image from.","type":"string"},"size":{"description":"Size (e.g. 1024x1024) or aspect ratio (e.g. 16:9).","type":"string"}},"required":["model","label","prompt","size"]}],["SubmitPlayerInput",{"type":"object","properties":{"problem_id":{"type":"string"},"annotation":{"type":"string"},"source_code":{"type":"string"},"callback_url":{"type":"string"}},"required":["problem_id","annotation","source_code","callback_url"]}],["SubmitPlayerOutput",{"$ref":"NewSubmissionOut"}],["SubmitMatchInput",{"type":"object","properties":{"problem_id":{"type":"string"},"annotation":{"type":"string"},"source_codes":{"type":"array","items":{"type":"string"}},"callback_url":{"type":"string"}},"required":["problem_id","annotation","source_codes","callback_url"]}],["SubmitMatchOutput",{"$ref":"NewSubmissionOut"}],["GetGameResultOutput",{"type":"object","properties":{"todo":{"type":"string"}},"required":["todo"]}],["GetMatchSubmissionInput",{"$ref":"GetGameResultIn"}],["GetMatchSubmissionOutput",{"$ref":"GetGameResultOutput"}],["InstructorEntry",{"type":"object","properties":{"username":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["username","name","email"]}],["InstructorEntries",{"type":"array","items":{"$ref":"InstructorEntry"}}],["UserCreation",{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"administrator":{"default":0,"type":"number"},"instructor":{"default":0,"type":"number"}},"required":["email","name","username","password","administrator","instructor"]}],["UserEmailAndName",{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}},"required":["email","name"]}],["UsersEmailsAndNames",{"type":"array","items":{"$ref":"UserEmailAndName"}}],["ProfileForAdmin",{"type":"object","properties":{"user_id":{"type":"string"},"user_uid":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"username":{"anyOf":[{"type":"string"},{"type":"null"}]},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"webpage":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"affiliation":{"anyOf":[{"type":"string"},{"type":"null"}]},"birth_year":{"anyOf":[{"type":"integer"},{"type":"null"}]},"max_subsxhour":{"type":"integer"},"max_subsxday":{"type":"integer"},"administrator":{"type":"integer"},"instructor":{"type":"integer"},"parent_email":{"anyOf":[{"type":"string"},{"type":"null"}]},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone_id":{"type":"string"},"compiler_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"language_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"locked":{"type":"integer"},"banned":{"type":"integer"},"nb_bans":{"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"creation_date":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.560Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.560Z","type":"string"},{"type":"number"}]}},"required":["user_id","user_uid","email","name","username","nickname","webpage","description","affiliation","birth_year","max_subsxhour","max_subsxday","administrator","instructor","parent_email","country_id","timezone_id","compiler_id","language_id","locked","banned","nb_bans","reason","creation_date"]}],["DatabasesInfoItem",{"type":"object","properties":{"name":{"type":"string"},"size":{"type":"number"},"mtime":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.554Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.554Z","type":"string"},{"type":"number"}]}},"required":["name","size","mtime"]}],["DatabasesInfo",{"type":"array","items":{"$ref":"DatabasesInfoItem"}}],["FreeDiskSpaceItem",{"type":"object","properties":{"disk":{"type":"string"},"filesystem":{"type":"string"},"size":{"type":"string"},"used":{"type":"string"},"available":{"type":"string"},"use":{"type":"string"},"mounted":{"type":"string"}},"required":["disk","filesystem","size","used","available","use","mounted"]}],["NullableFreeDiskSpaceItem",{"anyOf":[{"$ref":"FreeDiskSpaceItem"},{"type":"null"}]}],["FreeDiskSpace",{"type":"object","patternProperties":{"^(.*)$":{"$ref":"NullableFreeDiskSpaceItem"}}}],["RecentConnectedUsers",{"type":"object","properties":{"latest_hour":{"type":"integer"},"latest_day":{"type":"integer"},"latest_week":{"type":"integer"},"latest_month":{"type":"integer"},"latest_year":{"type":"integer"}},"required":["latest_hour","latest_day","latest_week","latest_month","latest_year"]}],["RecentSubmissions",{"type":"object","properties":{"latest_01_minutes":{"type":"integer"},"latest_05_minutes":{"type":"integer"},"latest_15_minutes":{"type":"integer"},"latest_60_minutes":{"type":"integer"}},"required":["latest_01_minutes","latest_05_minutes","latest_15_minutes","latest_60_minutes"]}],["RecentLoadAverages",{"type":"object","properties":{"latest_01_minutes":{"type":"number"},"latest_05_minutes":{"type":"number"},"latest_15_minutes":{"type":"number"}},"required":["latest_01_minutes","latest_05_minutes","latest_15_minutes"]}],["SubmissionsHistograms",{"type":"object","properties":{"latest_hour":{"type":"array","items":{"type":"integer"}},"latest_day":{"type":"array","items":{"type":"integer"}}},"required":["latest_hour","latest_day"]}],["Zombies",{"type":"object","properties":{"ies":{"type":"integer"},"pendings":{"type":"integer"}},"required":["ies","pendings"]}],["AdminDashboard",{"type":"object","properties":{"databases_info":{"$ref":"DatabasesInfo"},"free_disk_space":{"$ref":"FreeDiskSpace"},"recent_load_averages":{"$ref":"RecentLoadAverages"},"recent_connected_users":{"$ref":"RecentConnectedUsers"},"recent_submissions":{"$ref":"RecentSubmissions"},"submissions_histograms":{"$ref":"SubmissionsHistograms"},"zombies":{"$ref":"Zombies"}},"required":["databases_info","free_disk_space","recent_load_averages","recent_connected_users","recent_submissions","submissions_histograms","zombies"]}],["UpcomingExam",{"type":"object","properties":{"exam_nm":{"type":"string"},"title":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"exp_time_start":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.555Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.555Z","type":"string"},{"type":"number"}]},"running_time":{"type":"integer"},"students":{"type":"integer"},"name":{"type":"string"},"contest":{"type":"integer"}},"required":["exam_nm","title","username","email","exp_time_start","running_time","students","name","contest"]}],["UpcomingExams",{"type":"array","items":{"$ref":"UpcomingExam"}}],["SubmissionQueueItem",{"type":"object","properties":{"submission_uid":{"type":"string"},"submission_id":{"type":"string"},"problem_id":{"type":"string"},"compiler_id":{"type":"string"},"time_in":{"anyOf":[{"type":"Date"},{"format":"date","default":"2026-04-12T07:51:01.559Z","type":"string"},{"format":"date-time","default":"2026-04-12T07:51:01.559Z","type":"string"},{"type":"number"}]},"exam_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"veredict":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_id":{"type":"string"},"user__name":{"type":"string"},"problem__title":{"type":"string"}},"required":["submission_uid","submission_id","problem_id","compiler_id","time_in","exam_id","veredict","user_id","user__name","problem__title"]}],["SubmissionQueueItems",{"type":"array","items":{"$ref":"SubmissionQueueItem"}}],["QueueQuery",{"type":"object","properties":{"verdicts":{"type":"array","items":{"type":"string"}},"limit":{"type":"integer"}},"required":["verdicts","limit"]}],["UserRankingEntry",{"type":"object","properties":{"user_id":{"type":"string"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":"string"},"problems":{"type":"integer"}},"required":["user_id","nickname","email","name","problems"]}],["UserRanking",{"type":"array","items":{"$ref":"UserRankingEntry"}}],["DateRange",{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"]}],["TwoFloats",{"type":"object","properties":{"a":{"description":"A first real number","type":"number"},"b":{"description":"A second real number","type":"number"}},"required":["a","b"]}],["TwoInts",{"type":"object","properties":{"a":{"description":"A first integer","type":"integer"},"b":{"description":"A second integer","type":"integer"}},"required":["a","b"]}],["Name",{"type":"object","properties":{"name":{"description":"A string","type":"string"}},"required":["name"]}],["SomeType",{"type":"object","properties":{"a":{"default":"foo","description":"A string","type":"string"},"b":{"default":1,"description":"An integer","type":"integer"},"c":{"default":true,"description":"A boolean","type":"boolean"},"d":{"description":"Another boolean","type":"boolean"}},"required":["a","b"]}]],"root":{"name":"root","description":"This is the root module of the Jutge API.","endpoints":[],"submodules":[{"name":"clients","endpoints":[{"name":"python","summary":"Get Python client.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"typescript","summary":"Get TypeScript client.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"javascript","summary":"Get JavaScript client.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"java","summary":"Get Java client.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"cpp","summary":"Get Cpp client.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"php","summary":"Get PHP client.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"}],"submodules":[],"description":"Module to download clients."},{"name":"auth","endpoints":[{"name":"login","summary":"Login: Get an access token.","description":"Returns a token on success. Throws UnauthorizedError on failure.","actor":"anyActor","domains":["jutge"],"input":{"$ref":"CredentialsIn"},"output":{"$ref":"CredentialsOut"},"ifiles":"none","ofiles":"none"},{"name":"logout","summary":"Logout: Discard the access token.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"loginExam","summary":"Login to an exam: Get an access token for an exam.","description":"Returns a token on success. Throws UnauthorizedError on failure.","actor":"anyActor","domains":["exam","contest"],"input":{"$ref":"ExamCredentialsIn"},"output":{"$ref":"CredentialsOut"},"ifiles":"none","ofiles":"none"},{"name":"loginWithUsername","summary":"Login: Get an access token.","description":"Returns a token on success. Throws UnauthorizedError on failure. Created for backward compatibility, do not use.","actor":"anyActor","domains":["jutge"],"input":{"$ref":"CredentialsWithUsernameIn"},"output":{"$ref":"CredentialsOut"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"Module to provide authentication functions."},{"name":"misc","endpoints":[{"name":"getApiVersion","summary":"Get version information of the API.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"ApiVersion"},"ifiles":"none","ofiles":"none"},{"name":"getRequestInformation","summary":"Get requestion information.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"RequestInformation"},"ifiles":"none","ofiles":"none"},{"name":"getFortune","summary":"Get a fortune message.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getTime","summary":"Get server time.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"Time"},"ifiles":"none","ofiles":"none"},{"name":"getHomepageStats","summary":"Get homepage stats.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"HomepageStats"},"ifiles":"none","ofiles":"none"},{"name":"getLogo","summary":"Get Jutge.org logo as a PNG file.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"getAvatarPacks","summary":"Returns all packs of avatars.","description":"Avatars are used in exams and contests to identify students or participants.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none","clientTtl":3600},{"name":"getExamIcons","summary":"Returns all exam icons.","description":"Exam icon are used in exams and contests to identify problems.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"TagsDict"},"ifiles":"none","ofiles":"none","clientTtl":3600},{"name":"getColors","summary":"Returns color mappings using colornames notation.","description":"Color mappings may be used to colorize keys in the frontends. Color names are as defined in https://github.com/timoxley/colornames","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"ColorMapping"},"ifiles":"none","ofiles":"none"},{"name":"getHexColors","summary":"Returns color mappings using hexadecimal color notation.","description":"Color mappings may be used to colorize keys in the frontends. ","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"ColorMapping"},"ifiles":"none","ofiles":"none"},{"name":"getDemosForCompiler","summary":"Returns code demos for a given compiler as a dictionary of base64 codes indexed by problem_nm.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"compiler_id","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"string"}}},"ifiles":"none","ofiles":"none","clientTtl":3600}],"submodules":[],"description":"Module with miscellaneous endpoints"},{"name":"tables","endpoints":[{"name":"get","summary":"Returns all tables.","description":"Returns all compilers, countries, drivers, languages, proglangs, and verdicts in a single request. This data does not change often, so you should only request it once per session.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"AllTables"},"ifiles":"none","ofiles":"none","clientTtl":300},{"name":"getLanguages","summary":"Returns all languages.","description":"Returns all languages as a dictionary of objects, indexed by id.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Language"}}},"ifiles":"none","ofiles":"none","clientTtl":300},{"name":"getCountries","summary":"Returns all countries.","description":"Returns all countries as a dictionary of objects, indexed by id.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Country"}}},"ifiles":"none","ofiles":"none","clientTtl":300},{"name":"getCompilers","summary":"Returns all compilers.","description":"Returns all compilers as a dictionary of objects, indexed by id.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Compiler"}}},"ifiles":"none","ofiles":"none","clientTtl":300},{"name":"getDrivers","summary":"Returns all drivers.","description":"Returns all drivers as a dictionary of objects, indexed by id.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Driver"}}},"ifiles":"none","ofiles":"none","clientTtl":300},{"name":"getVerdicts","summary":"Returns all verdicts.","description":"Returns all verdicts as a dictionary of objects, indexed by id.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Verdict"}}},"ifiles":"none","ofiles":"none","clientTtl":300},{"name":"getProglangs","summary":"Returns all proglangs.","description":"Returns all proglangs (porgramming languages) as a dictionary of objects, indexed by id.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Proglang"}}},"ifiles":"none","ofiles":"none","clientTtl":300}],"submodules":[],"description":"Module with quite static tables"},{"name":"problems","endpoints":[{"name":"getAllAbstractProblems","summary":"Get all available abstract problems.","description":"Includes problems.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"AbstractProblem"}}},"ifiles":"none","ofiles":"none","clientTtl":3600},{"name":"getAbstractProblems","summary":"Get available abstract problems whose keys are in `problem_nms`.","description":"Includes problems.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nms","description":"A comma separated list of `problem_nm`s","example":"P11111, P22222, P33333","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"AbstractProblem"}}},"ifiles":"none","ofiles":"none"},{"name":"getAbstractProblemsInList","summary":"Get available abstract problems that belong to a list.","description":"Includes problems.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"list_key","description":"ID of the list, as it appears in jutge.org","examples":["Jutge:Prog_01"],"type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"AbstractProblem"}}},"ifiles":"none","ofiles":"none"},{"name":"getAbstractProblem","summary":"Get an abstract problem.","description":"Includes problems","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","description":"The `problem_nm`","examples":["P68688"],"type":"string"},"output":{"$ref":"AbstractProblem"},"ifiles":"none","ofiles":"none"},{"name":"getAbstractProblemSuppl","summary":"Get supplementary information of an abstract problem.","description":"Includes accepted compilers and accepted proglangs","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","description":"The `problem_nm`, a letter followed y a 5-digit code.","examples":["P68688"],"type":"string"},"output":{"$ref":"AbstractProblemSuppl"},"ifiles":"none","ofiles":"none"},{"name":"getProblem","summary":"Get a problem.","description":"Includes abstract problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"$ref":"Problem"},"ifiles":"none","ofiles":"none"},{"name":"getProblemSuppl","summary":"Get supplementary information of a problem.","description":"Includes accepted compilers, accepted proglangs, official solutions\nchecks and handler specifications","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"$ref":"ProblemSuppl"},"ifiles":"none","ofiles":"none"},{"name":"getSampleTestcases","summary":"Get sample testcases of a problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"array","items":{"$ref":"Testcase"}},"ifiles":"none","ofiles":"none"},{"name":"getPublicTestcases","summary":"Get public testcases of a problem.","description":"Public testcases are like sample testcases, but are not meant to be shown in the problem statatement, because of their long length.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"array","items":{"$ref":"Testcase"}},"ifiles":"none","ofiles":"none"},{"name":"getZipStatement","summary":"Get ZIP archive of a problem. This includes its statements, templates and public testcases.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"getPdfStatement","summary":"Get PDF statement of a problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"getHtmlStatement","summary":"Get Html statement of a problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getTextStatement","summary":"Get Text statement of a problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getMarkdownStatement","summary":"Get Markdown statement of a problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getShortHtmlStatement","summary":"Get short Html statement of a problem (does not include title or author).","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getShortTextStatement","summary":"Get short Text statement of a problem (does not include title or author).","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getShortMarkdownStatement","summary":"Get short Markdown statement of a problem (does not include title or author).","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getTemplates","summary":"Get list of template files of a problem (`main.*`, `code.*`, `public.tar`, etc.).","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getTemplate","summary":"Get a template file of a problem.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"problem_id":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"template":{"param":"template","description":"The template file name.","examples":["main.cpp","code.py","public.tar"],"type":"string"}},"required":["problem_id","template"]},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"semanticSearch","summary":"Get results for a semantic search for statement problems. The array is sorted by score (better at the top).","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"query":{"param":"query","description":"The query string to search for.","type":"string"},"limit":{"param":"limit","description":"Maximum number of problems to return.","default":25,"type":"number"}},"required":["query"]},"output":{"$ref":"SearchResults"},"ifiles":"none","ofiles":"none"},{"name":"fullTextSearch","summary":"Get results for a full text search for statement problems. The array is sorted by score (better at the top). Queries are matched against titles and statements and can use boolean operators.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"query":{"param":"query","description":"The query string to search for.","type":"string"},"limit":{"param":"limit","description":"Maximum number of problems to return.","default":25,"type":"number"}},"required":["query"]},"output":{"$ref":"SearchResults"},"ifiles":"none","ofiles":"none"},{"name":"getSolutions","summary":"Get solutions for a problem.","description":"The keys are the proglangs and the values are the solutions in base64. Pemission is granted to admin, ownerof the problem and instructor when shared solutions are enabled.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","description":"The problem ID (`problem_nm` + \"_\" + `lang_id`).","examples":["P68688_en","P68688_ca"],"type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"string"}}},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"Module with endpoints related to problems.\n\nThere are two types of problems: *abstract problems* and *problems*. An abstract\nproblem is a group of problems. A problem is an instance of an abstract problem\nin a particular language. Abstract problems are identified by a `problem_nm` (such\nas 'P68688'), while problems are identified by a `problem_id` including its\n`language_id` (such as 'P68688_en'). Abstract problems have a list of problems,\nwhile problems have an abstract problem. Abstract problems have an author, while\nproblems have a translator.\n\nAvailable problems depend on the actor issuing the request. For example, non\nauthenticated users can only access public problems, while authenticated\nusers can potentially access more problems.\n"},{"name":"student","endpoints":[],"submodules":[{"name":"keys","endpoints":[{"name":"get","summary":"Get problem, courses (as enrolled and available) and list keys.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"AllKeys"},"ifiles":"none","ofiles":"none"},{"name":"getProblems","summary":"Get problem keys.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getEnrolledCourses","summary":"Get enrolled course keys.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getAvailableCourses","summary":"Get available course keys.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getLists","summary":"Get list keys.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"This module exposes all valid keys for problems, courses and lists that a user can access."},{"name":"profile","endpoints":[{"name":"get","summary":"Get the profile.","description":"In case of exams, some fields are not nullified to avoid cheating.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"Profile"},"ifiles":"none","ofiles":"none"},{"name":"getAvatar","summary":"Returns the avatar as a PNG file.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"update","summary":"Update the profile","actor":"userActor","domains":["jutge"],"input":{"$ref":"NewProfile"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"updateAvatar","summary":"Update the avatar with new PNG.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"one","ofiles":"none"},{"name":"updatePassword","summary":"Update password.","description":"Receives the old password and the new one, and changes the password if the old one is correct and the new one strong enough.","actor":"userActor","domains":["jutge"],"input":{"$ref":"NewPassword"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"This module exposes the user profile."},{"name":"dashboard","endpoints":[{"name":"getAbsoluteRanking","summary":"Get the ranking of the user over all users in the system.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"integer"},"ifiles":"none","ofiles":"none"},{"name":"getAllDistributions","summary":"Get all distributions.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"AllDistributions"},"ifiles":"none","ofiles":"none"},{"name":"getCompilersDistribution","summary":"Get compilers distribution.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Distribution"},"ifiles":"none","ofiles":"none"},{"name":"getDashboard","summary":"Get dashboard.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Dashboard"},"ifiles":"none","ofiles":"none"},{"name":"getHeatmapCalendar","summary":"Get heatmap calendar of submissions.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"HeatmapCalendar"},"ifiles":"none","ofiles":"none"},{"name":"getProglangsDistribution","summary":"Get programming languages distribution.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Distribution"},"ifiles":"none","ofiles":"none"},{"name":"getStats","summary":"Get dashboard stats.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Distribution"},"ifiles":"none","ofiles":"none"},{"name":"getLevel","summary":"Get fancy Jutge level.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getSubmissionsByHour","summary":"Get submissions by hour distribution.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Distribution"},"ifiles":"none","ofiles":"none"},{"name":"getSubmissionsByWeekDay","summary":"Get submissions by weekday distribution.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Distribution"},"ifiles":"none","ofiles":"none"},{"name":"getVerdictsDistribution","summary":"Get verdicts distribution.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"$ref":"Distribution"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"submissions","endpoints":[{"name":"indexForAbstractProblem","summary":"Get index of all submissions for an abstract problem.","description":"Grouped by problem.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Submission"}}}}},"ifiles":"none","ofiles":"none"},{"name":"indexForProblem","summary":"Get index of all submissions for a problem.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Submission"}}},"ifiles":"none","ofiles":"none"},{"name":"getAll","summary":"Get all submissions.","description":"Flat array of submissions in chronological order.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"$ref":"Submission"}},"ifiles":"none","ofiles":"none"},{"name":"submit","summary":"Submit a solution to the Judge, easy interface.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"problem_id":{"param":"problem_id","type":"string"},"compiler_id":{"param":"compiler_id","type":"string"},"code":{"param":"code","type":"string"},"annotation":{"param":"annotation","default":"","type":"string"}},"required":["problem_id","compiler_id","code","annotation"]},"output":{"param":"submission_id","type":"string"},"ifiles":"none","ofiles":"none"},{"name":"submitFull","summary":"Submit a solution to the Judge, full interface.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"NewSubmissionIn"},"output":{"$ref":"NewSubmissionOut"},"ifiles":"many","ofiles":"none"},{"name":"get","summary":"Get a submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameResultIn"},"output":{"$ref":"Submission"},"ifiles":"none","ofiles":"none"},{"name":"getCodeAsB64","summary":"Get code for a submission as a string in base64.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameResultIn"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getCodeMetrics","summary":"Get code metrics for a submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameResultIn"},"output":{"anyOf":[{"$ref":"CodeMetrics"},{"type":"null"}]},"ifiles":"none","ofiles":"none"},{"name":"getAwards","summary":"Get list of awards ids for a submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameResultIn"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getAnalysis","summary":"Get analysis of a submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameResultIn"},"output":{"type":"array","items":{"$ref":"SubmissionAnalysis"}},"ifiles":"none","ofiles":"none"},{"name":"getTestcaseAnalysis","summary":"Get a (public) testcase analysis of a submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"problem_id":{"type":"string"},"submission_id":{"type":"string"},"testcase":{"type":"string"}},"required":["problem_id","submission_id","testcase"]},"output":{"$ref":"TestcaseAnalysis"},"ifiles":"none","ofiles":"none"},{"name":"getGameResult","summary":"Get the result of a game submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameResultIn"},"output":{"$ref":"GetGameResultOut"},"ifiles":"none","ofiles":"none"},{"name":"getGameOutput","summary":"Get the output of a game in a game submission.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"$ref":"GetGameOutputIn"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"courses","endpoints":[{"name":"indexAvailable","summary":"Get index of all available courses.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"BriefCourse"}}},"ifiles":"none","ofiles":"none"},{"name":"indexEnrolled","summary":"Get index of all enrolled courses.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"BriefCourse"}}},"ifiles":"none","ofiles":"none"},{"name":"getAvailable","summary":"Get an available course.","description":"Includes owner and lists.","actor":"userActor","domains":["jutge"],"input":{"param":"course_key","type":"string"},"output":{"$ref":"Course"},"ifiles":"none","ofiles":"none"},{"name":"getEnrolled","summary":"Get an enrolled course.","description":"Includes owner and lists.","actor":"userActor","domains":["jutge"],"input":{"param":"course_key","type":"string"},"output":{"$ref":"Course"},"ifiles":"none","ofiles":"none"},{"name":"enroll","summary":"Enroll in an available course.","actor":"userActor","domains":["jutge"],"input":{"param":"course_key","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"unenroll","summary":"Unenroll from an enrolled course.","actor":"userActor","domains":["jutge"],"input":{"param":"course_key","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"lists","endpoints":[{"name":"getAll","summary":"Get all lists.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"BriefList"}}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get a list.","description":"Includes items, owner.","actor":"userActor","domains":["jutge"],"input":{"param":"list_key","type":"string"},"output":{"$ref":"List"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"exam","endpoints":[{"name":"getReadyExams","summary":"Get list of ready exams.","description":"An exam is ready if the current time is between its expected start time minus two days and its expected end time plus two days. Exams are sorted by their distance to the current time and by title order in case of ties.","actor":"anyActor","domains":["exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"$ref":"ReadyExam"}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get current exam.","actor":"examActor","domains":["exam","contest"],"input":{"type":"void"},"output":{"$ref":"RunningExam"},"ifiles":"none","ofiles":"none"},{"name":"getDocument","summary":"Get a document in an exam.","actor":"examActor","domains":["exam","contest"],"input":{"param":"document_nm","description":"Document name","type":"string"},"output":{"$ref":"RunningExamDocument"},"ifiles":"none","ofiles":"none"},{"name":"getDocumentPdf","summary":"Get PDF of a document in an exam.","actor":"examActor","domains":["exam","contest"],"input":{"param":"document_nm","description":"Document name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"getRanking","summary":"Get ranking of the current contest.","actor":"examActor","domains":["exam","contest"],"input":{"type":"void"},"output":{"$ref":"Ranking"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"‼️ The state of this module is UNDER CONSTRUCTION. It is not ready for production use. The output of some function is capped if the exam has not started yet."},{"name":"statuses","endpoints":[{"name":"getAll","summary":"Get statuses for all abstract problems.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"AbstractStatus"}}},"ifiles":"none","ofiles":"none"},{"name":"getForAbstractProblem","summary":"Get status for an abstract problem.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","example":"P12345","type":"string"},"output":{"$ref":"AbstractStatus"},"ifiles":"none","ofiles":"none"},{"name":"getForProblem","summary":"Get status for a problem.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","example":"P12345_en","type":"string"},"output":{"$ref":"Status"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"awards","endpoints":[{"name":"getAll","summary":"Get all awards.","actor":"userActor","domains":["jutge"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"BriefAward"}}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get an award.","actor":"userActor","domains":["jutge"],"input":{"param":"award_id","type":"string"},"output":{"$ref":"Award"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"This module is not yet finished."}],"description":"These operations are available to all users, provided they are authenticated."},{"name":"instructor","endpoints":[],"submodules":[{"name":"documents","endpoints":[{"name":"index","summary":"Get index of all documents.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"Document"}}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get a document.","description":"The PDF file is not included in the response.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"document_nm","description":"Document name","type":"string"},"output":{"$ref":"Document"},"ifiles":"none","ofiles":"none"},{"name":"getPdf","summary":"Get PDF of a document.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"document_nm","description":"Document name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"create","summary":"Create a new document.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"DocumentCreation"},"output":{"type":"void"},"ifiles":"one","ofiles":"none"},{"name":"update","summary":"Update a document.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"DocumentCreation"},"output":{"type":"void"},"ifiles":"one","ofiles":"none"},{"name":"remove","summary":"Remove a document.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"document_nm","description":"Document name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"lists","endpoints":[{"name":"index","summary":"Get index of all lists.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"InstructorBriefList"}}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get a list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"list_nm","description":"List name","type":"string"},"output":{"$ref":"InstructorList"},"ifiles":"none","ofiles":"none"},{"name":"create","summary":"Create a new list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"InstructorListCreation"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"update","summary":"Update an existing list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"InstructorListCreation"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"remove","summary":"Delete an existing list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"list_nm","description":"List name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getArchived","summary":"Get the list of lists that are archived.","description":"At some point, endpoints related to archiving lists should change as the archive bit will be an attribute of each list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"archive","summary":"Archive a list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"list_nm","description":"List name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"unarchive","summary":"Unarchive a list.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"list_nm","description":"List name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"courses","endpoints":[{"name":"index","summary":"Get index of all courses.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"InstructorBriefCourse"}}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get a course.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"$ref":"InstructorCourse"},"ifiles":"none","ofiles":"none"},{"name":"create","summary":"Create a new course.","description":"Only invited students and tutors are taken into account. Enrolled and pending students and tutors are ignored, as these are managed by the system.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"InstructorCourseCreation"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"update","summary":"Update an existing course.","description":"Only invited students and tutors are taken into account. Enrolled and pending students and tutors are ignored, as these are managed by the system.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"InstructorCourseUpdate"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"remove","summary":"Delete an existing course.","description":"A course should not be deleted. Ask a system administrator to remove it if you really need it.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"sendInviteToStudents","summary":"Send invite email to pending students in the course.","description":"Please do not abuse.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"sendInviteToTutors","summary":"Send invite email to pending tutors in the course.","description":"Please do not abuse.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getStudentProfiles","summary":"Get the profiles of the students enrolled in the course.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"StudentProfile"}}},"ifiles":"none","ofiles":"none"},{"name":"getTutorProfiles","summary":"Get the profiles of the tutors enrolled in the course.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"StudentProfile"}}},"ifiles":"none","ofiles":"none"},{"name":"getArchived","summary":"Get the list of courses that are archived.","description":"At some point, endpoints related to archiving courses should change as the archive bit will be an attribute of each course.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"archive","summary":"Archive a course.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"unarchive","summary":"Unarchive a course.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"course_nm","description":"Course name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"\nThis module manages the courses that an instructor is teaching. It allows the instructor to manage the course, including getting and updating its lists, students and tutors. It can also send invites to pending students and tutors.\n\nThe course name is a unique slug for the course. It is used to reference the course in the system.\n\nThe course title is the human-readable title of the course.\n\nThe course description is a human-readable description of the course.\n\nStudents and tutors are managed in three lists: invited, enrolled and pending. These contains the emails of these users. Invited students and tutors are those who have been invited to the course. Enrolled students and tutors are those who have accepted the invitation and are part of the course. Pending students and tutors are those who have been invited to join the course but have not yet accepted. Enrolled and pending students and tutors are managed by the system and cannot not be modified directly.\n"},{"name":"exams","endpoints":[{"name":"index","summary":"Get index of all exams.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"$ref":"InstructorBriefExam"}}},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"$ref":"InstructorExam"},"ifiles":"none","ofiles":"none"},{"name":"getDocuments","summary":"Get documents of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"type":"array","items":{"$ref":"RunningExamDocument"}},"ifiles":"none","ofiles":"none"},{"name":"getProblems","summary":"Get problems of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"type":"array","items":{"$ref":"InstructorExamProblem"}},"ifiles":"none","ofiles":"none"},{"name":"getStudents","summary":"Get students of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"type":"array","items":{"$ref":"InstructorExamStudent"}},"ifiles":"none","ofiles":"none"},{"name":"getStudent","summary":"Get an student of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"email":{"type":"string"}},"required":["exam_nm","email"]},"output":{"$ref":"InstructorExamStudent"},"ifiles":"none","ofiles":"none"},{"name":"getSubmissions","summary":"Get submissions of an exam as a webstream.","description":"Meant for real-time streaming of submissions, most instructors will possibly prefer getSubmissionsPack.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"options":{"$ref":"InstructorExamSubmissionsOptions"}},"required":["exam_nm","options"]},"output":{"$ref":"WebStream"},"ifiles":"none","ofiles":"none"},{"name":"getSubmissionsPack","summary":"Get submissions of an exam as a pack.","description":"This endpoint will prepare the pack in the background and return a link to download it later. Packs take some time to be prepared, and are deleted after 24 hours. This is the preferred endpoint for most instructors, as it is simpler to use than getSubmissions. ","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"options":{"$ref":"InstructorExamSubmissionsOptions"}},"required":["exam_nm","options"]},"output":{"$ref":"Pack"},"ifiles":"none","ofiles":"none"},{"name":"getStatistics","summary":"Get statistics of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"$ref":"ExamStatistics"},"ifiles":"none","ofiles":"none"},{"name":"create","summary":"Create a new exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"InstructorExamCreation"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"update","summary":"Update an existing exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"InstructorExamUpdate"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"updateDocuments","summary":"Update documents of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"document_nms":{"type":"array","items":{"type":"string"}}},"required":["exam_nm","document_nms"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"updateCompilers","summary":"Update compilers of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"compiler_ids":{"type":"array","items":{"type":"string"}}},"required":["exam_nm","compiler_ids"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"updateProblems","summary":"Update problems of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"problems":{"type":"array","items":{"$ref":"InstructorExamProblem"}}},"required":["exam_nm","problems"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"updateStudents","summary":"Update students of an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"students":{"type":"array","items":{"$ref":"InstructorExamStudent"}}},"required":["exam_nm","students"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"addStudents","summary":"Add students to an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"students":{"type":"array","items":{"$ref":"InstructorExamStudent"}}},"required":["exam_nm","students"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"removeStudents","summary":"Remove students from an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"exam_nm":{"param":"exam_nm","description":"Exam name","type":"string"},"emails":{"description":"emails","type":"array","items":{"type":"string"}}},"required":["exam_nm","emails"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"remove","summary":"Delete an existing exam.","description":"Note: An exam can only be deleted if it has not started.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getArchived","summary":"Get the list of exams that are archived.","description":"At some point, endpoints related to archiving exams should change as the archive bit will be an attribute of each exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"archive","summary":"Archive an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"unarchive","summary":"Unarchive an exam.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getRanking","summary":"Get the ranking.","description":"Under development.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"exam_nm","description":"Exam name","type":"string"},"output":{"$ref":"Ranking"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"\n\nThis module manages the exams that an instructor is teaching. It allows the instructor to manage the exam, including getting and updating its documents, problems, students and submissions.\n\nExams objects are quite complex. Thus, this interface is also a bit complex. Each part of an exam can be get or updated in a separate endpoint. The main endpoint is the get endpoint, which returns the full exam object.\n\n"},{"name":"problems","endpoints":[{"name":"getOwnProblems","summary":"Get the list of own problems.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"setSharingSettings","summary":"Set the sharing settings of a problem.","description":"\n        Without a passcode, the problem is visible to all users.\n        With a passcode, the problem is only visible to users with the correct passcode.\n        With shared testcases, the testcases are shared with instructors. \n        With shared solutions, the solutions are shared with instructors. \n        ","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"SharingSettings"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getSharingSettings","summary":"Get the sharing settings of a problem.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","type":"string"},"output":{"$ref":"SharingSettings"},"ifiles":"none","ofiles":"none"},{"name":"getAllSharingSettings","summary":"Get the sharing settings of all problems.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"$ref":"SharingSettings"}},"ifiles":"none","ofiles":"none"},{"name":"shareWith","summary":"Share a problem with users.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"ShareWithInp"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"setDeprecation","summary":"Set the deprecation of a problem.","description":"If the reason is null or empty, the problem is undeprecated.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"Deprecation"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getProblemPopularityBuckets","summary":"Get the popularity buckets for all problems.","description":"The buckets are sorted by the number of problems in each bucket by total number of submissions. The data is refreshed every hour.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"$ref":"ProblemPopularityBucketEntry"}},"ifiles":"none","ofiles":"none"},{"name":"getAnonymousSubmissions","summary":"Get anonymous submissions for an abstract problem.","description":"This function is useful to produce statistics about the submissions for an abstract problem. The user ids are anonymized using a nonce.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","type":"string"},"output":{"type":"array","items":{"$ref":"ProblemAnonymousSubmission"}},"ifiles":"none","ofiles":"none"},{"name":"download","summary":"Download a problem as a ZIP file.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"create","summary":"Create a problem from a ZIP archive.","description":"This endpoint uses terminal web streaming: It returns an id from which the problem feedback is streamed over <URL>/api/webstreams/<id>.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"passcode","type":"string"},"output":{"$ref":"WebStream"},"ifiles":"one","ofiles":"none"},{"name":"update","summary":"Update a problem from a ZIP archive.","description":"This endpoint uses terminal web streaming: It returns an id from which the problem feedback is streamed over <URL>/api/webstreams/<id>.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","type":"string"},"output":{"$ref":"WebStream"},"ifiles":"one","ofiles":"none"},{"name":"remove","summary":"Remove a problem.","description":"A problem can only be removed if it has few submissions.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"problem_nm","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"queries","endpoints":[{"name":"getCourseProblemSubmissions","summary":"Get submissions for a problem in a course.","description":"Returns a list of submissions for a given problem for all students of a given course. Each submission includes the email, time, problem name, problem id, verdict, and IP address. The list is ordered by email and time. Known as ricard01 in the past.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"course_nm":{"type":"string"},"problem_nm":{"type":"string"}},"required":["course_nm","problem_nm"]},"output":{"$ref":"SubmissionsQuery"},"ifiles":"none","ofiles":"none"},{"name":"getCourseListSubmissions","summary":"Get submissions for all problems in a list in a course.","description":"Returns a list of submissions for all problems in a given list for all students of a given course. Each submission includes the email, time, problem name, problem id, verdict, and IP address. The list is ordered by email, problem id and time. Known as ricard02 in the past.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"course_nm":{"type":"string"},"list_nm":{"type":"string"}},"required":["course_nm","list_nm"]},"output":{"$ref":"SubmissionsQuery"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"tags","endpoints":[{"name":"index","summary":"Get list of all tags.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getDict","summary":"Get all tags with their problems.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"TagsDict"},"ifiles":"none","ofiles":"none"},{"name":"get","summary":"Get all problems with a given tag.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"param":"tag","type":"string"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"jutgeai","endpoints":[{"name":"supportedModels","summary":"Get the list of supported models.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"supportedImageModels","summary":"Get the list of supported image models.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"chat","summary":"Chat with an AI model using a list of messages.","description":"Send a conversation (list of system|user|assistant messages) and get the next assistant reply. Models are listed in the `supportedModels` endpoint. This endpoint uses terminal web streaming: It returns an id from which the chat is streamed over <URL>/api/webstreams/<id>. If `addUsage` is true, the usage of the model will be added at the end of the response as a JSON object between `---USAGE_JSON_START---` and `---USAGE_JSON_END---`.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"ChatPrompt"},"output":{"$ref":"WebStream"},"ifiles":"none","ofiles":"none"},{"name":"createImage","summary":"Create an image using an AI image model.","description":"Some models only accept certain sizes and aspect ratios.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"$ref":"CreateImageInput"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"getLlmUsage","summary":"Get audit usage of LLM models.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"$ref":"LlmUsageEntry"}},"ifiles":"none","ofiles":"none"}],"submodules":[]}],"description":"This module is meant to be used by instructors"},{"name":"games","endpoints":[{"name":"getGames","summary":"Get list of problems that are games.","actor":"competitionsActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getDummy","summary":"Get dummy player for a game.","actor":"competitionsActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getViewer","summary":"Get a ZIP file with the viewer for a game.","actor":"competitionsActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"submitMatch","summary":"Submit a match for a game.","actor":"competitionsActor","domains":["jutge","exam","contest"],"input":{"$ref":"SubmitMatchInput"},"output":{"$ref":"NewSubmissionOut"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"Module to allow playing Jutge.org games. All operations require the `competitions` user. This module is still under development and is not yet ready for production."},{"name":"admin","endpoints":[],"submodules":[{"name":"instructors","endpoints":[{"name":"get","summary":"Get instructors.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"InstructorEntries"},"ifiles":"none","ofiles":"none"},{"name":"add","summary":"Add an instructor.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"email":{"type":"string"},"username":{"type":"string"}},"required":["email","username"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"remove","summary":"Remove an instructor.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"param":"email","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"users","endpoints":[{"name":"count","summary":"Count users","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"integer"},"ifiles":"none","ofiles":"none"},{"name":"create","summary":"Create a user","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"$ref":"UserCreation"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"remove","summary":"Remove a user","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"param":"email","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"setPassword","summary":"Set a password for a user","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"},"message":{"type":"string"}},"required":["email","password","message"]},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getProfiles","summary":"Get all profiles of users whose email or name contains a specific string","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"string"},"output":{"type":"array","items":{"$ref":"ProfileForAdmin"}},"ifiles":"none","ofiles":"none"},{"name":"getAllWithEmail","summary":"Get all users (well, just email and name) whose email contains a specific string","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"string"},"output":{"$ref":"UsersEmailsAndNames"},"ifiles":"none","ofiles":"none"},{"name":"getSpamUsers","summary":"Get a list of emails of spam users","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"removeSpamUsers","summary":"Remove spam users","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"array","items":{"type":"string"}},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"dashboard","endpoints":[{"name":"getAll","summary":"Get all admin dashboard items.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"AdminDashboard"},"ifiles":"none","ofiles":"none"},{"name":"getDatabasesInfo","summary":"Get database info.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"DatabasesInfo"},"ifiles":"none","ofiles":"none"},{"name":"getFreeDiskSpace","summary":"Get free disk space.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"FreeDiskSpace"},"ifiles":"none","ofiles":"none"},{"name":"getRecentConnectedUsers","summary":"Get recent connected users.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"RecentConnectedUsers"},"ifiles":"none","ofiles":"none"},{"name":"getRecentLoadAverages","summary":"Get recent load averages.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"RecentLoadAverages"},"ifiles":"none","ofiles":"none"},{"name":"getRecentSubmissions","summary":"Get recent submissions.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"RecentSubmissions"},"ifiles":"none","ofiles":"none"},{"name":"getSubmissionsHistograms","summary":"Get submissions histograms.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"SubmissionsHistograms"},"ifiles":"none","ofiles":"none"},{"name":"getZombies","summary":"Get zombies.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"Zombies"},"ifiles":"none","ofiles":"none"},{"name":"getUpcomingExams","summary":"Get upcoming exams","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"daysBefore":{"type":"integer"},"daysAfter":{"type":"integer"}},"required":["daysBefore","daysAfter"]},"output":{"$ref":"UpcomingExams"},"ifiles":"none","ofiles":"none"},{"name":"getPM2Status","summary":"Get pm2 status","description":"This endpoint retrieves the status of PM2 processes as reported by `pm2 jlist`.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{},"ifiles":"none","ofiles":"none"},{"name":"getDockerStatus","summary":"Get docker status","description":"This endpoint retrieves the status of docker processes as reported by `docker ps --all`.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"queue","endpoints":[{"name":"getQueue","summary":"Get the lattest submissions from the queue in descending chronological order for a certain verdict.","description":"The `limit` parameter tells the number of submissions to retrieve. The `verdicts` parameter is an array of verdicts to filter the submissions. If no verdicts are provided, all submissions will be retrieved.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"$ref":"QueueQuery"},"output":{"$ref":"SubmissionQueueItems"},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"tasks","endpoints":[{"name":"purgeAuthTokens","summary":"Purge expired access tokens.","description":"Purge expired access tokens (call it from time to time, it does not hurt)","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"clearCaches","summary":"Clear all memoization caches.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"fatalizeIEs","summary":"Fatalize IE submissions.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"fatalizePendings","summary":"Fatalize pending submissions.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"resubmitIEs","summary":"Resubmit IE submissions.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"resubmitPendings","summary":"Resubmit pending submissions.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"getFullTextSearchDatabase","summary":"Get full text search database status.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"updateSemanticSearchDatabase","summary":"Update semantic search database.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"default":"Not important but necessary to prevent jutge cli bug.","type":"string"},"output":{"type":"void"},"ifiles":"one","ofiles":"none"}],"submodules":[]},{"name":"stats","endpoints":[{"name":"getCounters","summary":"Get counters.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfVerdicts","summary":"Get distribution of verdicts.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfVerdictsByYear","summary":"Get distribution of verdicts by year.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfCompilers","summary":"Get distribution of compilers.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfProglangs","summary":"Get distribution of proglangs.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfUsersByYear","summary":"Get distribution of registered users by year.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfUsersByCountry","summary":"Get distribution of registered users by country.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfUsersBySubmissions","summary":"Get distribution of registered users by submissions using a custom bucket size.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"integer"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getRankingOfUsers","status":"Input type is not correct","summary":"Get ranking of users.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"param":"limit","type":"integer"},"output":{"$ref":"UserRanking"},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByHour","summary":"Get distribution of submissions by hour.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByProglang","summary":"Get distribution of submissions by proglang.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByCompiler","summary":"Get distribution of submissions by compiler.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByWeekday","summary":"Get distribution of submissions by weekday.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByYear","summary":"Get distribution of submissions by year.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByYearForProglang","summary":"Get distribution of submissions by year for a proglang.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"param":"proglang","description":"Programming language","type":"string"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfSubmissionsByDay","summary":"Get distribution of submissions by day.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"},{"name":"getHeatmapCalendarOfSubmissions","summary":"Get heatmap calendar of submissions.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"$ref":"DateRange"},"output":{},"ifiles":"none","ofiles":"none"},{"name":"getDistributionOfDomains","summary":"Get distribution of domains of users' emails.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"ifiles":"none","ofiles":"none"}],"submodules":[]},{"name":"problems","endpoints":[{"name":"getSolutions","summary":"Get list of proglangs for which the problem has an official solution.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","type":"string"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getSolutionAsB64","summary":"Get official solution for a problem in proglang as a string in base64.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"problem_id":{"type":"string"},"proglang":{"type":"string"}},"required":["problem_id","proglang"]},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"getSolutionAsFile","summary":"Get official solution for a problem in proglang as a file.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"problem_id":{"type":"string"},"proglang":{"type":"string"}},"required":["problem_id","proglang"]},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"getProblemSummary","summary":"Get summary for a problem.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"param":"problem_id","type":"string"},"output":{"anyOf":[{"$ref":"ProblemSummary"},{"type":"null"}]},"ifiles":"none","ofiles":"none"},{"name":"getProblemsWithSummary","summary":"Get list of problems with summary.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getProblemsWithoutSummary","summary":"Get list of problems without summary.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getAbstractProblemSolutionTags","summary":"Get solution tags for an abstract problem.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"problem_nm":{"type":"string"}},"required":["problem_nm"]},"output":{"anyOf":[{"$ref":"SolutionTags"},{"type":"null"}]},"ifiles":"none","ofiles":"none"},{"name":"getAbstractProblemsWithSolutionTags","summary":"Get list of abstract problems with solution tags.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"},{"name":"getAbstractProblemsWithoutSolutionTags","summary":"Get list of abstract problems without solution tags.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"array","items":{"type":"string"}},"ifiles":"none","ofiles":"none"}],"submodules":[]}],"description":"Module with administration endpoints. Not meant for regular users. It still lacks lots of endpoints"},{"name":"testing","endpoints":[],"submodules":[{"name":"check","endpoints":[{"name":"checkUser","summary":"Checks that query actor is a user.","actor":"userActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"checkInstructor","summary":"Checks that query actor is an instructor.","actor":"instructorActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"checkAdmin","summary":"Checks that query actor is an admin.","actor":"adminActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"},{"name":"throwError","summary":"Throw an exception of the given type.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"exception","type":"string"},"output":{"type":"void"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"This module is intended for internal use and contains functions to check the actor of the query. General public should not rely on it."},{"name":"playground","endpoints":[{"name":"upload","summary":"Upload a file.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"Name"},"output":{"type":"string"},"ifiles":"one","ofiles":"none"},{"name":"negate","summary":"Get negative of an image.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"void"},"ifiles":"one","ofiles":"one"},{"name":"download","summary":"Download a file.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"Name"},"output":{"type":"void"},"ifiles":"none","ofiles":"one"},{"name":"download2","summary":"Download a file with a string.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"Name"},"output":{"type":"string"},"ifiles":"none","ofiles":"one"},{"name":"ping","summary":"Ping the server to get a pong string.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"toUpperCase","summary":"Returns the given string in uppercase.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"param":"s","description":"The string to convert to uppercase","type":"string"},"output":{"type":"string"},"ifiles":"none","ofiles":"none"},{"name":"add2i","summary":"Returns the sum of two integers.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"TwoInts"},"output":{"type":"integer"},"ifiles":"none","ofiles":"none"},{"name":"add2f","summary":"Returns the sum of two floats.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"TwoFloats"},"output":{"type":"number"},"ifiles":"none","ofiles":"none"},{"name":"inc","summary":"increment two numbers.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"TwoInts"},"output":{"$ref":"TwoInts"},"ifiles":"none","ofiles":"none"},{"name":"add3i","summary":"Returns the sum of three integers.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"object","properties":{"a":{"description":"A first integer","type":"integer"},"b":{"description":"A second integer","type":"integer"},"c":{"description":"A third integer","type":"integer"}},"required":["a","b","c"]},"output":{"type":"integer"},"ifiles":"none","ofiles":"none"},{"name":"something","summary":"Returns a type with defaults.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"$ref":"SomeType"},"output":{"$ref":"SomeType"},"ifiles":"none","ofiles":"none"},{"name":"clock","summary":"Get a webstream with clok data.","actor":"anyActor","domains":["jutge","exam","contest"],"input":{"type":"void"},"output":{"$ref":"WebStream"},"ifiles":"none","ofiles":"none"}],"submodules":[],"description":"This module is intended for internal use. General users should not rely on it."}],"description":"Module with testing endpoints. Not meant for regular users."}]}}