API文档版本切换
Api接口新版本
切换到Api接口新版本
考试/测评、背调、视频面试接入指南 (platform)
Offer API
获取offer自定义字段列表
请求样例
$ curl https://api.mokahr.com/api-platform/v1/offers/custom_fields
返回样例
{
"social": [
{
"id": 496,
"name": "dmj-offer",
"type": 1,
"detail": null,
"hire_mode": 1
},
{
"id": 281,
"name": "子公司",
"type": 6,
"detail": [
"子公司1",
"子公司2",
"子公司3"
],
"hire_mode": 2
},
{
"id": 456,
"name": "offer-校-年月日",
"type": 9,
"detail": null,
"hire_mode": 2
}
],
"campus": [
{
"id": 273,
"name": "时间段4",
"type": 7,
"detail": null,
"hire_mode": 2
},
{
"id": 276,
"name": "单行文本",
"type": 1,
"detail": null,
"hire_mode": 2
},
{
"id": 277,
"name": "家庭住址",
"type": 1,
"detail": null,
"hire_mode": 2
}
]
}
HTTP请求
GET https://api.mokahr.com/api-platform/v1/offers/custom_fields
返回
返回body的JSON数据如下:
字段 | 类型 | 描述 |
---|---|---|
social | array | 社招自定义字段 |
social[].id | integer | 自定义字段id |
social[].name | string | 自定义字段名称 |
social[].type | integer | 自定义字段类型: 1 单行文本,2 多行文本,3 是否题,4 年月选择,6 选择题,7 时间段,8 Offer关联的HC,9 日期,10 数字 |
social[].detail | array | 自定义字段选择项 |
social[].hire_mode | integer | 招聘类型: 1 社招, 2 校招 |
campus | array | 校招自定义字段 |
campus[].id | integer | 自定义字段id |
campus[].name | string | 自定义字段名称 |
campus[].type | integer | 自定义字段类型: 1 单行文本,2 多行文本,3 是否题,4 年月选择,6 选择题,7 时间段,8 Offer关联的HC,9 日期,10 数字 |
campus[].detail | array | 自定义字段选择项 |
campus[].hire_mode | integer | 招聘类型: 1 社招, 2 校招 |
用户API
同步人事信息给Moka系统
Moka 系统中会根据请求的列表对当前系统中的人员进行同步(新增,更新,标记删除)。 同步以用户的邮箱、工号、手机号任意一个为主键,与系统中用户的邮箱、工号、手机号任意一个进行对比: 1、当前系统没有,同步时有:新增一个用户 2、当前系统有,同步时也有:更新已经存在的用户信息。如果同步时有,当前系统职责状态标识为删除,更新后,状态改为正常。
HTTP 请求
POST https://api.mokahr.com/api-platform/v1/users/syncInfo
请求样例 (JSON)
{
"usersInfo": [{
"email": "test@mokahr.com",
"name": "张三",
"phone": "18710000182",
"number": "101",
"role": 10,
"departmentCode": ["888","999"],
"superiorEmail": "superior@mokahr.com",
"deactivated": 0,
"thirdPartyId": "E12345",
"updateDepartment": true,
"updateSuperiorEmail": true,
"autoActivated": 1,
"locale":"en-English"
}]
}
操作成功
{
"success": true
}
操作失败
{
"success": false,
"errorMessage": "错误信息"
}
请求body参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
是 | string | 邮箱 | |
name | 是 | string | 姓名 |
phone | 是 | string | 电话 |
number | 否 | string | 工号 |
role | 是 | integer | 角色 可选值: 0 :内推人 5 :前台 10 :面试官 20 :用人经理 25 :高级用人经理 30 :HR 40 :管理员 50 :超管 当前字段创建时可使用,不支持数据更新,如果更新则去对应的v2接口中。 |
roleId | 否 | integer | 自定义角色id:当前字段创建时可使用,不支持数据更新,如果更新则去对应的v2接口中 |
departmentCode | 是 | array | 部门,全部部门传空数组 |
superiorEmail | 是 | string | 上级邮箱,传空字符串会清空moka系统中的汇报关系,可以通过设置updateSuperiorEmail 参数,选择是否更新汇报关系 |
deactivated | 是 | integer | 是否被禁用 可选值: 0 :可用 1 :禁用 |
thirdPartyId | 是 | string | 功能性字段,用作单点登录,没有传空字符串 |
updateDepartment | 否 | boolean | !!!注意:不传默认是true 是否更新部门 true :更新false :不更新 |
updateSuperiorEmail | 否 | boolean | 是否更新上级汇报人 可选值: true :更新 false :不更新 默认true |
autoActivated | 否 | integer | 是否自动激活,高级经理、HR、管理员和超管角色默认需要发送邮件进行账号激活。 可选值: 0 :不自动激活,发邮件给用户手动激活 1 :自动激活,系统自动生成默认密码自动进行激活 传空字符串默认为0 |
locale | 否 | string | 用户语言 可选值: zh-CN :为中文 en-US :英文默认为中文 |
处理
Moka 系统中会根据请求的列表中每个用户的邮箱和工号对当前系统中的用户进行同步(新增,更新)。
可能的错误信息
errorMessage | 描述 |
---|---|
未开启人事信息同步开关 | |
参数格式错误 | 比如:部门必须为数组 |
每次最多同步100个用户 | |
邮箱和工号不能同时为空 | |
角色为整数或者空字符串 | 空字符串默认面试官 |
缺少必须参数 | 全部为必须参数 没有传空 |
未找到对应的部门信息 | 开启组织架构同步时 未找到任何一个匹配的部门 |
该手机号码已被所在公司其他账号使用,请尝试其他号码 | |
此邮箱已为其他用户使用 | |
此工号已为其他用户使用 | |
至少需要一名管理员 | |
可用高级用人经理账户数不足 | |
可用账户数不足 | |
系统错误 | |
... |
注意事项
调试请先联系相关负责人开启。 请确认开启组织架构同步,并且已同步过组织架构数据,否则人事部门信息将按照全部门处理 邮箱和工号不能同时为空。 只支持内置角色,角色信息是空或是0默认面试官。 每次同步的用户信息不能大于100个。 同步到某个用户出错时,会停止同步并且报错误。错误信息前会加上(邮箱或者工号)的前缀。并且从报错之前的数据已经同步成功。
候选人API
获取候选人信息
请求样例
curl --location --request GET 'https://api.mokahr.com/api-platform/v1/data/ehrApplications?stage=all&applicationId=333333333' \
--header 'Authorization: Basic TW4xY**********ckpDdnk6' \
--data-raw ''
返回样例
{
"data": [{
"applicationId": 47151744,
"candidateId": 28739723,
"name": "张三",
"phone": null,
"email": "yang111@163.com",
"gender": null,
"birthYear": null,
"birthDate": "2020-03-17T00:00:00.000Z",
"nationality": null,
"experience": null,
"ethnic": null,
"certificateType": null,
"citizenId": null,
"nativePlace": "",
"source": "其它渠道",
"sourceType": 2,
"sourceList": [
{
"name": "其它渠道",
"isBuiltin": true
}, {
"id": 4,
"name": "历史渠道",
"isBuiltin": true
}
],
"academicDegree": null,
"lastSpeciality": "人力资源管理",
"married": null,
"jobCommitment": "全职",
"hireMode": 1,
"departmentCode": null,
"parentDepartmentCode": null,
"resumeKey": null,
"stageName": "沟通offer",
"nativePlaceCode": null,
"nationalityCode": null,
"genderCode": null,
"academicDegreeCode": null,
"ethnicCode": null,
"lastCompany": "郑州***限公司",
"campus_site_id": 1,
"campus_site_name": "哈尔冰佛学院",
"job": {
"title": "test",
"department": "xinjan2",
"departmentCode": null,
"parentDepartmentCode": null,
"departmentPath": "华北地区/二级财务部/产品部/产研部/xinjan2",
"jobId": "39d3d5c9-949e-40d4-8d4b-5cb247d327a8",
"customFields": [
{
"name": "职位-年月",
"value": "2019-01"
}
]
},
"jobManager": {
"name": "test",
"email": "11q1@qq.com",
"phone": "17611232222",
"employeeId": "01"
},
"officeweb365Url": null,
"officeweb365PrintUrl": null,
"resumePdfMeta": null,
"portraitUrl": null,
"resumeUrl": "",
"educationInfo": [{
"id": 34263162,
"startDate": "",
"endDate": "",
"school": null,
"speciality": null,
"academicDegree": null,
"startTime": null,
"endTime": null,
"now": false
}],
"experienceInfo": [{
"id": 76685202,
"startDate": "",
"endDate": "",
"company": null,
"title": null,
"startTime": null,
"endTime": null,
"now": false,
"underlingNumber": "5"
}],
"awardInfo": [{
"awardDate": null,
"awardName": null
}],
"customFields": [{
"name": "单行文本",
"value": "122",
"section": "题型测试",
"index": 0
}, {
"name": "字段呀",
"value": "1333",
"section": "1测试",
"index": 0
}, {
"name": "我叫何为",
"value": "题型0001",
"section": "测试",
"index": 0
}, {
"codes": "",
"name": "T选择",
"value": "A",
"section": "1测试",
"index": 0
}, {
"name": "字段呀",
"value": "133333333",
"section": "1测试",
"index": 0
}, {
"name": "我叫何为",
"value": "题型0002",
"section": "1测试",
"index": 0
}, {
"codes": "",
"name": "T选择",
"value": "B:4",
"section": "1测试",
"index": 0
}, {
"name": "T多文本 ",
"value": "多文本 必填",
"section": "basicInfo"
}, {
"codes": "",
"name": "T确认型",
"value": "Y",
"section": "basicInfo"
}],
"interviewers": [],
"interviewFeedbackUrl": null,
"referrer": {
"name": "杨",
"email": "11111@mokahr.com",
"phone": "15001802222",
"number": "2019"
},
"headcountInfo": [],
"jobRanksInfo": [],
"offer": {
"approvalStatus": "APPROVED",
"salaryNumber": null,
"checkinDate": "2018-09-20T13:00:07.000Z",
"location": "上海市 普陀区 XXXX大学XXXX教室",
"creator": {
"name": "报表_HR",
"email": "mce35@yuoia.com"
},
"finishedAt": null,
"customFields": [{
"name": "合同日期",
"value": "2022"
}, {
"name": "转正日期",
"value": "2018-09-20"
}, {
"name": "自定义 - 据offer后去向",
"value": null
}, {
"name": "测试123",
"value": null
}, {
"name": "自定义offer字段",
"value": null
}, {
"name": "多行",
"value": null
}, {
"name": "222按时",
"value": null
}, {
"name": "1212111111",
"value": null
}],
"hcInfo": null,
"jobRankInfo": null,
"departmentName": "产品创新部",
"departmentCode": 30,
"parentDepartmentCode": 10,
"departmentPath": "产研部/产品创新部",
"offerLastSentAt": "2019-10-29T03:41:07.000Z"
},
"attachments": [
{
"name": "附件1",
"size": 1024,
"url": "https://cdn.mokahr.com/e11d677-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
}
],
"ehrCandidateExternalLink": "https://cdn.mokahr.com/forward/candidate/info?access_token=93e0eb37-6a5c-4fe4-91db-0579a844fb51"
},
{
"applicationId": 47168265,
"candidateId": 28755998,
"name": "test",
"phone": "17600000000",
"email": "111111@qq.com",
"gender": null,
"birthYear": null,
"nationality": null,
"experience": null,
"ethnic": null,
"citizenId": null,
"nativePlace": "",
"source": "其他",
"sourceType": 2,
"academicDegree": null,
"lastSpeciality": "人力资源管理",
"married": null,
"jobCommitment": "全职",
"hireMode": 1,
"departmentCode": null,
"parentDepartmentCode": null,
"resumeKey": null,
"stageName": "沟通offer",
"nativePlaceCode": null,
"nationalityCode": null,
"genderCode": null,
"academicDegreeCode": null,
"ethnicCode": null,
"lastCompany": null,
"campus_site_id": 0,
"campus_site_name": null,
"job": {
"title": "test",
"department": "xinjan2",
"departmentCode": null,
"parentDepartmentCode": null,
"departmentPath": "华北地区/二级财务部/产品部/产研部/xinjan2",
"jobId": "ea932057-2637-4408-98a2-a3366b4ade14",
"customFields": [
{
"name": "职位-年月",
"value": "2019-01"
}
]
},
"jobManager": {
"name": "test",
"email": "11q1@qq.com",
"phone": "17611232222",
"employeeId": "01"
},
"officeweb365Url": null,
"officeweb365PrintUrl": null,
"resumePdfMeta": null,
"portraitUrl": null,
"resumeUrl": "",
"educationInfo": [],
"experienceInfo": [],
"awardInfo": [],
"customFields": [],
"interviewers": [],
"interviewFeedbackUrl": null,
"referrer": null,
"headcountInfo": [],
"jobRanksInfo": [],
"offer": {
"salaryNumber": 111,
"checkinDate": "2018-09-20T12:58:17.000Z",
"location": "上海市 普陀区 XXXX大学XXXX教室",
"creator": {
"name": "报表_HR",
"email": "mc435@yuoia.com"
},
"finishedAt": null,
"customFields": [{
"name": "合同日期",
"value": "2022-03"
}, {
"name": "转正日期",
"value": "2018-09-20"
}, {
"name": "自定义 - 据offer后去向",
"value": null
}, {
"name": "测试123",
"value": null
}, {
"name": "自定义offer字段",
"value": null
}, {
"name": "多行",
"value": null
}, {
"name": "222按时",
"value": null
}, {
"name": "1212111111",
"value": null
}],
"hcInfo": {
"id": 8,
"number": "005",
"name": "啦啦",
"status": "timeout"
},
"jobRankInfo": {
"level": 3,
"name": "总裁",
"type": null
},
"departmentName": "产品创新部",
"departmentCode": 30,
"parentDepartmentCode": 10,
"departmentPath": "产研部/产品创新部",
"offerLastSentAt": "2019-10-29T03:41:07.000Z"
},
"attachments": [
{
"name": "附件1",
"size": 1024,
"url": "https://cdn.mokahr.com/e11d677-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
}
],
"examReportLinks": [
{
"name": "考试结果链接",
"url": "https://t.cn/XXXXXX"
}
],
"examAttachments": [
{
"name": "考试结果",
"url": "https://cdn.mokahr.com/1234567-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
}
],
"ehrCandidateExternalLink": "https://cdn.mokahr.com/forward/candidate/info?access_token=93e0eb37-6a5c-4fe4-91db-0579a844fb51",
"invitationUpdateStatus": 1
}],
"next": "47168265"
}
获取候选人信息
HTTP请求
GET https://api.mokahr.com/api-platform/v1/data/ehrApplications
请求query
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
applicationId | 否 | string | 候选人申请ID 注意: 1、如有此参数,下面参数均无效;获取多个候选人信息,则用逗号(,)分隔,如:81,82,83 2、applicationId和stage参数必须传其一 |
stage | 否 | string | offer(offer类型的阶段) 1、pending_checkin(待入职阶段) 2、all(offer类型的阶段与待入职阶段 注:applicationId和stage参数必须传其一,若当前查询stage阶段没有候选人会提示服务器异常 |
否 | string | 候选人邮箱 | |
phone | 否 | string | 候选人手机号 |
movedAtStartTime | 否 | string | 开始时间(移动到当前阶段的时间) |
movedAtEndTime | 否 | string | 结束时间(移动到当前阶段的时间) |
limit | 否 | string | 分页用的每页条数,默认20,最大20 |
fromTime | 无 | 无 | 此接口无此参数 |
order | 否 | string | 拉取数据的排序方式,排序key为进入当前阶段的日期.可选值为 DESC 按照从新到旧的顺序拉取,此为默认值 ASC 按照从旧到新的数据拉取 注意:当排序方式为ASC时,无论是否有更多数据,返回body中都会包含next(可用作增量拉取) |
next | 否 | string | 分页参数,如果有更多的数据可供拉取,响应的json中会有一个next 字段,下次请求只需要把这个next 参数加到query中就可以了。如果响应中没有next 字段,表示没有更多的数据了注意:当排序方式为ASC时,无论是否有更多数据,返回body中都会包含next(可用作增量拉取) |
invitationUpdateStatus | 否 | integer | 邀请更新状态 0、未邀请 1、未更新 2、已更新 |
返回的data数据
字段 | 类型 | 描述 |
---|---|---|
candidateId | integer | 候选人在Moka中的唯一id |
applicationId | integer | 候选人该申请在Moka中的唯一id |
name | string | 姓名 |
phone | string | 电话 |
string | 邮箱 | |
prefixPhone | string | 国家呼叫代码 |
gender | string | 性别,以下值之一:男 ,女 |
created_at | string | 简历进入系统的时间 |
birthYear | integer | 出生年份,如1990 |
birthDate | string | 出生日期 |
ethnic | string | 民族 |
certificateType | integer | 证件类型 1 :身份证,2 :香港身份证,3 :澳门身份证,4 :台湾身份证,5 :护照,6 :其他证件 |
citizenId | string | 证件号码 |
nationality | string | 国家/地区 |
nativePlace | string | 籍贯 |
experience | integer | 工作经验,0 表示应届生,-1 表示在校生,其他数字表示具体年限 |
portraitUrl | string | 候选人头像的图片地址,链接有效期为1小时 |
hireMode | integer | 招聘模式,1 : 社招, 2 : 校招 |
finishedAt | string | 职位目标完成时间 |
source | string | 渠道,如拉勾 |
sourceList | Array | 渠道分级,数组按照一级渠道、二级渠道、三级渠道的顺序排列 |
sourceList[].id | integer | 渠道id(第一级渠道不存在id) |
sourceList[].name | string | 渠道名称 |
sourceList[].isBuiltin | boolean | 是否系统内置渠道 |
sourceType | integer | 来源,以下值之一:1 ,2 ,3 。1 代表主动搜索 ,2 代表主动投递 ,3 代表人才推荐 。PS:2020-03-16日起不在使用4 代表猎头推荐 |
location | string | 所在地,如北京 |
lastCompany | string | 最近公司,以下值之一:null 无最近公司,xxx 任职公司名称 |
academicDegree | string | 最高学历,以下值之一:本科 ,硕士 ,博士 ,高中 ,大专 ,中专 ,MBA ,其他 |
lastSpeciality | string | 最近毕业专业 |
married | string | 婚姻状态,以下值之一:'已婚', '未婚', '离异', '丧偶', 'CIVILUNION', 'COHABITATING', 'MARRIED', 'DIVORCED', 'ENGAGED', 'SEPARATED', 'SINGLE', 'WIDOWED' |
nativePlaceCode | integer | 籍贯编码(籍贯为空时为null,编码详情见附件) |
nationalityCode | integer | 国籍编码(国籍为空时为null,编码详情见附件) |
genderCode | integer | 性别编码(性别为空时为null,编码详情见附件) |
academicDegreeCode | integer | 学历编码(学历为空时为null,编码详情见附件) |
ethnicCode | integer | 民族编码(民族为空时为null,编码详情见附件) |
personal | string | 自我描述 |
salary | string | 当前工资 |
forwardLocation | string | 期望城市 |
aimSalary | string | 期望工资 |
personalInterests | string | 兴趣爱好 |
political | string | 政治面貌 |
educationInfo[] | array | 教育经历 |
educationInfo[].startDate | string | 学校开始时间,最多精确到月。如2010-09 , 2008 |
educationInfo[].endDate | string | 学校结束时间,最多精确到月。如2010-09 , 2008 |
educationInfo[].now | boolean | 结束时间是否表示“至今”。如true 。如果为true ,则endDate的值将可能为任意值,此时直接忽略endDate即可 |
educationInfo[].school | string | 学校名称 |
educationInfo[].speciality | string | 专业名称 |
educationInfo[].academicDegree | string | 学历,以下值之一:本科 ,硕士 ,博士 ,高中 ,大专 ,中专 ,MBA ,其他 |
experienceInfo[] | array | 工作经历 |
experienceInfo[].startDate | string | 工作开始时间,最多精确到月。如2010-09 , 2008 |
experienceInfo[].endDate | string | 工作结束时间,最多精确到月。如2010-09 , 2008 |
experienceInfo[].now | boolean | 结束时间是否表示“至今”。如false 。如果为true ,则endDate的值将可能为任意值,此时直接忽略endDate即可 |
experienceInfo[].company | string | 公司名称 |
experienceInfo[].title | string | 职位名称 |
experienceInfo[].department | string | 部门 |
experienceInfo[].salary | string | 薪资 |
experienceInfo[].summary | string | 工作职责 |
experienceInfo[].reasonForLeaving | string | 离职原因 |
experienceInfo[].underlingNumber | string | 下属人数 |
experienceInfo[].type | string | 公司类型 |
experienceInfo[].size | string | 公司规模 |
awardInfo[] | array | 获奖经历 |
awardInfo[].awardDate | datetime | 获奖时间 |
awardInfo[].awardName | string | 获奖名称 |
resumeUrl | string | 简历下载链接,HTTP GET请求该URL即可下载简历原文件,此链接有时效性,过期时间为1小时,需要收到请求后尽快下载在服务器保存 |
job | object | 应聘职位信息 |
job.jobId | string | 职位ID |
job.title | string | 职位名称 |
job.department | string | 职位所在部门 |
job.departmentPath | string | 职位所在部门的完整路径,从上级到下级,以/ 分割 |
job.departmentCode | string | 部门code |
job.parentDepartmentCode | string | 父级部门code |
job.competencyType | string | 职能类型 |
job.jobDescription | string | 工作描述 |
job.customFields | array | job自定义字段 |
job.customFields[].name | string | job自定义字段名称 |
job.customFields[].value | string | job自定义字段值 |
interviewers[] | array | 参与候选人此次申请的面试官 |
interviewers[].name | string | 面试官姓名 |
interviewers[].email | string | 面试官邮箱 |
interviewers[].phone | string | 面试官电话 |
interviewers[].id | number | 面试id |
interviewers[].groupId | string | 面试组id |
interviewers[].attendStatus | string | 候选人是否接受面试 候选人未反馈 , 候选人未到场 , 候选人已拒绝 , 候选人已接受 |
interviewers[].cancelReason | string | 面试取消原因 |
interviewers[].participated | string | 面试反馈分类 面试未进行 , 已填写反馈 , 未填写反馈 |
interviewers[].status | string | 面试状态 已取消 , 未结束 , 已结束 |
interviewers[].round | integer | 面试轮次,1 : 初试,2 : 复试,3 : 终试 等 |
interviewers[].roundName | string | 面试轮次名称,初试 ,复试 ,终试 等 |
interviewers[].roundOtherName | object | 面试轮次其它语言的名称 |
interviewers[].startTime | string | 面试开始时间 |
interviewers[].createdAt | string | 面试创建时间 |
interviewers[].locationCountry | string | 面试地点(国家) |
interviewers[].locationCityId | number | 面试地点(城市id) |
interviewers[].locationAddress | string | 面试地点(详细地址) |
interviewers[].result Deprecated | integer | 面试结果 1 : 非常不满意, 2 : 不满意, 3 : 满意, 4 : 非常满意 |
interviewers[].resultName | string | 面试反馈结果 |
interviewers[].resultType | integer | 面试反馈结果类型 0 : 不满意 1 : 满意 |
interviewers[].feedback | string | 面试反馈内容 |
interviewers[].resultTime | string | 面试反馈填写时间 |
interviewers[].feedbackTemplateResult | array | 面试评价表的信息 |
interviewers[].feedbackTemplateResult[].type | number 题目类型, 1 : 打分题, 2 : 单选题, 3 : 描述题, 4 : 多选题 |
|
interviewers[].feedbackTemplateResult[].title | string | 题目标题 |
interviewers[].feedbackTemplateResult[].description | string | 题目描述 |
interviewers[].feedbackTemplateResult[].result | number | 总分 |
interviewers[].feedbackTemplateResult[].calcScoreType | string | avg : 计算平均分, total : 计算总分 (只在type 为1时有效) |
interviewers[].feedbackTemplateResult[].scoreType | number | 5 表示5分制,10 表示10分制(只在type 为1时有效) |
interviewers[].feedbackTemplateResult[].needReason | string | 是否需要打分综述(只在type 为1时有效) |
interviewers[].feedbackTemplateResult[].subjects | array | 题目下各个小题的信息 |
interviewers[].feedbackTemplateResult[].subjects[].type | number | 题目类型, 1 : 打分题, 2 : 单选题, 3 : 描述题, 4 : 多选题 |
interviewers[].feedbackTemplateResult[].subjects[].title | string | 小题标题 |
interviewers[].feedbackTemplateResult[].subjects[].description | string | 小题描述 |
interviewers[].feedbackTemplateResult[].subjects[].result | number | 小题结果:打分题为所选分数的数值;单选题为选项的索引值,从0开始;描述题为描述的字符串题目type=2单选题,返回值为 "result": 0,题目type=4多选题 返回值为"result": [1,2] |
interviewers[].feedbackTemplateResult[].subjects[].reason | string | 打分综述 |
interviewers[].feedbackTemplateResult[].subjects[].options | string | 选项字符串数组(只在type 为2时有效) |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord | object | 面试满意度相关信息 |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.sendTime | string | 面试满意度评价表发送时间 |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.isAnonymous | Boolean | 是否匿名评价 |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.content | string | 评价内容,json格式: {"customFields":[{"options":[//选项"选项1","选项2","选项3"],"subTitle":"单选题描述说明111",//子标题"title":"单选题",//标题"type":"single",//类型single单选题,mutiSelect多选题,describe描述题"value":"0"//单选值(下标从0开始)},{"options":["选项11","选项22","选项33","选项44"],"subTitle":"多选题描述说明333","title":"多选题","type":"mutiSelect",//多选题"value":"[0,2,1]"//多选值(下标从0开始,无序)},{"subTitle":"描述题说明4444","title":"描述题","type":"describe",//描述题"value":"描述题结果"//描述题的值}],"essaySectionTitle":"其它评价",//其他评价(在评价表设置时可通过开关配置是否展示)"essayValue":"其他评价结果"//其他评价对应的值} |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.satisfactionDimensions | array | 维度数组(面试过程 |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord[].name | string | 维度名称 |
data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord[].name | string | 维度对应值 |
interviewFeedbackUrl | string | 面试反馈汇总文件下载链接,HTTP GET请求该URL即可下载面试反馈汇总文件,此链接有时效性,过期时间为1小时,需要收到请求后尽快下载在服务器保存 |
extendedInterviewers[] | array | 参与候选人此次申请面试官的无面试反馈信息,具体字段参考interviewers |
extendedInterviewerFeedbackUrl | string | 面试反馈汇总文件下载链接,HTTP GET请求该URL即可下载面试反馈汇总文件,此链接有时效性,过期时间为1小时,需要收到请求后尽快下载在服务器保存 |
ehrCustomFields[] | array | ehr自定义导出字段集合 |
ehrCustomFields[].name | string | 自定义字段名 |
ehrCustomFields[].value | any | 自定义字段值 |
ehrCandidateExternalLink | string | 候选人详情的链接,可以直接在浏览器中打开查看,该链接有效期默认14天 |
referrer | object | 推荐人信息 |
referrer.name | string | 推荐人姓名 |
referrer.email | string | 推荐人邮箱 |
referrer.phone | string | 推荐人电话 |
referrer.number | string | 推荐人工号,以下值之一:null 无工号,xxx 工号 |
jobRanksInfo[].name | string | 职位级别名称 |
jobRanksInfo[].type | string | 职位级别类型 |
jobRanksInfo[].level | string | 职位级别等级 |
headcountInfo[].id | number | Headcount ID |
headcountInfo[].number | string | Headcount 编号 |
headcountInfo[].name | string | Headcount 名称 |
headcountInfo[].status | string | Headcount 状态 |
customFields[] | array | 候选人自定义字段,仅包含标准简历中设置的自定义字段 |
customFields[].name | string | 自定义字段名称 |
customFields[].value | string | 自定义字段值。对于是否题类型,1 代表“是”,0 代表“否”。 |
customFields[].now | boolean | 当自定义字段是时间时存在该字段,表示时间(或时间范围的结束时间)是否是“至今”。例如true 。如果为true ,则对应的时间将可能为任意值,请注意 |
customFields[].section | string | 自定义字段所在的模块名称,模块可以是内置模块(如experienceInfo)或者自定义模块(如紧急联系人) |
customFields[].index | string | 对于experienceInfo、educationInfo或者自定义模块(如紧急联系人)等存在多条数据的模块,index 表示这个字段是第几条数据的自定义字段信息 |
customFields[].codes | string | 选择题自定义code(仅对有code的选择题生效) |
offer | object | offer信息 |
offer.createdAt | string | offer创建时间。日期格式为:ISO8601 |
offer.status | string | offer状态;未创建:notCreated 未发送: pending 待接受:sent 已接收: accepted 已拒绝: rejected |
offer.approvalStatus | string | 审批状态 UNINITIATED: // 未发起;INPROGRESS: // 审批中;APPROVED: // 已通过;REJECTED: // 已驳回;RECALLED: // 已撤回 |
offer.salaryNumber | number | 月薪标准 |
offer.checkinDate | string | 预计入职时间 |
offer.location | string | 入职地点 |
offer.creator | object | offer创建人信息 |
offer.creator.name | string | offer创建人姓名 |
offer.creator.email | string | offer创建人邮箱 |
offer.finishedAt | string | offer接受时间。日期格式为:ISO8601 |
offer.customFields | array | offer自定义字段 |
offer.customFields[].name | string | offer自定义字段名称 |
offer.customFields[].value | string | offer自定义字段值 |
offer.customFields[].codes | string | 选择题自定义code(仅对有code的选择题生效) |
offer.hcInfo | object | offer选中的headCount信息 |
offer.hcInfo.id | number | offer选中的Headcount ID |
offer.hcInfo.number | string | offer选中的Headcount 编号 |
offer.hcInfo.name | string | offer选中的Headcount 名称 |
offer.hcInfo.status | string | offer选中的Headcount 状态 |
offer.jobRankInfo | object | offer选中的职位级别信息 |
offer.jobRankInfo.type | string | offer选中的职位级别 类型 |
offer.jobRankInfo.level | string | offer选中的职位等级 |
offer.jobRankInfo.name | string | offer选中的职位级别 名称 |
offer.departmentName | string | 入职部门名称 |
offer.departmentCode | number | 入职部门code |
offer.parentDepartmentCode | number | 入职部门上级部门code |
offer.departmentPath | string | 入职部门完整路径 |
offer.offerLastSentAt | string | 末次发送offer时间 |
offer.offerAttachmentDownloadUrl | string | offer生成的附件下载URL,有效期1个小时 |
attachments | array | 候选人的所有附件 |
attachments[].name | string | 候选人附件的文件名 |
attachments[].applyFormId | number | 登记表模板ID |
attachments[].size | integer | 候选人附件的文件大小 |
attachments[].url | string | 候选人附件的下载地址 |
attachments[].customFieldId | integer | 自定义附件字段ID |
attachments[].customFieldName | string | 自定义附件字段名称 |
attachments[].type | string | 候选人附件的类型,值为:CANDIDATE_UPLOAD_ATTACHMENT 候选人上传UPLOAD_PORTRAIT 候选人头像HR_UPLOAD_ATTACHMENT HR手动上传HM_UPLOAD_ATTACHMENT 用人经历端手动上传INTERVIEW_ACCEPT 候选人接受面试生成的登记表附件INTERVIEW_SIGNIN 候选人面试签到生成的登记表附件OFFER_ACCEPT 候选人接受OFFER生成的登记表附件MERGE_APPLICATION_ATTACHMENT 候选人合并产生的附件INVITE_UPDATE_RESUME 邀请候选人更新简历生成的登记表 |
offerAttachment | object | 候选人offer相关附件 默认无此字段,如果需要请联系您的CMS, 获取候选人接口开关开启也不会有该字段 |
offerAttachment.url | string | 候选人offer相关附件下载地址 链接地址有效期为1小时 |
examReportLinks | array | 候选人考试/测评结果链接 |
examReportLinks[].name | string | 候选人考试/测评名 |
examReportLinks[].url | string | 候选人考试/测评结果链接 |
examAttachments | array | 候选人考试/测评相关附件 |
examAttachments[].name | string | 候选人考试/测评相关附件文件名 |
examAttachments[].url | string | 候选人考试/测评相关附件下载地址 链接地址有效期为1小时 |
projectInfo | array | 项目经验 |
projectInfo[].startDate | string | 项目开始时间,最多精确到月。如2010-09 , 2008 |
projectInfo[].endDate | string | 项目结束时间,最多精确到月。如2010-09 , 2008 |
projectInfo[].projectName | string | 项目名称 |
projectInfo[].title | string | 担任职责 |
projectInfo[].projectDescript | string | 项目描述 |
projectInfo[].responsibilities | string | 项目中职责 |
projectInfo[].now | boolean | 结束时间是否表示“至今”。如false 。如果为true ,则endDate的值将可能为任意值,此时直接忽略endDate即可 |
languageInfo | array | 语言能力 |
languageInfo[].language | string | 语言类型 |
languageInfo[].level | string | 掌握程度 |
languageInfo[].listenAndSpeak | string | 听说能力 |
languageInfo[].readAndWrite | string | 读写能力 |
stageName | string | 阶段名字 |
jobManager | object | 职位管理员 |
jobManager.name | string | 职位负责人名字 |
jobManager.phone | string | 职位负责人电话 |
jobManager.email | string | 职位负责人邮箱 |
jobManager.employeeId | string | 职位负责人工号 |
jobAssistants | array | 职位协助人 |
jobAssistants[].name | string | 职位协助人名字 |
jobAssistants[].phone | string | 职位协助人电话 |
jobAssistants[].email | string | 职位协助人邮箱 |
jobAssistants[].employeeId | string | 职位协助人工号 |
label | array | 候选人标签 |
label[].id | number | 标签id |
label[].label | string | 标签名称 |
remarks | array | 候选人备注 |
remarks[].creator | object | 备注的创建者信息 |
remarks[].creator.name | object | 备注的创建者名称 |
remarks[].creator.phone | object | 备注的创建者手机号吗 |
remarks[].creator.email | object | 备注的创建者邮箱 |
remarks[].creator.number | object | 备注的创建者工号 |
remarks[].content | string | 备注的内容 |
remarks[].targets | array | 备注的@的人员信息,格式同创建者信息 |
remarks[].is_private | number | 备注是不是私密,1:私密0:非私密 |
remarks[].type | string | 备注类型:人工填写 |
remarks[].created_at | string | 备注创建时间 |
owners | object | 候选人所有者 |
owners.name | string | 候选人所有者名字 |
owners.phone | string | 候选人所有者电话 |
owners.email | string | 候选人所有者邮箱 |
owners.employeeId | string | 候选人所有者工号 |
survey | array | 背调内容 |
survey[].name | string | 背调名称 |
survey[].date | string | 背调日期 |
survey[].result | string | 背调结果 |
survey[].surveyAttachmentsUrl | string | 背调报告链接 |
survey[].surveyAttachmentName | string | 背调附件名称 |
survey[].surveyAttachments[] | array | 背调多附件(新版的单附件和多附件都在这个附件集合,原来的单附件结果只做历史兼容使用) |
survey[].surveyAttachments[].surveyAttachmentsUrl | string | 背调报告链接 |
survey[].surveyAttachments[].surveyAttachmentName | string | 背调附件名称 |
practiceInfo[] | array | 实习经历 |
practiceInfo[].startDate | string | 实习开始时间 |
practiceInfo[].endDate | string | 实习结束时间 |
practiceInfo[].company | string | 公司名称 |
practiceInfo[].title | string | 职位名称 |
customstyleAttachments | object | 自定义登记表信息 |
customstyleAttachments.type | string | 附件类型固定doc |
customstyleAttachments.createTime | string | 创建时间 |
customstyleAttachments.customFieldName | string | 自定义附件名称 |
customstyleAttachments.url | string | 附件下载地址 |
组织架构API
组织架构相关API
组织架构全量同步
Moka 系统中会根据请求的列表对当前系统中的部门进行同步(新增,更新,标记删除)。
同步以department_code为主键,与系统中部门department_code进行对比,允许不同的department_code下同步同名组织:
1、当前系统没有,同步时有:新增一个部门
2、当前系统有,同步时也有:更新已经存在的部门信息。如果同步时有,当前系统部门状态标识为删除,更新后,状态改为正常。
3、当前系统有,同步时没有时:部门打标已删除,需要手动进入 Moka 系统中将该部门合并到其他部门进行删除。
HTTP 请求
PUT https://api.mokahr.com/api-platform/v1/departments
请求样例
$curl --location --request PUT 'https://api-staging003.mokahr.com/api-platform/v1/departments' \
--header 'Authorization: Basic Vl*********8*888888*' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"sequence": 1.68,
"parent_code": "",
"department_code": "110",
"name": "api测试"
},
{
"sequence": 0.92,
"parent_code": "",
"department_code": "112",
"name": "api测试2",
"type": 1
},
{
"sequence": 0.06,
"department_code": "120",
"name": "技术支持测试",
"parent_code": "110",
"type": 1
}
]'
操作成功
{
"success": true,
"result": {
"new": 0,
"delete": 0,
"update": 0
}
}
操作失败
{
"success": false,
"errorMessage": "错误信息"
}
请求body参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
name | 是 | string | 部门名称 |
department_code | 是 | string | 客户系统的部门id |
parent_code | 是 | string | 部门的上级部门的唯一 id, 如为 null 则为一级部门 |
type | 否 | number | 部门类型: 可选值: 1 : 普通部门(默认)2 :门店部门(门店的名称和组织架构内的门店类部门名称一致则会关联对应同名门店) |
sequence | 否 | number | 指定部门排序 数据范围:支持0至10000之间的数,精确到两位小数。 规则:排序按照数字从小到大,相同数字按照创建时间从先到后,该值为空默认排在最后。 |
可能的错误信息
errorMessage | 描述 |
---|---|
部门 ID 重复 | 请求列表中有重复使用的 department_code |
部门重复 | 请求列表中有相同父级部门,名称的部门 |
父级部门未找到 | 部门的父级部门未在列表中找到 |
部门的父级部门不能直接(间接)为自身 | 部门的父级部门(的父级部门...)不能为自身 |
新增组织架构
新增组织架构,不允许同步任何同名组织,无论该组织是否在同一个department_code下。
注意:组织架构增量同步必须使用POST请求,如果使用PUT请求,为全量同步,请求中未提供的部门,部门将标记为已删除。
HTTP请求
POST https://api.mokahr.com/api-platform/v1/departments/sync/incremental
请求样例
$ curl 'https://api.mokahr.com/api-platform/v1/departments/sync/incremental' \
-u 'your_api-keys:' \
-X POST \
-d '[
{ "department_code": "ididid1", "name": "namenamename1", "parent_code": "ididid1", "sequence": 0 },
{ "department_code": "ididid2", "name": "namenamename2", "parent_code": "ididid2" },
{ "department_code": "ididid2", "name": "部门2", "parent_code": "ididid2", "type": 2 },
]'
操作成功
{
"success": true
}
操作失败
{
"success": false,
"errorMessage": "错误信息"
}
请求body参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
name | 是 | string | 部门名称 |
department_code | 是 | string | 客户系统的部门id |
parent_code | 是 | string | 上级部门的唯一 id, 如为 null 则为一级部门 |
type | 否 | number | 部门类型: 可选值: 1 : 普通部门(默认)2 :门店部门 |
sequence | 否 | number | 指定部门排序 数据范围:支持0至10000之间的数组,精确到两位小数。 规则:排序按照数字从小到大,相同数字按照创建时间从先到后,该值为空默认排在最后。 |
返回字段
字段 | 类型 | 描述 |
---|---|---|
success | boolean | 操作是否成功 可选值: true :成功false :失败 |
errorMessage | string | 操作失败的错误原因 |
可能的错误信息
errorMessage | 描述 |
---|---|
当前有未处理完的组织架构更新,请稍后再试 | |
部门名称: XXX, 编号XXX的部门编号重复 | 请求列表中存在重复部门数据或者请求列表中存在于已同步至系统的部门中存在重复 |
父级部门未找到 | 部门的父级部门未在列表中找到 |
部门的父级部门不能直接(间接)为自身 | 部门的父级部门(的父级部门...)不能为自身 |
部门名称XXX,父编号XXX的部门名称已存在 | 某部门下存在相同名称的部门 |
... |
更新组织架构
对指定部门更新组织架构信息 注意: 以department_code为主键进行更新,如果需要更新department_code时,需要传入department_id,将以department_id为主键更新department_code。
HTTP请求
POST https://api.mokahr.com/api-platform/v1/departments
请求样例
curl 'https://api.mokahr.com/api-platform/v1/departments' \
-X POST \
-u 'your_api_keys' \
-d '[
{
"department_code": "ididid111123",
"name": "namenamename1221",
"parent_code": null,
"sequence": 0
},
{
"department_code": "ididid211123",
"name": "namenamename21_testhema",
"parent_code": "ididid31112"
},
{
"department_code": "ididid311123",
"name": "namenamename222test_hema",
"parent_code": "huangtiandi",
"type": 2,
"department_id": 387
}
]'
操作成功
{
"code": 0,
"msg": "成功",
"success": true,
"errorMessage": "",
"data": {}
}
操作失败
{
"code": 625011,
"msg": "department_code(3213232888)在系统中已存在",
"success": false,
"errorMessage": "department_code(323232888)在系统中已存在",
"data": {}
}
请求body参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
name | 是 | string | 部门名称 |
department_code | 是 | string | 客户系统的部门id |
parent_code | 是 | string | 上级部门的唯一 id, 如为 null 则为一级部门 |
type | 否 | number | 部门类型: 可选值: 1 :普通部门(默认)2 :门店部门 |
department_id | 否 | number | 部门在Moka系统中的id,此参数存在时,会优先匹配该参数的部门。 |
sequence | 否 | number | 指定部门排序,支持0至10000的两位小数,为空默认排在最后。按排序从小到大,创建时间从先到后排序 |
返回json字段
字段 | 类型 | 描述 |
---|---|---|
success | boolean | 操作是否成功 |
errorMessage | string | 操作失败的错误原因 |
可能的错误信息
errorMessage | 描述 |
---|---|
当前有未处理完的组织架构更新,请稍后再试 | |
部门名称: XXX, 编号XXX的部门编号重复 | 请求列表中存在重复部门数据或者请求列表中存在于已同步至系统的部门中存在重复 |
父级部门未找到 | 部门的父级部门未在列表中找到 |
部门的父级部门不能直接(间接)为自身 | 部门的父级部门(的父级部门...)不能为自身 |
部门名称XXX,父编号XXX的部门名称已存在 | 某部门下存在相同名称的部门 |
... |