luogu-api-docs

题目 API

列出题目

请求 GET /problem/list
参数 ProblemListParams
响应主体 application/json (DataResponse<{ problems: List<Problem & Maybe<ProblemStatus>>; page: number }>)

列出创建的题目

请求 GET /api/user/createdProblems
参数 { page?: number }
响应主体 application/json ({ problems: List<Problem> })

获取题目

请求 GET /problem/:pid
参数 { contestId?: number }
响应主体 application/json (DataResponse<ProblemData>)

获取题解

请求 GET /problem/solution/:pid
响应主体 application/json (LentilleDataResponse<SolutionsData>)

收藏题目

请求 POST /fe/api/problem/tasklistAdd
请求主体 application/json ({ pid: string })
响应主体 application/json ({ status: number })

取消收藏题目

请求 POST /fe/api/problem/tasklistRemove
请求主体 application/json ({ pid: string })
响应主体 application/json ({ status: number })

提交代码

:提交代码时,主页的 CSRF 令牌会失效,比如 AT_abc001_a 题目的提交需要 https://www.luogu.com.cn/problem/AT_abc001_a 页面返回的 CSRF 令牌,而使用主页返回的令牌则无法通过鉴权。

请求 POST /fe/api/problem/submit/:pid
参数 { contestId?: number }
请求主体 application/json (SubmitCodeRequest) 或 multipart/form-data ({ file: Blob })
响应主体 application/json ({ rid: number })

提交翻译

请求 POST /fe/api/problem/translate/:pid
请求主体 application/json ({ translation: string })
响应主体

创建题目

请求 POST /fe/api/problem/new
请求主体 application/json (CreateProblemRequest)
响应主体 application/json ({ pid: string })

编辑题目

请求 POST /fe/api/problem/edit/:pid
请求主体 application/json ({ settings: ProblemSettings })
响应主体 application/json ({ pid: string })

更新数据点设置

请求 POST /fe/api/problem/editTestCase/:pid
请求主体 application/json (UpdateTestCasesSettingsRequest)
响应主体 application/json (UpdateTestCasesSettingsResponse)

迁移题目

请求 POST /fe/api/problem/transfer/:pid
请求主体 application/json ({ type: string; teamID?: number } | { operation: "clone"; type: "T"; teamID: number })
响应主体 application/json ({ pid: string })

删除题目

请求 POST /fe/api/problem/delete/:id
响应主体 application/json ({})