Repository navigation
InfoPlus
| 项 | 值 |
|---|---|
| 平台 | form.sjtu.edu.cn/infoplus |
| 认证 | OAuth 2.0;User Token / System Token |
| 数据方向 | 读 + 写(流程、任务、表单) |
| 难度 | 高(App 审批 + 租户/流程权限) |
| 最后验证 | 2026-10-25 |
| 证据等级 | B(官方 API Reference;未逐接口实测) |
InfoPlus 是交我办背后的流程与表单平台,负责流程实例、待办任务、表单数据、附件、通知和导出。它不是通用校园数据 API。
- Base:
https://form.sjtu.edu.cn/infoplus/apis/v2/(测试环境用v2d/) - 认证:OAuth 2.0。授权码或隐式模式取得 User Token,客户端凭据取得 System Token。
- 可获取:用户可办应用、待办/在办/已办、流程详情与表单数据、附件、通知、导出、组织/岗位/权限、统计。
- 注意:User Token 和 System Token 不能互相替代;语法正确的调用也可能返回 HTTP 200 和
errno != 0;没有 App 或租户权限时无法读取数据。
| 概念 | 含义 |
|---|---|
| App | 应用。分 Global(不隶属租户/流程)、Enterprise(隶属租户)、Workflow(隶属一个流程) |
| Enterprise | 企业/租户;交我办里通常对应学校或部门 |
| Process | 流程实例,有唯一流水号 entry
|
| Task | 一个具体任务;一个 task 只能被办理一次 |
| Triple | (User, Dept, Post) 三元关系,表示用户在某部门某岗位 |
| Position |
{dept}:{post},支持 * 通配 |
| FormData | 流程表单数据;生命周期见官方文档 |
App 类型会影响权限范围:
- Workflow App 的 Token 只能发起该流程,不能发起其他流程。
- Enterprise App 的 Token 限定在该租户内。
- Global App 不隶属租户/流程,常用于 TaskCenter 这类全局应用。
| 用途 | 地址 |
|---|---|
| 授权 | https://form.sjtu.edu.cn/infoplus/oauth2/authorize |
| Token | https://form.sjtu.edu.cn/infoplus/oauth2/token |
InfoPlus 支持:
- Authorization Code
- Implicit
- Client Credentials
(官方说支持 1、2、4,跳过 Resource Owner Password。)
- 1/2 拿到的叫 User Token:代表用户,
/me/*接口、发起流程、办理任务。 - 3 拿到的叫 System Token:代表应用,
/user/{id}/*、系统级任务、管理接口。
Warning
User Token 和 System Token 不能互相替代。/me/profile 只支持 User Token;System Token 要用 /user/{userId}/profile,scope 加 sys_ 前缀。
-
sys开头的 scope 只用于 System Token;其他用于 User Token。 - 每个 API 后面标了
u/s或u/s;申请时按接口勾。 - 常见:
profile、task、process、process_edit、submit、start、triple、sys_triple、sys_process_edit、app、sys_app、stats、entrust、sys_thing。
- RESTful;GET/PUT/POST/DELETE。
- URL/参数大小写敏感;camelCase(
access_token除外)。 - 时间用 Unix 秒。
- 所有语法正确的调用都返回 HTTP 200;语义错误在 body 里。
{
"errno": 0,
"ecode": "OK",
"error": "success",
"total": 0,
"entities": [{ "...": "..." }]
}-
errno: 0成功;非 0 失败。 -
ecode是字符串错误码,便于阅读。 -
error是人可读信息,随Accept-Language变。 -
total是分页总数;不是列表时为 0。 - 单条数据在
entities[0]。
-
start:起始条序号,0 下标。 -
limit:每页条数;不传由系统决定。 - 不同接口支持的过滤参数不同,见下表。
Base:https://form.sjtu.edu.cn/infoplus/apis/v2/
| 接口 | 说明 |
|---|---|
GET /me/profile |
当前用户信息(姓名、账号、邮箱、手机、租户、收藏应用/任务/标签) |
GET /me/preference/{k} |
用户偏好 |
PUT /me/preference/{k}/{v} |
增加偏好条目 |
DELETE /me/preference/{k}/{v} |
删除偏好条目 |
GET /me/positions |
用户岗位 |
GET /me/accesses |
用户权限 |
| 接口 | 说明 |
|---|---|
GET /me/apps |
用户可办应用;不支持分页 |
GET /me/tasks/todo |
待办;支持 sep、thing、entrust、start、limit
|
GET /me/processes/doing |
在办 |
GET /me/processes/done |
已办 |
GET /me/processes/completed |
doing + done |
GET /me/processes/{cate} |
unrated/cc/entrusted/admin/guest/operator
|
GET /process/{id} |
流程详情(含 tasks) |
GET /process/{id}/data |
流程表单数据 |
GET /process/{id}/data/{format} |
导出 Word/PDF/PNG |
POST /process/{id}/data |
修改表单数据 |
POST /me/processes |
调整用户所有流程(如标记抄送已读) |
流程列表支持 app、entry、keyword、timestamps、lastUpdate、orderTimes、milestones、ratings、statuses、states、sep、thing、unread、archive、start、limit、order。[官方]
| 接口 | 说明 |
|---|---|
POST /task/{id} |
办理一个任务 |
PUT /process |
发起一个新流程 |
POST /process/{id} |
评价/终止/挂起/恢复/归档/标记已读等 |
GET /thing/{code}/tasks |
按物品码查任务 |
办理任务的关键参数:actionId/actionCode、remark、thing、pickup;System Token 还可以传 userId。[官方]
发起流程返回 entities:
-
[0]流水号 -
[1]步骤号 -
[2]第一步 URL -
[3]第一步 Task JSON
InfoPlus 的写操作会改变真实业务流程,比读接口危险得多。
| 操作 | 影响 | 必须先确认 | 可撤销性 |
|---|---|---|---|
PUT /process 发起流程 |
创建真实流程实例,第一步进入待办 | 流程类型、表单数据、参与人 | 可终止/归档,但已产生的记录不会消失 |
POST /task/{id} 办理任务 |
任务只能办理一次;可能触发下一节点/通知 | 动作(同意/驳回)、备注、附件 | 通常不可撤销;只能走后续流程 |
POST /process/{id} 评价/终止/挂起/恢复/归档/标记已读 |
改变流程状态或可见性 | 目标流程、动作、理由 | 挂起可恢复;终止/归档通常不可逆 |
POST /process/{id}/data 修改表单 |
改业务数据,可能触发校验/联动 | 字段、旧值、新值 | 取决于流程;不要假设能回滚 |
POST /me/processes 标记全部抄送已读 |
批量改变已读状态 | 范围 | 不可撤销 |
Warning
写操作要用户逐次确认;不要做「自动办理」「批量同意」「后台重放」。失败时先查流程或任务状态,确认是否已经生效,再决定是否重试。任务只能办理一次,盲目重试可能产生错误或重复副作用。
| 组 | 代表接口 | 说明 |
|---|---|---|
| Admin |
GET /app/{idc}、POST /app/{idc}、GET /me/apps/{access}、GET /me/processes/{access}
|
App meta、上下线、权限列表 |
| Admin |
GET /task/{id}/candidates、POST /task/{id}/candidates、DELETE /task/{id}
|
可办理人、撤回 |
| Triple |
GET /triple/{type}/{idc}、GET /triple/{type}s、PUT/POST/DELETE /triple/{type}
|
用户/部门/岗位 |
| Grant |
GET /user/{id}/positions、GET /position/{position}/users、PUT/DELETE /position/{position}/users
|
岗位成员 |
| Stats |
GET /stats/apps、GET /stats/app/{id}/processes/status、/recent、/tasks/todo
|
统计;2 分钟缓存 |
| Tenant |
GET /enterprise/{type}/{id}、GET /enterprise/{type}s、CRUD /code/{cid}/item/{iid}
|
租户设置、代码表 |
| Entrust |
GET /user/{id}/{relationship}、PUT/DELETE /user/{id}/{relationship}/{other}
|
委托/被委托 |
| Thing |
PUT /thing/{code}/pickup、GET /thing/{code}、GET /pickup/{pickup}/things
|
物品/收件码 |
{
"id": "guid",
"name": "服务事项名称",
"code": "应用代码",
"abbreviation": "缩略名",
"description": "摘要",
"tags": "标签1,标签2",
"icon": "uri",
"palette": "#ff0000",
"department": "负责院系",
"contact": "联系人",
"recommend": 0,
"rating": 0,
"rated": 0,
"visible": true,
"ready": true,
"system": "所属系统"
}关键字段:id、name、entry(流水号)、create、update、read、app、owner、status(doing/suspended/done/killed)、states、tasks、milestones、flow、activities、ancestors。
关键字段:id、name、uri、description、process、assignUser、actionUser、actualUser、assignTime、actionTime、actionName、expireTime、status(1 待做/2 已做/3 子流程)、actions、executors、reviewers、permission。
这些是 InfoPlus 的周边 API,不在主 API Reference 里:
| API | 用途 |
|---|---|
| File API | 流程附件、文件上传/下载 |
| Notification API | 流程内通知、邮件/其他渠道 |
| Export API | 按模板导出 Word/Excel/PDF |
| Messenger API | 平台与第三方系统的事件驱动互操作;目前主要 Java SDK |
| Push API | 长轮询订阅待办/抄送变化;前端用 infoplus.sdk.js,后端 sub 尚不支持 |
仅有 jAccount 不足以调用 InfoPlus:
- 按应用管理规范创建/申请 InfoPlus App。
- 在开发环境拿 App ID/Secret。
- 由流程/租户管理员配置应用能访问的流程和数据。
- 代表用户办理时用 Authorization Code/Implicit 拿 User Token。
- 后端系统任务用 Client Credentials 拿 System Token。
- 正式上线还要走应用上线申请。
个人自用工具通常拿不到;这是实验室/社团/部门应用的路线。
-
HTTP 200 不等于成功:看
errno/ecode。 -
User/System Token 混用:
/me/*只认 User;/user/{id}/*要 System +sys_scope。 -
start从 0 开始。 -
v2vsv2d:v2d是测试数据;不要拿测试数据当正式。 - App 类型决定权限范围:Workflow App 只能发起该流程;Enterprise App 限定租户。
-
includeExecutors最多 50 人:多于 50 只返回前 50,顺序不可预测。 - 统计结果有 2 分钟缓存:非实时数据。
- 表单数据有生命周期:不要在错误阶段读写;见官方 FormData 文档。
- 写流程要用户确认:发起/办理/终止都是真实业务动作。
-
委托只支持办理,不支持发起:
app+from/to时间区间。 - 附件/文件走 File API:不要在表单 JSON 里塞二进制。
- Messenger/Push 不是轮询替代品:前端长轮询可以,后端 sub 尚不支持。
# 1. 用授权码换 User Token
curl -X POST 'https://form.sjtu.edu.cn/infoplus/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code' \
-d "code=$CODE" \
-d "redirect_uri=$REDIRECT_URI" \
-d "client_id=$APP_ID" \
-d "client_secret=$APP_SECRET"
# 2. 读待办
curl 'https://form.sjtu.edu.cn/infoplus/apis/v2/me/tasks/todo?start=0&limit=20' \
-H "Authorization: Bearer $USER_TOKEN"
# 3. 读流程详情
curl 'https://form.sjtu.edu.cn/infoplus/apis/v2/process/<id>' \
-H "Authorization: Bearer $USER_TOKEN"- OAuth、App 类型、响应结构、分页、端点表、数据模型、限制:
[官方 2026-10-25,developer.sjtu.edu.cn/form/reference/api.html] - 应用管理/上线流程:
[官方]developer.sjtu.edu.cn/form/standard/application.html、onlineApply.html - File/Notification/Export/Messenger:
[官方]对应 reference 页面
- 2026-10-25:首版。抽取官方 API Reference 的核心端点、Token 语义、分页与限制。
本 Wiki 记录的是开发实践,不是学校官方承诺。每个结论都标注证据与日期;校园平台会调整字段、权限和登录方式,动手前请按页面里的「最后验证」复核。发现过期内容请提 Issue 或直接改。