SDUT OJ(onlinejudge2)API 文档

onlinejudge2 API

by bLue

Last updated at 2018-02-07

Public API

Solution

URL

/index.php/API/Solution

接受请求方式

  • GET
  • POST

查询参数

  • runid(整数,主键):指定 RunID
  • uid(整数):指定 UID
  • user_name(字符串):指定用户名
  • pid(整数):指定 PID
  • cid(整数):指定 CID
  • result(整数):指定评测结果
  • language(字符串):指定提交语言

返回数据格式

JSON

返回数据内容

返回 JSON 数组,每一项中的对象包括如下属性:

  • runid(整数):RunID
  • uid(整数):UID
  • user_name(字符串):用户名
  • pid(整数):PID
  • cid(整数):CID
  • result(整数):评测结果,赛时提交返回 -1
  • time(整数):消耗的时间,赛时提交返回 -1
  • memory(整数):消耗的内存,赛时提交返回 -1
  • language(字符串):提交语言
  • code_length(数字):代码长度,赛时提交返回 -1
  • submission_time(字符串):提交时间

映射表

cid
  • -1 => Problems 中的提交
  • -2 => 测题提交
  • 其他 => 实际的 CID
result
  • 0 => Waiting
  • 1 => Accepted
  • 2 => Time Limit Exceeded
  • 3 => Memory Limit Exceeded
  • 4 => Wrong Answer
  • 5 => Runtime Error
  • 6 => Output Limit Exceeded
  • 7 => Compile Error
  • 8 => Presentation Error
  • 11 => System Error
  • 12 => Judging

配置参数

  • 单次查询数据条数限制:1000

示例

注:示例中出现的 limitcmporder 等参数是通用查询参数,请参阅本文档末尾的「通用查询参数」一节,下同。

查询 RunID 为 1000000 的提交:
runid=1000000

查询用户名为「15110543103」且 PID 为 1000 的最晚的一次提交:
user_name=15110543103&pid=1000

查询 RunID 小于等于 1000000 的最晚的 20 条提交:
runid=1000000&cmp=le&limit=20

查询 RunID 大于 1000000 的最早的 20 条提交:
runid=1000000&cmp=g&order=ASC&limit=20


User

URL

/index.php/API/User

接受请求方式

  • GET
  • POST

查询参数

  • uid(整数,主键):指定 UID
  • user_name(字符串):指定用户名
  • nick_name(字符串,模糊匹配):指定昵称
  • school(字符串,模糊匹配):指定学校
  • college(字符串,模糊匹配):指定学院
  • major(字符串,模糊匹配):指定专业
  • class(字符串,模糊匹配):指定班级

返回数据格式

JSON

返回数据内容

返回 JSON 数组,每一项中的对象包括如下属性:

  • uid(整数):UID
  • user_name(字符串):用户名
  • nick_name(字符串):昵称
  • school(字符串):学校
  • college(字符串):学院
  • major(字符串):专业
  • class(字符串):班级
  • accepted(整数):总 AC 数
  • submission(整数):总提交数

配置参数

  • 单次查询数据条数限制:1000

示例

查询用户名为「15110543103」的用户:
user_name=15110543103

查询班级中包含「计科1507」的最晚注册的 10 个用户:
class=计科1507&limit=10


ContestUser

URL

/index.php/API/ContestUser

接受请求方式

  • GET
  • POST

查询参数

  • cuid(整数,主键):指定 CUID
  • user_name(字符串):指定用户名
  • nick_name(字符串,模糊匹配):指定昵称
  • cid(整数):指定 CID

返回数据格式

JSON

返回数据内容

返回 JSON 数组,每一项中的对象包括如下属性:

  • cuid(整数):CUID
  • user_name(字符串):用户名
  • nick_name(字符串):昵称
  • cid(整数):CID
  • member(数组):成员列表,长度为 3
    • name(字符串):姓名
    • school(字符串):学校
    • college(字符串):学院
    • major(字符串):专业
    • class(字符串):班级
  • status(整数):比赛注册状态

映射表

status
  • 0 => 待审核
  • 1 => 接受
  • 2 => 等待修改
  • 3 => 拒绝

配置参数

  • 单次查询数据条数限制:1000

示例

查询 CID 为 1920 的比赛中最晚注册的 100 个用户:
cid=1920&limit=100


Problem

URL

/index.php/API/Problem

接受请求方式

  • GET
  • POST

查询参数

  • pid(整数,主键):指定 PID
  • title(字符串,模糊匹配):指定标题
  • source(字符串,模糊匹配):指定来源

返回数据格式

JSON

返回数据内容

返回 JSON 数组,每一项中的对象包括如下属性:

  • pid(整数):PID
  • title(字符串):题目标题
  • time_limit(整数):时间限制
  • memory_limit(整数):内存限制
  • description(字符串):描述
  • input(字符串):输入
  • output(字符串):输出
  • sample_input(字符串):示例输入
  • sample_output(字符串):示例输出
  • hint(字符串):提示
  • source(字符串):来源
  • added_time(字符串):添加时间
  • accepted(整数):总 AC 数
  • submission(整数):总提交数

配置参数

  • 单次查询数据条数限制:100

示例

查询 PID 为 1000 的题目:
pid=1000

查询标题中包含「cyk」的最晚添加的 20 道题目:
title=cyk&limit=20


Contest

URL

/index.php/API/Contest

接受请求方式

  • GET
  • POST

查询参数

  • cid(整数,主键):指定 CID
  • name(字符串,模糊匹配):指定名称
  • type(整数):指定类型

返回数据格式

JSON

返回数据内容

返回 JSON 数组,每一项中的对象包括如下属性:

  • cid(整数):CID
  • name(字符串):名称
  • type(整数):类型
  • start_time(字符串):比赛开始时间
  • end_time(字符串):比赛结束时间
  • register_start_time(字符串):注册开始时间
  • register_end_time(字符串):注册结束时间

映射表

type
  • 1 => Private
  • 2 => Register
  • 3 => Public

配置参数

  • 单次查询数据条数限制:1000

示例

查询 CID 为 1920 的比赛:
cid=1920

查询比赛名称中包含「2015」且类型是「Register」的最晚创建的 5 场比赛:
name=2015&type=2&limit=5


ContestDetail*

URL

/index.php/API/ContestDetail

接受请求方式

  • GET
  • POST

查询参数

  • cid(整数,必需):指定 CID
  • user_name(字符串):指定认证用户名
  • password(字符串):指定认证密码

返回数据格式

JSON

返回数据内容

返回 JSON 数组,第一项中的对象包括如下属性:

  • cid(整数):CID
  • name(字符串):名称
  • type(整数):类型
  • description(字符串):描述
  • start_time(字符串):比赛开始时间
  • end_time(字符串):比赛结束时间
  • register_start_time(字符串):注册开始时间
  • register_end_time(字符串):注册结束时间
  • problem(数组):题目列表
    • pid(整数):PID
    • title(字符串):标题

映射表

type
  • 1 => Private
  • 2 => Register
  • 3 => Public

说明

  • 本模块是定向查询模块,不支持通用查询参数
  • 如果比赛类型为「Private」,则需要在查询参数中提供比赛对应的 password 以供认证。认证失败将返回空数组
  • 如果比赛类型为「Register」,则需要在查询参数中提供比赛对应的 user_namepassword 以供认证。认证失败将返回空数组
  • 如果比赛状态为「Pending」,则 descriptionproblem 将分别返回空字符串和空数组

示例

查询 CID 为 1922 的比赛:
cid=1922

查询 CID 为 1977 的比赛,并以比赛密码「2016ACM」认证
cid=1977&password=2016ACM


Login*

URL

/index.php/API/Login

接受请求方式

  • GET
  • POST

查询参数

  • uid(整数):指定 UID
  • user_name(字符串):指定用户名
  • password(字符串,必需):指定密码

返回数据格式

JSON

返回数据内容

返回 JSON 数组,第一项中的对象包括如下属性:

  • uid(整数):UID
  • user_name(字符串):用户名
  • nick_name(字符串):昵称
  • email(字符串):电子邮箱
  • school(字符串):学校
  • college(字符串):学院
  • major(字符串):专业
  • class(字符串):班级
  • accepted(整数):总 AC 数
  • submission(整数):总提交数

说明

  • 本模块是定向查询模块,不支持通用查询参数
  • UIDuser_name 需要至少提供其中一个。如果二者都提供,则将使用 UID 进行登录验证
  • 如果提供的登录信息正确且对应用户未被禁用,则将返回用户信息,否则将返回空数组

示例

以用户名「sdut」,密码「sdut」尝试登录:
user_name=sdut&password=sdut


附录

通用查询参数

  • cmp(字符串,默认为 "e"):指定主键的比较类型
    • "e" => 等于
    • "ne" => 不等于
    • "l" => 小于
    • "le" => 小于等于
    • "g" => 大于
    • "ge" => 大于等于
  • order(字符串:默认为 "DESC"):指定主键的排序规则
    • "ASC" => 升序
    • "DESC" => 降序
  • limit(整数,默认为 1,最大取决于对应模块的配置参数):指定查询数据条数

评论