福建省补贴性职业培训管理平台接口文档
用于接收线上培训平台学习成果,提供属地人社审核培训过程的数据,系统自动根据上报的学习成果数据与监管平台的数据进行比对核验,未按要求接受监管的课程学时将无法记入培训学时。
福建省补贴性职业培训管理平台:https://zypx.fjrst.cn/
接口使用范围
仅适用接入监管平台的线上培训平台。
使用流程
- 1、申请接入(与监管平台使用相同的授权)
- 2、技术对接
- 3、测试上线
补贴管理平台API接口
测试环境域名:https://opentestv1.fjrst.cn
正式环境域名:https://open.fjrst.cn
1、获取token
每个学员每个时刻确保只能在一个平台上学习一个课程,如果存在已学习的课程,无法获取Token。
请求URL: /v1/token
请求方式: POST
请求参数:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
appId | 是 | String | 应用ID |
appSecret | 是 | String | 应用密钥 |
idCard | 是 | String | 身份证号(学员) |
响应结果:
参数 | 说明 |
---|---|
code | 响应结果标识:0表示成功 |
access_token | token,用于后期会话的鉴权,仅本次学习有效 |
请求示例:
{
"appId": "eb7200f7fc45460d96507c4fa03b3934",
"appSecret": "xxxxxxxx完成申请流程后可查看",
"idCard": "3501241980xxxxx"
}
响应示例:
{
"code": 0,
"msg": "操作成功",
"data": {
"access_token": "eb7200f7fc45460d96507c4fa03b3934"
}
}
异常响应示例:
{
"code": 401,
"msg": "当前人员已在其他平台开始学习",
"data": {
"name": "xxxx培训平台",
"startTime": "2021-03-17 12:22:32"
}
}
2、按工种上传课程数据
用于申请机构填报培训方案时选择线上课程。 使用工种名称进行课程包匹配,课程包下的课程将作为培训方案的线上课程部分显示。
请求URL: /v1/upCoursePackage
请求方式:POST
请求参数:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
token | 是 | String | token |
job | 是 | String | 课程所属工种,用于管理平台申报方案界面操作时匹配线上课程使用;注意与培训方案里的工种名称一致才可以选择到该课程包 |
packageId | 是 | String | 课程包ID(唯一值,同一平台内不可重复),用于监管平台比对学习时长使用 为解决同一课程ID在多个职业工种共用的情况,监管平台增加课程包ID的区分 |
packageName | 是 | String | 课程包名称,用于区分同一工种多个课程包使用,方便填报方案时选择判断 |
times | 是 | number | 课程包学习时长(秒) |
status | 是 | number | 状态:1正常0下架,用于下线课程包内容,已下架的课程包将不能在新申请方案里选择 |
courses | 是 | array[Object] | 包含课程信息,用于显示在培训方案课程列表中线上部分的列表显示(相关字段要求为培训方案申请规范),监管平台需要跟踪每个课程的学习时长 |
supply | 是 | Object | 课程提供商信息 |
coverImg | 否 | String | 课程封面图 |
courses 对象说明:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
courseId | 是 | String | 课程ID(唯一值,同一课程包内不可重复),用于监管平台比对学习时长使用 自定义ID内容,需要确认监管的时候与该课程ID一致即可。 |
courseType | 是 | String | 目前使用固定值:理论课程 |
name | 是 | String | 课程名称 |
teacher | 是 | String | 教师名称 |
times | 是 | number | 课程学习时长(秒),用于监管平台计算核对学习时长,要求监管时长不少于课程时长。 |
courseUrl | 否 | String | 课程学习地址 |
supply 对象说明:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
addr | 否 | String | 联系地址 |
linkman | 否 | String | 联系人 |
mobile | 否 | String | 联系电话 |
name | 是 | String | 内容提供商名称 |
响应结果:
参数 | 说明 |
---|---|
code | 正常处理:0 |
请求示例:
{
"token": "20604980-3079-11ec-a40d-f596dd76cca1",
"job": "工种",
"packageId": "课程包ID",
"packageName": "课程包名称",
"coverImg": "封面图地址",
"times": 36000,
"status": 1,
"courses": [
{
"courseId": "课程ID",
"courseType": "理论课程",
"courseUrl": "https://",
"name": "外链的电影课程",
"teacher": "张三,李四",
"times": 36000
}
],
"supply": {
"addr": "联系地址",
"linkman": "联系人",
"mobile": "联系电话",
"name": "内容提供商名称"
}
}
响应示例:
成功响应
{
"code": 0
}
3、获取上传课程数据
用于申请机构填报培训方案时选择线上课程。
请求URL: /v1/getCoursePackage
请求方式:GET
请求参数:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
token | 是 | String | token |
job | 否 | String | 过滤的课程工种 |
page | 否 | number | 页码默认1 |
size | 否 | number | 每页条数默认20 |
响应结果:
参数 | 说明 |
---|---|
code | 正常处理:0 |
count | 总条数 |
data | 列表数据 |
请求示例:
{
"token":"20604980-3079-11ec-a40d-f596dd76cca1",
"job":"电工",
"page":1,
"size":20
}
响应示例:
成功响应
{
"code": 0,
"msg": "操作成功",
"count": 1,
"data": [
{
"id": "7ffe9100-3d15-11ec-884a-37bf96fe99fb",
"packageId": "课程包ID",
"appId": "fjhb",
"packageName": "课程包名称",
"job": "工种",
"times": 36000,
"total": "0",
"coverImg": "封面图地址",
"status": 1,
"supply": {
"addr": "联系地址",
"name": "内容提供商名称",
"mobile": "联系电话",
"linkman": "联系人"
},
"courses": [
{
"courseId":"课程ID",
"name": "外链的电影课程",
"times": 36000,
"teacher": "隋准,隋准",
"courseUrl": "https://",
"courseType": "理论课程"
}
],
"is_del": 0,
"createdAt": "2021-11-04T02:18:28.000Z",
"updatedAt": "2021-11-04T02:18:28.000Z"
}
]
}
4、上报学员学习成果
用于培训平台上报线上课程学习结果,补贴管理平台将会对上报的学习结果进行验证(监管平台收集的数据),未通过监管平台比对的学习结果将无法记入培训学时。
请求URL: /v1/upTrainResult
请求方式:POST
请求参数:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
token | 是 | String | token |
packageId | 是 | String | 课程包id(唯一值,同一平台内不可重复) |
idCard | 是 | String | 身份证号(学员)-取用获取token时传入的证件号 |
trainingPersonId | 是 | String | 参训学员ID-(传入该字段时,将只使用参训学员ID匹对学员) |
prove | 是 | string | 学习成果证明(文件访问地址) |
result | 是 | Array[Object] | 学习成果数据列表 |
result对象说明:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
courseId | 是 | String | 课程id(唯一值,同一平台内不可重复) |
startTime | 是 | String | 课程最早开始时间 (2021-09-19T01:38:31.959Z) |
endTime | 是 | String | 课程最后学习结束时间 (2021-09-19T01:38:31.959Z) |
courseTimes | 是 | number | 课程时长(秒) |
studyTimes | 是 | number | 学习时长(秒),要求不得少于课程时长,将用于监管平台比对数据,若监管平台记录的courseId学习时长与课程时长一致,则该学习记录为符合 |
logs | 是 | Array[Object] | 每门课程学习日志(不能超过50次)(于2023年11月01日新增必填) |
studyIP | 是 | string | 学习IP |
studyCount | 否 | number | 学习次数,选填 |
logs对象参数说明:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
startTime | 是 | string | 学习开始时间 (2021-09-19T01:38:31.959Z) |
endTime | 是 | string | 学习结算时间 (2021-09-19T01:38:31.959Z) |
timeLength | 是 | number | 学习时长(秒) |
studyIP | 是 | string | 此次学习IP |
响应结果:
参数 | 说明 |
---|---|
code | 正常处理:0 |
请求示例:
{
"token": "20604980-3079-11ec-a40d-f596dd76cca1",
"packageId": "packageId",
"idCard": "350103198xxxxxxx",
"prove": "http://xx.com/xx.pdf",
"result": [{
"courseId": "591course",
"startTime": "2021-09-19T01:38:31.959Z",
"endTime": "2021-10-19T01:38:31.959Z",
"courseTimes": 3200,
"studyTimes": 3600,
"studyIP": "202.210.105.x",
"studyCount": 2
}]
}
响应示例:
成功响应
{
"code": 0
}
5、获取学员学习成果
用于获取学员的学习成果比对结果,方便培训平台进行核对。
请求URL: /v1/getTrainResult
请求方式:GET
请求参数:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
token | 是 | String | token |
page | 否 | number | 分页数据,默认1 |
size | 否 | number | 每页记录数 |
idCard | 否 | String | 身份证号(学员)-入参无证件号时,会取用token传入的证件号 |
packageId | 否 | String | 课程包id,按课程包ID过滤 |
trainingPersonId | 否 | String | 参训学员id,参训学员ID过滤 (传入该字段时,不会根据证件号过滤) |
响应结果:
参数 | 说明 |
---|---|
code | 响应代码,0表示正常 |
data | 数据列表 |
请求示例:
响应示例:
成功响应
{
"code": 0,
"data": [
{
"id": "",
"packageId":"",
"appId": "",
"idCard": "",
"status": 0,
"remark": "",
"result": [{
"courseId":"",
"endTime": "2021-10-19T01:38:31.959Z",
"studyIP": "127.0.0.1",
"startTime": "2021-09-19T01:38:31.959Z",
"studyCount": 2,
"status": 0,
"hasTimes_s":3600,
"studyTimes": 3600,
"courseTimes": 3200
}],
"createdAt": "2021-03-10 19:45:22",
"updatedAt": "2021-03-10 19:45:22"
}
]
}
响应结果data内obj对象说明:
参数 | 说明 |
---|---|
status | 0未比对1比对符合2比对不符合 |
hasTimes_s | 有效学习时长 |