NAV Navbar
Language 切换
代码
  • 文档版本切换/platform
  • 整体流程图/flowchart
  • 绑定认证/Oauth
  • 服务商信息
  • 考试/测评
  • 背调
  • 视频面试
  • 叫号面试
  • 文档版本切换/platform

    Api接口v1版本

    切换到Api接口v1版本

    v2版本

    切换到Api接口v2版本

    考试/测评、背调、视频面试接入指南 (platform)

    切换到考试/测评、背调、视频面试接入指南

    整体流程图/flowchart

    整体流程

    绑定认证/Oauth

    考试/测评、背调、视频面试需要分别进行绑定

    a、绑定步骤

    1.第三方供应商提供推送token的URL与功能URL(根据第三方供应商种类不同,提供的不同业务的URL。如考试第三方供应商则提供创建考试的URL)。

    2.CSM向第三方供应商发放clientId与clientSecret。

    3.第三方供应商带着clientId与redirectUri将用户导向至moka认证页面。

    4.验证成功后moka内部绑定成功,然后带着一次性code将跳转回redirectUri。

    5.第三方供应商用code与clientSecret等请求moka提供API得到accessToken、refreshToken、appId(每次绑定生出唯一值,appId与mokaUser绑定,appId与第三方供应商用户绑定),第三方供应商绑定成功。

    补充

    第三方供应商通过refreshToken维护accessToken长时间有效,如有特殊情况,可以通过联系CSM提供一次推送token的服务(推送到第1步提供的URL上)。

    b、认证所需接口

    a.moka认证页面

    请求地址: https://app.mokahr.com/oauth/login

    请求方式: GET

    请求参数:

    字段 必填 类型 描述
    clientId 是 String moka生产的client的唯一标识
    redirectUri 是 String 重定向地址
    必须为开通时填写的地址一致
    scope 是 String 第三方供应商拥有权限
    exam: 考试, evaluation: 测评, interview: 视频面试, survey: 背调
    state 否 String 在回调时,会回传state参数给第三方应用,第三方应用的开发者可以验证state参数的有效性(也可以记录用户授权页面的位置)

    返回:(绑定后,浏览器页面会跳转到回调地址)

    redirectUri?code=xxxx

    例:http://www.xxx.com/redirect?code=xxx

    注:

    1、code参数会拼接到回调地址url上
    2、code有效期为五分钟

    ---------------------------------------------------------------------------------------
    b.获取accessToken

    请求地址: https://api.mokahr.com/api/oauth/token

    请求方式: POST

    body类型: application/x-www-form-urlencoded

    请求Headers: Content-Type: application/x-www-form-urlencoded

    请求参数:

    字段 必填 类型 描述
    code 是 String 上一步获得的code
    clientId 是 String 开通时提供
    clientSecret 是 String 开通时提供
    redirectUri 是 String 上一步填写的redirectUri
    hireMode 否 integer 招聘模式, 1:社招;2:校招。不填默认都绑定。

    返回结果:

    字段 类型 描述
    accessToken String 访问moka接口的token
    accessTokenExpiresAt String token过期时间
    如:2019-03-24T05:45:39.014Z
    默认为30天
    refreshToken String 用于刷新accessToken的refreshToken
    refreshTokenExpiresAt String refreshToken的过期时间
    如:2019-03-24T05:45:39.014Z
    默认为60天
    scope String 该token所据有的权限
    appId String 每次绑定moka生成的唯一值
    建议与第三方供应商账号绑定

    ---------------------------------------------------------------------------------------
    c.刷新accessToken

    请求地址: https://api.mokahr.com/api/oauth/refresh-token

    请求方式: POST

    body类型: application/x-www-form-urlencoded

    请求Headers: Content-Type: application/x-www-form-urlencoded

    请求参数:

    字段 必填 类型 描述
    refreshToken 是 String 上一步获得的refreshToken
    clientId 是 String 开通时提供
    clientSecret 是 String 开通时提供

    返回结果:

    字段 类型 描述
    accessToken String 访问moka接口的token
    accessTokenExpiresAt String token过期时间
    如:2019-03-24T05:45:39.014Z
    默认为30天
    refreshToken String 用于刷新accessToken的refreshToken
    refreshTokenExpiresAt String refreshToken的过期时间
    如:2019-03-24T05:45:39.014Z
    默认为60天
    scope String 该token所据有的权限

    ---------------------------------------------------------------------------------------
    d.开放平台解绑

    请求样例

    curl -X POST \
      https://app.mokahr.com/api/oauth/unbind \
      --header 'Authorization: Bearer 489645c7ab5f6230d95f6f9488f1d26f6387cbef' \
      --header 'Content-Type: application/json' \
      --data '{"clientId":"a3212","clientSecret":"1","appId":"844450f0-90cc-4722-a3b6-f631fb4a3926"}'
    

    请求地址: https://app.mokahr.com/api/oauth/unbind

    请求方式: POST

    body类型: application/json

    请求Headers: Content-Type: application/json 和 Authorization: Bearer AccessToken

    请求参数:

    字段 必填 类型 描述
    clientId 是 String 开通时提供
    clientSecret 是 String 开通时提供
    appId 是 String 每次绑定moka生成的唯一值
    hireMode 否 integer 招聘模式, 1:社招;2:校招。不填默认都解绑。

    返回结果:

    字段 类型 描述
    success Boolean 是否成功解绑
    errorMessage String 解绑失败信息

    服务商信息

    请求样例

    $ curl --request POST \
        --url http://api.mokahr.com/v1/open-platform/client/info \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
        --form 'logo=@/Users/test/test.png'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/client/info

    请求方式: POST

    body类型: multipart/form-data方式

    请求body参数:

    字段 必填 类型 描述
    logo 是 file 在moka中展示的logo。建议尺寸50px*50px

    更新账户名信息

    请求样例

    $ curl --request POST \
        --url http://api.mokahr.com/v1/open-platform/account/name \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"appId": "d5200272-b9e2-44ac-b728-26d41780ed95","accountName": "我是好人别吃我"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/account/name

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    appId 是 String 绑定成功后第一次获取accessToken时moka返回
    accountName 是 String 账号名称
    允许多账号绑定的client类型
    切换账号时的名称

    考试/测评

    业务流程图

    整体流程

    Moka请求第三方供应商API

    a.创建考试

    请求样例

    $ curl --request POST \
      --url 'http://vendor.com/creat?appId=E8iWPLYYQq8dB5Lu3PEbTQwYLlyzaVOu&clientId=9734f2bc-beff-4439-9497-0aa11fcc932c&time=1547100372&sign=08b6a2f880c697bdee9b6069cbed81ceb7300ea4' \
      --header 'Content-Type: application/json' \
      --data '{"id": "9734f2bc-beff-4439-9497-0aa11fcc932c","event": "createExam","triggeredAt": 1547100372,"data": {"test": true}}'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time + 请求体body)

    请求格式

    字段 必填 类型 描述
    id 是 String moka生成的id(随机数)
    event 是 String 事件名称如: createExam
    triggeredAt 是 Number 触发的时间戳
    data 是 Object 请求的具体内容
    data.applicationId 是 Number 候选人ID
    data.name 是 String 候选人名字
    data.email 是 String 候选人邮件
    data.phone 否 String 候选人手机号
    data.certificateType 否 Integer 证件类型1:身份证,2:香港身份证,3:澳门身份证,4:台湾身份证,5:护照,6:其他证件(需客户页面勾选配置才会传送)
    data.citizenId 否 String 居民身份证号(需客户页面勾选配置才会传送)
    data.paperId 是 String 试卷Id
    data.examId 是 Number 考试结果回传时用的ID.moka保证唯一
    data.appId 是 String 绑定成功后第一次获取accessToken时moka返回
    data.hireMode 是 Number 1-社招 2-校招

    返回结果:

    字段 必填 类型 描述
    v2Res 是 Object v2格式
    v2Res.code 是 Integer 0:成功,非0失败
    v2Res.msg 是 msg 失败/成功描述
    v2Res.data 是 Object data
    v2Res.data.url 是 String 考生考试地址
    v2Res.data.name 否 String 账号
    v2Res.data.password 否 String 密码
    v2Res.data.startTime 否 long 邮件通知上的开始时间(毫秒),不限时可传'',如果不传,则取创建试卷接口上的开始时间,发送给候选人
    v2Res.data.endTime 否 long 邮件通知上的结束时间(毫秒),不限时可传'',如果不传,则取创建试卷接口上的结束时间,发送给候选人

    补充

    为了安全性,请验证time的实效性,建议5分钟内有效。

    第三方供应商请求Moka API

    a.余额

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/exam/balance \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"discount": 0.4,"balance": "100","freeCount": 5, "appId": "fabd076f-1a0f-4fa8-8a5c-306d264e3df1"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/exam/balance

    请求方式: POST

    请求参数:

    字段 必填 类型 描述
    discount 否 Number 折扣(0-10)
    不传或超出范围均当无折扣计算
    balance 是 Number 账户余额
    freeCount 否 Number 不计余额剩余次数
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    b.全量同步试卷列表

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/exam/papers \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"paperList": [{"paperId": "1112","name": "2222222","price": 2}],"appId": "a5fb37d3-f2d1-4121-b59f-b1ca385096b0"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/exam/papers

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    paperList 是 Array 试卷列表
    paperList[].paperId 是 String 试卷ID
    paperList[].name 是 String 试卷名称
    paperList[].startTime 是 String 开始时间
    不限时可传''
    paperList[].endTime 是 String 结束时间
    不限时可传''
    paperList[].price 是 Number 试卷消耗
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    c.更新试卷

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/exam/paper \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"paperId": "1112","name": "test","price": 0, "appId": "8c639a7a-2298-42dd-b0fa-9f23895a60ac"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/exam/paper

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    paperId 是 String 试卷ID
    name 是 String 试卷名称
    startTime 是 String 试卷开始时间
    不限时可传''
    endTime 是 String 试卷结束时间
    不限时可传''
    price 是 Number 试卷消耗
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    d.删除试卷

    请求样例

    $ curl --request DELETE \
        --url https://api.mokahr.com/api-platform/v1/open-platform/exam/paper \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"paperId": "1", "appId": "fabd076f-1a0f-4fa8-8a5c-306d264e3df1"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/exam/paper

    请求方式: DELETE

    请求参数:

    字段 必填 类型 描述
    paperId 是 String 试卷Id
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    e.成绩回传

    请求样例

    $ curl --request POST \
        --url http://api.mokahr.com/v1/open-platform/exam/result \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{
            "examId": "1",
            "result": "5",
            "comment": "不错",
            "cheatedStatus":2,
            "attachments":[
                {
                    "name": "123.pdf",
                    "url": "http://www.example.com/123.pdf"
                }
            ],
            "detail":[
                {
                    "id": "XXX",
                    "name": "XXX",
                    "result": "XXX"
                }
            ]
        }'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/exam/result

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    examId 是 Number 创建考试的时候moka传给第三方供应商的examId
    result 是 String 成绩
    cheatedStatus 否 number 默认是-1,未知,0:未作弊;1:作弊;2:作弊嫌疑
    comment 否 String 评价 (注:传字段的话值不能为空,或者不用传该字段
    attachments 否 Array 附件
    attachments[].name 否 String 附件名称 (注:必须要有后缀,例:123.pdf)
    attachments[].url 否 String 附件URL (注:目前只支持文件格式的附件url。不需要url编码)
    detail 否 Array 详细维度 (注:数组最大长度20个)
    detail[].id 否 String 详细维度id(注:相同试卷的同一维度需保证id唯一,若为空则不支持筛选;返回结果中只支持都传id,或都不传id,不支持部分带id)
    detail[].name 否 String 详细维度名称(注:如果detail不为空,name必传)
    detail[].result 否 String 详细维度成绩(注:如果detail不为空,result必传)
    reportUrl 否 String 服务商报告链接

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 必填 类型 描述
    success 是 boolean 返回结果是否成功

    背调

    业务流程图

    整体流程

    Moka请求第三方供应商API

    a.创建背调

    请求样例

    $ curl --request POST \
      --url 'http://vendor.com/creat?appId=E8iWPLYYQq8dB5Lu3PEbTQwYLlyzaVOu&clientId=9734f2bc-beff-4439-9497-0aa11fcc932c&time=1547100372&sign=08b6a2f880c697bdee9b6069cbed81ceb7300ea4' \
      --header 'Content-Type: application/json' \
      --data '{"id": "9734f2bc-beff-4439-9497-0aa11fcc932c","event": "createSurvey","triggeredAt": 1547100372,"data": {"test": true}}'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time + 请求体body)

    请求格式

    字段 必填 类型 描述
    id 是 String moka生成的id(随机数)
    event 是 String 事件名称如: createExam
    triggeredAt 是 Number 触发的时间戳
    data 是 Object 请求的具体内容
    data.applicationId 是 Number 候选人ID
    data.name 是 String 候选人名字
    data.email 是 String 候选人邮件
    data.phone 否 String 候选人手机号
    data.menuId 是 String 套餐Id
    data.surveyId 是 String 结果回传时用的ID.moka保证唯一
    data.appId 是 String 绑定成功后第一次获取accessToken时moka返回
    data.customFields 是 Object 自定义字段
    data.operator 是 Object 操作人对象
    data.operator.name 是 String 操作人名字
    data.operator.email 是 String 操作人邮件
    data.operator.phone 否 String 操作人手机号

    返回结果:statusCode: 200

    字段 类型 描述
    v2Res object 新版本3段式返回结构
    v2Res.code integer 0: 成功 非0:失败
    v2Res.msg string 返回信息描述
    v2Res.data object 返回信息
    v2Res.data.detailLink String 背调详情链接(用于从MOKA跳到服务商直接查看背调) 非必须

    b.取消背调

    请求样例

    curl -X POST "https://vender.com?appId=&clientId=&time=&sign="  --header 'Content-Type: application/json' --data '{
          "id": "12345",
          "event": "cancelSurvey",
          "triggeredAt": "12345678901",
          "data.surveyId": "12345",
          "data.reason": "候选人拒绝入职"
        }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求body

    字段 必填 类型 描述
    id 是 String moka生成的id(随机数)
    event 是 String 事件名称如: cancelSurvey
    triggeredAt 是 Number 触发的时间戳
    data 是 Object 请求的具体内容
    data.surveyId 是 String 背调Id
    data.reason 否 String 取消原因

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 number 非0代表失败
    msg 否 string 返回信息描述
    data 是 object 返回信息

    补充

    为了安全性,请验证time的实效性,建议5分钟内有效。

    c.推送候选人信息

    请求样例

    @curl --location --request POST 'http://mock-server-yapi.staging-public.svc.k8s.staging.mokahr.com:8080/mock/49/createSurveyV2?appId=980ccbb7-546d-4045-afda-470500ed7258&clientId=PuOBW99eIaJCkFyqI8KhxYX4VMwn3udi&time=1657000349825&sign=4669cf13fa3cfe0004d21ea04eafb01c21a39858' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "orgName": "Moka-生态专用测试",
        "phone": "14592000018",
        "accountName": "默认账号",
        "jobTitle": "sy校招职位3",
        "name": "sys1xz190",
        "applicationId": 422059007,
        "experiences": [
            {
                "endDate": "2019-01",
                "company": "公司2",
                "startDate": "2021-01"
            },
            {
                "endDate": "2016-01",
                "company": "公司1",
                "startDate": "2017-01"
            }
        ],
        "uniqueId": "55c1a97d5b6540e6878f5da5f2d7ebbc797bac2a09664a4ab7b55aed149cf4ee",
        "email": "1009417583@qq.com",
        "operator": {
            "phone": "15001371285",
            "name": "石越",
            "email": "shiyue@mokahr.com"
        }
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求body

    字段 必填 类型 描述
    uniqueId 是 String 唯一ID 用于回传背调订单信息
    applicationId 是 Number 申请ID
    name 是 String 姓名
    email 是 string 邮箱
    phone 是 String 手机号
    jobTitle 是 String 委托公司名称
    orgName 否 String 姓名
    operator 是 object 操作人
    operator.name 是 String 姓名
    operator.email 是 String 邮箱
    operator.phone 否 String 手机号
    experiences 是 array 候选人经历信息
    experiences[].company 否 string 公司名称
    experiences[].jobTitle 否 string 曾就职名称
    experiences[].startDate 否 string 开始时间
    experiences[].endDate 否 string 结束时间
    accountName 是 string 账号名称

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 number 非0代表失败
    msg 否 string 返回信息描述
    data 是 object 返回信息
    data.redirectUrl 是 string 跳转链接

    第三方供应商请求Moka API

    a.余额

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/survey/balance \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"discount": 0.4,"balance": "100","freeCount": 5, "appId": "fabd076f-1a0f-4fa8-8a5c-306d264e3df1"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/balance

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    discount 否 Number 折扣(0-10)
    不传或超出范围均当无折扣计算
    balance 是 Number 账户余额
    freeCount 否 Number 不计余额剩余次数
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    b.自定义字段

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/survey/custom-fields \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"customFields": [{"name": "company","description": "公司"},{"name": "abc","description": "Moka页面显示的名字"}]}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/custom-fields

    接口说明: 全局自定义字段,设置后对使用该服务商的所有租户的所有套餐均适用,个性化自定义字段请在套餐自定义字段中设置

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    customFields 是 Array 自定义字段数组
    customFields[].type 是 integer 自定义字段类型: 0:单行文本,1:多行文本,2:单选题,3:多选题,4:候选人公司,5:候选人学校,6:预计入职时间
    customFields[].options 否 array 自定义字段选择项,选填,当type为2或3的时候,添加JSON型数组, sample: [{ "id": 1, "name": "A"},{"id":2,"name":"B"}]id表示选择组件的选项ID name表示选择组件的选项名称,发起背调时 单选时 传递的参数值是id,多选时 传递的参数值是以逗号分隔的多个id
    customFields[].name 是 String 传给接口的字段key
    customFields[].description 是 String Moka页面显示的名字
    customFields[].isRequired 否 boolean 是否必填

    ---------------------------------------------------------------------------------------
    c.全量套餐列表

    请求样例

    $ curl --location --request POST 'https://api.mokahr.com/api-platform/v1/open-platform/survey/menus' \
    --header 'Authorization:  Bearer 7**********************79' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "menuList": [
            {
                "price": 280,
                "name": "社招B套餐",
                "menuId": "D7***************439A",
                "description": "社招B套餐"
            },
            {
                "price": 150,
                "name": "学生套餐",
                "menuId": "BCA8****************C9EA439A",
                "description": "学生套餐"
            }
        ],
        "appId": "1a7c7b6d-6***************5acc14f0"
    }'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/menus

    接口说明: 如果套餐中设置了自定义字段则使用套餐的设置,否则使用服务商级别的全局自定义字段

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    menuList 是 Array 套餐列表
    menuList[].menuId 是 String 套餐ID
    menuList[].name 是 String 套餐名称
    menuList[].description 是 String 套餐描述
    menuList[].price 是 Number 套餐价格
    appId 是 String 绑定成功后第一次获取accessToken时moka返回
    menuList[].customFields 否 array 套餐自定义字段(参照自定义字段接口)
    menuList[].customFields[].type 是 number 自定义字段类型: 0:单行文本,1:多行文本,2:单选题,3:多选题,4:候选人公司,5:候选人学校,6:预计入职时间
    menuList[].customFields[].name 是 string 自定义字段描述
    menuList[].customFields[].description 是 string 自定义字段描述
    menuList[].customFields[].options 否 array 自定义字段选择项,选填,当type为2或3的时候,添加JSON型数组, sample: [{ "id": "1", "name": "A"},{"id":"2","name":"B"}]id表示选择组件的选项ID name表示选择组件的选项名称,发起背调时 单选时 传递的参数值是id,多选时 传递的参数值是以逗号分隔的多个id
    menuList[].customFields[].options[].id 是 string 选择组件的选项ID
    menuList[].customFields[].options[].name 是 string 选择组件的选项名称
    menuList[].customFields[].isRequired 否 boolean 是否必填

    ---------------------------------------------------------------------------------------
    d.更新套餐

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/survey/menu \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"menuId": "1112","name": "test","price": 0,"appId": "a5fb37d3-f2d1-4121-b59f-b1ca385096b0"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/menu

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    menuId 是 String 套餐ID
    name 是 String 套餐名称
    description 否 String 套餐描述
    price 是 Number 试卷消耗
    appId 是 String 绑定成功后第一次获取accessToken时moka返回
    customFields 否 array 套餐自定义字段(参照自定义字段接口)
    customFields[].type 是 number 自定义字段类型: 0:单行文本,1:多行文本,2:单选题,3:多选题,4:候选人公司,5:候选人学校,6:预计入职时间
    customFields[].name 是 string 自定义字段描述
    customFields[].description 是 string 自定义字段描述
    customFields[].options 否 array 自定义字段选择项,选填,当type为2或3的时候,添加JSON型数组, sample: [{ "id": "1", "name": "A"},{"id":"2","name":"B"}]id表示选择组件的选项ID name表示选择组件的选项名称,发起背调时 单选时 传递的参数值是id,多选时 传递的参数值是以逗号分隔的多个id
    customFields[].options[].id 是 string 选择组件的选项ID
    customFields[].options[].name 是 string 选择组件的选项名称
    customFields[].isRequired 否 boolean 是否必填

    ---------------------------------------------------------------------------------------
    e.删除套餐

    请求样例

    $ curl --request DELETE \
        --url https://api.mokahr.com/api-platform/v1/open-platform/survey/menu \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"menuId": "1","appId": "a5fb37d3-f2d1-4121-b59f-b1ca385096b0"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/menu

    请求方式: DELETE

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    menuId 是 String 套餐Id
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    f.结果回传

    请求样例

    $ curl --request POST \
        --url http://api.mokahr.com/v1/open-platform/survey/result \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{
            "result": "xxx",
            "surveyId": "1",
            "comment": "最大255的限制制",
            "attachment": {
                "name": "123.html",
                "url": "http://www.example.com/index.html"
            }
        }'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/result

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    result 否 String 结果(长度限制20个字符,为空时默认为完成)
    attachment 否 Object 附件
    attachment.name 否 String 附件名称(需要带上后缀名)
    attachment.url 否 String 附件URL,不需要url编码
    surveyId 是 Number 创建背调的时候moka传给第三方供应商的surveyId
    attachments[] 否 Array 背调多附件,最多支持10个附件(新对接的单附件或多附件请传这个字段,原attachment对象只是兼容历史版本)
    attachments[].name 是 String 附件名称(需要带上后缀名)
    attachments[].url 是 String 附件URL,不需要url编码
    comment 否 String 备注,支持255个字符

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 必填 类型 描述
    success 是 boolean 返回结果是否成功

    ---------------------------------------------------------------------------------------
    g.背调进度阶段回传

    请求样例

    $ curl --request POST \
        --url http://api.mokahr.com/v1/open-platform/survey/stage \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"stageId": "1", "name": "发送链接给候选人", "stageAt": "2019-10-10 01:01:01", "surveyId": 3}'
    

    返回样例

      {
        success: true
      }
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/stage

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    stageId 否 String 背调阶段ID
    name 是 String 背调阶段名称
    stageAt 是 datetime 背调阶段的时间
    surveyId 是 Number 创建背调的时候moka传给第三方供应商的surveyId

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 必填 类型 描述
    success 是 boolean 返回结果是否成功

    ---------------------------------------------------------------------------------------
    h.回传候选人信息

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/survey/getCandidateInfo \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"surveyId": 18}'
    

    返回样例

      {
        code: 0,
        msg: "success",
        data: {
            resumeUrl: "https://proxy-oss-test.mokahr.com/a5684434-86d8-44db-bd69-76ebe942e12e.pdf?OSSAccessKeyId=LTAIoEXIQWCGUAZO&Expires=1599462096&Signature=IrNuG2qaCJXp8FM7JyvPe04N5%2B0%3D",
            standardResumeUrl: "https://proxy-oss-test.mokahr.com/xxx.pdf?OSSAccessKeyId=LTAIoEXIQWCGUAZO&Expires=1599462096&Signature=IrNuG2qaCJXp8FM7JyvPe04N5%2B0%3D"
        }
      }
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/survey/getCandidateInfo

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    surveyId 是 Number 创建背调的时候moka传给第三方供应商的surveyId

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 类型 描述
    code number 非0代表错误
    success string 返回处理的结果信息
    data object 返回结果的对象
    data.resumeUrl string 原始简历链接(客户在MOKA配置了允许推送原始简历且存在原始简历时 值非空)
    data.standardResumeUrl string 标准简历链接(客户在MOKA配置了允许推送标准简历时 值非空)

    I.回传背调订单信息

    请求样例

    $ curl --location --request POST 'https://app.mokahr.com/api-platform/v2/open-platform/survey/orderCallback' \
    --header 'Authorization: Bearer 6cdc13de41c5e76e020d403cb227cf7754962786' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "menuId": "s2test1",
        "menuName": "S2测试套餐",
        "uniqueId": "f67cd05d67294e8b86c55eee5f3587da17a01b6c39ed4374ba7c2784aaa573e7",
        "detailLink": "https://beidiao.com/orderDetail?token=XXX"
    }'
    

    返回样例

      {
        code: 0,
        msg: "success",
        data: {
            surveyId: "***"
        }
      }
    

    请求地址: https://api.mokahr.com/api-platform/v2/open-platform/survey/orderCallback

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    menuId 是 string 套餐Id
    menuName 是 string 套餐名称
    uniqueId 是 string 唯一ID
    detailLink 否 string 背调详情链接 (用于从MOKA跳转到服务商查看背调详情)

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 类型 描述
    code number 非0代表错误
    msg string 返回处理的结果信息
    data object 返回结果的对象
    data.surveyId string 返回MOKA侧背调ID,用于背调结果回传结果的链接

    视频面试

    Moka请求第三方供应商API

    a.创建视频面试

    请求样例

    $ curl --request POST \
      --url 'http://vendor.com/creat?appId=E8iWPLYYQq8dB5Lu3PEbTQwYLlyzaVOu&clientId=9734f2bc-beff-4439-9497-0aa11fcc932c&time=1547100372&sign=08b6a2f880c697bdee9b6069cbed81ceb7300ea4' \
      --header 'Content-Type: application/json' \
      --data '{
        "id": "070e67b4e1104daca596059898c31e9b",
        "event": "createInterview",
        "triggeredAt": 1614675195,
        "data": {
            "applicationId": 418430746,
            "name": "test2",
            "email": "wangliwei@mokahr.com",
            "phone": "17657685768",
            "typeId": "1379",
            "interviewTime": "2021-03-02 17:00:00",
            "hireMode": 1,
            "appId": "836474a1-cdaf-4fab-9bfd-047bd29b0c3b",
            "jobTitle": "自动化测试-飞飞",
            "interviews": [
                {
                    "startTime": "2021-03-02 17:00:00",
                    "duration": 30,
                    "interviewers": [
                        {
                            "name": "石越",
                            "email": "shiyue@mokahr.com",
                            "phone": "15001371285"
                        }
                    ]
                }, 
                {
                    "startTime": "2021-03-02 17:30:00",
                    "duration": 30,
                    "interviewers": [
                        {
                            "name": "王立伟2",
                            "email": "3300352025@qq.com",
                            "phone": "17857685760"
                        }, 
                        {
                            "name": "shuobin",
                            "email": "wangshuobin@mokahr.com",
                            "phone": "18746574657"
                        }
                    ]
                }
            ]
        }
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time + 请求体body)

    请求格式

    字段 必填 类型 描述
    id 是 String moka生成的id(随机数)
    event 是 String 事件名称如: createExam
    triggeredAt 是 Number 触发的时间戳
    data 是 Object 请求的具体内容
    data.applicationId 是 Number 候选人ID
    data.name 是 String 候选人名字
    data.email 是 String 候选人邮件
    data.phone 否 String 候选人手机号
    data.typeId 是 String 类型Id
    data.interviewTime 是 String 面试时间 YYYY-MM-DD HH:mm:ss
    data.hireMode 是 Number 1-社招 2-校招
    data.appId 是 String 绑定成功后第一次获取accessToken时moka返回
    data.jobTitle 是 String 职位名称
    data.interviews 是 Array 面试信息
    data.interviews[].startTime 是 String 面试开始时间
    data.interviews[].duration 是 Number 面试时长
    data.interviews[].interviewers 是 Array 面试官信息
    data.interviews[].interviewers[].email 是 String 面试官邮箱
    data.interviews[].interviewers[].name 是 String 面试官信息
    data.interviews[].interviewers[].phone 是 String 面试官电话

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    videoId 是 String vendor保证唯一uid
    interviewerUrl 是 String 面试官地址
    intervieweeUrl 是 String 候选人面试地址

    b.创建面试V2版本

    请求样例

    $ curl --request POST \
      --url 'http://www.test.com/interview/creat?appId=E8iWPLYYQq8dB5Lu3PEbTQwYLlyzaVOu&clientId=9734f2bc-beff-4439-9497-0aa11fcc932c&time=1547100372&sign=08b6a2f880c697bdee9b6069cbed81ceb7300ea4' \
      --header 'Content-Type: application/json' \
      --data '{
        "appId": "6542335467",
        "typeId": "324354657",
        "hireMode": 1,
        "groupId": "6542335467",
        "candidates": [
            {
                "applicationId": 12345,
                "name": "张三",
                "email": "zhangsan@test.com",
                "phone": "15012345678",
                "countryCallingCode": "+86",
                "jobTitle": ""
            }
        ],
        "interviews": [
            {
                "interviewId": 12345,
                "roundId": 1,
                "roundName": "第一轮",
                "startTime": "2020-01-01",
                "duration": 30,
                "interviewers": [
                    {
                        "interviewInterviewerId": 3456,
                        "email": "lisi@test.com",
                        "name": "李四",
                        "phone": "15012345678"
                    }
                ]
            }
        ],
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求格式

    字段 必填 类型 描述
    candidates 是 Array 候选人信息
    candidates[].applicationId 是 Number 候选人申请ID
    candidates[].name 是 String 候选人名字
    candidates[].email 是 String 候选人邮件
    candidates[].phone 否 String 候选人手机号
    candidates[].countryCallingCode 否 String 候选人电话区号
    candidates[].jobTitle 是 String 职位名称
    appId 是 String 与moka绑定成功后返回的appId
    typeId 是 String 类型Id
    hireMode 是 Number 1-社招 2-校招
    groupId 是 String 面试组ID
    interviewCreatorEmail 否 String 面试创建人邮箱
    interviews 是 Array 面试信息
    interviews[].interviewId 是 String 面试id
    interviews[].roundId 是 Number 轮次id
    interviews[].roundName 是 String 轮次名称
    interviews[].startTime 是 String 面试开始时间
    interviews[].duration 是 Number 面试时长(单位:分)
    interviews[].interviewers 是 Array 面试官信息
    interviews[].interviewers[].interviewInterviewerId 是 Number 面试的面试官ID
    interviews[].interviewers[].email 是 String 面试官邮箱
    interviews[].interviewers[].name 是 String 面试官姓名
    interviews[].interviewers[].phone 否 String 面试官电话

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 Number 0: 成功 非0:失败
    msg 否 String 返回信息描述
    data 是 Object 返回信息
    data.videoId 是 String vendor保证唯一uid
    data.intervieweeUrls 是 Array 候选人面试地址
    data.intervieweeUrls[].applicationId 是 Number 申请ID
    data.intervieweeUrls[].interviewId 是 Number 面试ID
    data.intervieweeUrls[].url 是 String 候选人面试地址
    data.interviewerUrls 是 Array 面试官面试地址
    data.interviewerUrls[].interviewInterviewerId 是 Number 面试的面试官ID
    data.interviewerUrls[].url 是 String 面试官面试地址

    c.修改面试V2版本

    与V2的创建面试接口配套使用

    请求样例

    $ curl --request POST \
      --url 'http://www.test.com/interview/uodate?appId=E8iWPLYYQq8dB5Lu3PEbTQwYLlyzaVOu&clientId=9734f2bc-beff-4439-9497-0aa11fcc932c&time=1547100372&sign=08b6a2f880c697bdee9b6069cbed81ceb7300ea4' \
      --header 'Content-Type: application/json' \
      --data '{
        "videoId": "6542335467",
        "groupId": "324354657",
        "interviews": [
            {
                "interviewId": 12345,
                "roundId": 1,
                "roundName": "第一轮",
                "startTime": "2020-01-01",
                "duration": 30,
                "interviewers": [
                    {
                        "interviewInterviewerId": 3456,
                        "email": "lisi@test.com",
                        "name": "李四",
                        "phone": "15012345678"
                    }
                ]
            }
        ],
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求格式

    字段 必填 类型 描述
    videoId 是 String 创建面试后vendor返回的值
    groupId 是 String 面试组ID
    interviewModifierEmail 否 String 面试修改人邮箱
    interviews 是 Array 面试信息
    interviews[].interviewId 是 String 面试id
    interviews[].roundId 是 Number 轮次id
    interviews[].roundName 是 String 轮次名称
    interviews[].startTime 是 String 面试开始时间
    interviews[].duration 是 Number 面试时长(单位:分)
    interviews[].interviewers 是 Array 面试官信息
    interviews[].interviewers[].interviewInterviewerId 是 Number 面试的面试官ID
    interviews[].interviewers[].email 是 String 面试官邮箱
    interviews[].interviewers[].name 是 String 面试官姓名
    interviews[].interviewers[].phone 否 String 面试官电话

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 Number 0: 成功 非0:失败
    msg 否 String 返回信息描述
    data 是 Object 返回信息
    data.videoId 是 String vendor保证唯一uid
    data.intervieweeUrls 是 Array 候选人面试地址
    data.intervieweeUrls[].applicationId 是 Number 申请ID
    data.intervieweeUrls[].interviewId 是 Number 面试ID
    data.intervieweeUrls[].intervieweeurl 是 String 候选人面试地址
    data.interviewerUrls 是 Array 面试官面试地址
    data.interviewerUrls[].interviewInterviewerId 是 Number 面试的面试官ID
    data.interviewerUrls[].url 是 String 面试官面试地址

    d.取消面试

    与V2的创建面试接口配套使用

    请求样例

    $ curl --request POST \
      --url 'http://www.test.com/interview/delete?appId=E8iWPLYYQq8dB5Lu3PEbTQwYLlyzaVOu&clientId=9734f2bc-beff-4439-9497-0aa11fcc932c&time=1547100372&sign=08b6a2f880c697bdee9b6069cbed81ceb7300ea4' \
      --header 'Content-Type: application/json' \
      --data '{
        "appId": "6542335467",
        "typeId": "324354657",
        "hireMode": 1,
        "groupId": "6542335467",
        "interviewIds": [123, 345],
        "applicationIds": [45678, 87654],
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求格式

    字段 必填 类型 描述
    videoId 是 String 创建面试后vendor返回的值
    groupId 是 String 面试组ID
    interviewIds 否 Array 面试id列表 如果不传或者数组为空 则取消该面试组
    applicationIds 否 Array 候选人申请ID列表 只在集体面试下取消某个候选人的面试时非空

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 Number 0: 成功 非0:失败
    msg 否 String 返回信息描述
    data 是 Object 返回信息

    补充

    为了安全性,请验证time的实效性,建议5分钟内有效。

    第三方供应商请求Moka API

    a.余额

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/interview/balance \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"discount": 0.4,"balance": "100","freeCount": 5}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/balance

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    discount 否 Number 折扣(0-10)
    不传或超出范围均当无折扣计算
    balance 是 Number 账户余额
    freeCount 否 Number 不计余额剩余次数
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    b.自定义成绩

    请求样例

    $ curl --request POST \
        --url http://api2.mokahr.com:3000/v1/open-platform/interview/custom-result \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"resultList":["满意","不错","还行"]}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/custom-result

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    resultList 是 Array 自定义成绩

    ---------------------------------------------------------------------------------------
    c.全量套餐列表

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/interview/types \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"typeList": [{"typeId": "1112","name": "2222222","price": 2}],"appId": "a5fb37d3-f2d1-4121-b59f-b1ca385096b0"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/types

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    typeList 是 Array 套餐列表
    typeList[].typeId 是 String 类型ID
    typeList[].name 是 String 套餐名称
    typeList[].price 是 Number 套餐价格
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    d.更新套餐

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v1/open-platform/interview/type \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"typeId": "1112","name": "test","price": 0,"appId": "a5fb37d3-f2d1-4121-b59f-b1ca385096b0"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/type

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    typeId 是 String 类型ID
    name 是 String 套餐名称
    price 是 Number 试卷消耗
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    e.删除套餐

    请求样例

    $ curl --request DELETE \
        --url https://api.mokahr.com/api-platform/v1/open-platform/interview/type \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"typeId": "1","appId": "a5fb37d3-f2d1-4121-b59f-b1ca385096b0"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/type

    请求方式: DELETE

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    typeId 是 String 类型Id
    appId 是 String 绑定成功后第一次获取accessToken时moka返回

    ---------------------------------------------------------------------------------------
    f.结果回传

    请求样例

    $ curl --request POST \
        --url http://api.mokahr.com/v1/open-platform/interview/result \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{"feedback": "棒", "score": "100", "videoId": "12345"}'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/result

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    feedback 是 String 面试反馈
    score 是 String 成绩,可与moka系统中的面试结果做匹配
    videoId 是 String 与创建视频面试时返回的背调结果相同

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 必填 类型 描述
    success 是 boolean 返回结果是否成功

    g.结果回传v2版本

    请求样例

    $ curl --request POST \
        --url https://api.mokahr.com/api-platform/v2/open-platform/interview/result \
        --header 'Authorization: Bearer 6efe04cbc4b00ed85e2d8e9d3e8e622de435e55a' \
        --header 'Content-Type: application/json' \
        --data '{
            "interviewInterviewerId": 12345,
            "applicationId": 6789,
            "score": "100",
            "feedback": "面试反馈"
            }'
    

    请求地址: https://api.mokahr.com/api-platform/v2/open-platform/interview/result

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    interviewInterviewerId 是 Number 面试的面试官ID
    applicationId 是 String 申请ID
    score 是 String 成绩,可与moka系统中的面试结果做匹配
    feedback 是 String 面试反馈

    ---------------------------------------------------------------------------------------

    mokaAPI返回结果:

    字段 必填 类型 描述
    code 是 Number 返回结果是否成功。0: 成功
    msg 否 String 返回信息描述
    data 是 Object 返回信息

    叫号面试

    业务流程图

    整体流程 ps:若用户在服务商修改面试,目前不会同步Moka。

    Moka请求第三方供应商API

    a.创建视频面试

    请求样例

    $ curl --location --request POST 'https://dhr.nowcoder.com/v1/partners/moka/create-scene?appId=46dc1350-3dd2-444c-acab-02ef5a94d374&clientId=aUX4cI0lfhtkXTBmlXED1g0ra9xqKvDZ&time=1646311615&sign=fbeef2b972ac6b2955311899abafc3b0101a5ea6' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "projectType": "1",
        "projectName": "0303-2",
        "projectId": "5b4b2319da2a485ba5e71bae3b52cb0ee435f34900804d4ead4cf19c65c",
        "startDate": 1646312400000,
        "rounds": [
            {
                "roundNumber": 1,
                "round": 4,
                "roundName": "初试",
                "rows": [
                    {
                        "jobIds": [],
                        "interviewers": [
                            {
                                "interviewerEmail": "shiyue@mokahr.com",
                                "interviewerMobile": "15001371285",
                                "interviewerId": 410050593,
                                "InterviewerName": "石越"
                            }
                        ],
                        "mainInterviewerId": 410050593
                    }
                ]
            }
        ],
        "applications": [
            {
                "jobName": "sy校招职位3",
                "resumeUrl": "https://staging-1.mokahr.com/forward/candidate/info?access_token=17750f2a081d46909ded95d8dead2dc479aa43dea64b40a3aa51b38093133e77",
                "jobId": "947f77cd-bb13-487b-ae8c-d96078ce8e78",
                "phone": "14592000013",
                "name": "sys1xz185",
                "startTime": 1646312400000,
                "applicationId": 422059002,
                "email": "1009417583@qq.com"
            }
        ]
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time + 请求体body)

    请求格式

    字段 必填 类型 描述
    projectId 是 String MOKA的叫号面试项目ID
    projectName 是 String 叫号面试项目名称
    projectType 是 String 项目类型
    startDate 是 number 开始时间(叫号面试当天时间0点的时间戳 单位:ms)
    rounds 是 array 轮次信息
    rounds[].round 否 number 轮次
    rounds[].roundName 是 String 轮次名称
    rounds[].roundNumber 是 Number 轮次顺序
    rounds[].rows 是 array 分组
    rounds[].rows[].jobIds[] 是 array 可面试的职位id列表(传空不限职位)
    rounds[].rows[].mainInterviewerId 是 Number 主面试官ID(与面试官ID一致)
    rounds[].rows[].interviewers 是 array 所有面试官信息
    rounrounds[].rows[].interviewers[].interviewerIdds 是 Number 面试官ID
    rounds[].rows[].interviewers[].InterviewerName 是 String 面试官姓名
    rounds[].rows[].interviewers[].interviewerMobile 否 string 面试官电话
    rounds[].rows[].interviewers[].interviewerEmail 否 string 面试官email
    applications 是 array 候选人申请信息
    applications[].applicationId 是 number 申请id
    applications[].startTime 是 number 开始时间戳(单位:ms)
    applications[].name 否 string 候选人姓名
    applications[].email 否 string 候选人email
    applications[].phone 否 string 候选人phone
    applications[].jobId 是 string 职位id
    applications[].jobName 是 string 职位名称
    applications[].resumeUrl 是 string 职位简历

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 number 0: 成功  非0:失败
    msg 否 String 返回信息描述
    data 是 object 返回信息

    b.修改叫号面试

    请求样例

    $ curl --location --request POST 'https://dhr.nowcoder.com/v1/partners/moka/update-scene?appId=46dc1350-3dd2-444c-acab-02ef5a94d374&clientId=aUX4cI0lfhtkXTBmlXED1g0ra9xqKvDZ&time=1646311366&sign=6296090bbc0638959e8706c36cf6ca9d0d0a78bb' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "vendorProjectId": "2382",
        "projectType": "1",
        "projectName": "0303牛客叫号",
        "projectId": "c9ccdeebcfde4fd58b58e545ee30c1b0a727e372ee9a4a6d9da06be13eaf0bda",
        "startDate": 1646314200000,
        "rounds": [
            {
                "roundNumber": 1,
                "round": 4,
                "roundName": "初试",
                "rows": [
                    {
                        "jobIds": [],
                        "interviewers": [
                            {
                                "interviewerEmail": "shiyue@mokahr.com",
                                "interviewerMobile": "15001371285",
                                "interviewerId": 410050593,
                                "InterviewerName": "石越"
                            }
                        ],
                        "mainInterviewerId": 410050593
                    }
                ]
            }
        ],
        "applications": [
            {
                "jobName": "sy校招职位3",
                "resumeUrl": "https://staging-1.mokahr.com/forward/candidate/info?access_token=db8583715cb949f4af7e030c62b43733ee4ea1fff7844d60933ede7aa36aba84",
                "jobId": "947f77cd-bb13-487b-ae8c-d96078ce8e78",
                "phone": "14592000015",
                "name": "sys1xz187",
                "startTime": 1646314200000,
                "applicationId": 422059004,
                "email": "1009417583@qq.com"
            }
        ]
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求格式

    字段 必填 类型 描述
    vendorProjectId 是 string 服务商的叫号面试项目ID
    projectId 是 String MOKA的叫号面试项目ID
    projectName 是 String 叫号面试项目名称
    projectType 是 String 项目类型
    startDate 是 number 开始时间(叫号面试当天时间0点的时间戳 单位:ms)
    rounds 是 array 轮次信息
    rounds[].round 否 number 轮次
    rounds[].roundName 是 String 轮次名称
    rounds[].roundNumber 是 Number 轮次顺序
    rounds[].rows 是 array 分组
    rounds[].rows[].jobIds[] 是 array 可面试的职位id列表(传空不限职位)
    rounds[].rows[].mainInterviewerId 是 Number 主面试官ID(与面试官ID一致)
    rounds[].rows[].interviewers 是 array 所有面试官信息
    rounrounds[].rows[].interviewers[].interviewerIdds 是 Number 面试官ID
    rounds[].rows[].interviewers[].InterviewerName 是 String 面试官姓名
    rounds[].rows[].interviewers[].interviewerMobile 否 string 面试官电话
    rounds[].rows[].interviewers[].interviewerEmail 否 string 面试官email
    applications 是 array 候选人申请信息
    applications[].applicationId 是 number 申请id
    applications[].startTime 是 number 开始时间戳(单位:ms)
    applications[].name 否 string 候选人姓名
    applications[].email 否 string 候选人email
    applications[].phone 否 string 候选人phone
    applications[].jobId 是 string 职位id
    applications[].jobName 是 string 职位名称
    applications[].resumeUrl 是 string 职位简历

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 number 0: 成功  非0:失败
    msg 否 String 返回信息描述
    data 是 object 返回信息

    c.取消叫号面试

    请求样例

    $ curl --location --request POST 'https://dhr.nowcoder.com/v1/partners/moka/cancel-scene?appId=46dc1350-3dd2-444c-acab-02ef5a94d374&clientId=aUX4cI0lfhtkXTBmlXED1g0ra9xqKvDZ&time=1646311517&sign=9c9930c66583e132ffb0ca32ce7b61bf77651300' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "vendorProjectId": "2382",
        "projectId": "c9ccdeebcfde4fd58b58e545ee30c1b0a727e372ee9a4a6d9da06be13eaf0bda"
    }'
    

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求query

    字段 描述
    appId 与moka绑定成功后返回的appId
    clientId 对接前提供的clientId
    time 当前时间戳
    sign sha1(clientId +clientSecret + appId + time)

    请求格式

    字段 必填 类型 描述
    projectId 是 String MOKA叫号面试的项目ID
    vendorProjectId 是 String 服务商叫号面试的项目ID

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 Number 0: 成功 非0:失败
    msg 否 String 返回信息描述
    data 是 Object 返回信息

    补充

    为了安全性,请验证time的实效性,建议5分钟内有效。

    第三方供应商请求Moka API

    a.面试结果回传

    请求样例

    $ curl --location --request POST 'https://api.mokahr.com/v1/open-platform/interview/interview-queues/syncFeedback' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "projectId": "70ca990041dd4791ab691476cf4256f77458b04c63794fcda622316b22567522",
        "vendorProjectId": "2222222222222",
        "applicationId": 419165734,
        "total": "4.0",
        "comment": "tttttt....",
        "interviewerId": 410112436,
        "startTime": 1642754689429,
        "signedInAt": 1642754679429,
        "duration": 30,
        "roundNumber": 1,
        "videoId": "fdsafdsafsaewrewre"
    }'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/interview-queues/syncFeedback

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求body参数:

    字段 必填 类型 描述
    projectId 是 string moka的叫号面试项目id
    vendorProjectId 是 string 服务商的叫号面试项目名称
    applicationId 是 Number 申请ID
    total 是 String 分数
    comment 否 String 评价
    reportUrl 否 String 报告链接
    interviewerId 是 number 面试官id
    startTime 是 nunber 实际开始时间 时间戳(单位:毫秒)
    duration 否 number 面试时长(单位:分钟)
    round 否 number 轮次
    roundNumber 是 number 轮次顺序
    signedInAt 否 number 签到时间 (单位:毫秒)
    videoId 是 string 视频面试ID

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 number 0: 成功  非0:失败
    msg 否 String 返回信息描述
    data 是 object 返回信息

    ---------------------------------------------------------------------------------------
    b.创建结果回调接口

    请求样例

    $ curl --location --request POST 'https://api.mokahr.com/v1/open-platform/interview/interview-queues/syncSaveResult' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "projectId": "1e414b24e478472d88f4c87c2b8c4a39d20d53cbc3914057a72daea282a04a5c",
        "vendorProjectId": "",
        "code": 1,
        "errorMsg": "",
        "applicationErrors": [
            {
                "applicationId": 1,
                "name": "要结束了么",
                "errorInfo": ""
            }
        ],
        "interviewerErrors": [
            {
                "interviewerId": 410050593,
                "name": "石越",
                "errorInfo": ""
            }
        ]
    }'
    

    请求地址: https://api.mokahr.com/api-platform/v1/open-platform/interview/interview-queues/syncSaveResult

    请求方式: POST

    body类型: raw-JSON(application/json)

    请求参数:

    字段 必填 类型 描述
    projectId 是 string moka的叫号面试项目id
    vendorProjectId 是 string 服务商的叫号面试项目名称
    code 是 number 0: 全部成功  非0:失败
    errorMsg 是 string 错误信息
    applicationErrors 否 array 候选人报错信息
    errorapplicationErrors[].applicationIdMsg 是 number 申请ID
    applicationErrors[].name 否 string 候选人姓名
    applicationErrors[].errorInfo 否 string 错误信息
    interviewerErrors 是 array 面试官报错信息
    interviewerErrors[].interviewerId 是 number 面试官id
    interviewerErrors[].name 否 string 面试官姓名
    interviewerErrors[].errorInfo 否 string 错误信息

    返回结果:

    statusCode: 200

    字段 必填 类型 描述
    code 是 number 0: 成功  非0:失败
    msg 否 String 返回信息描述
    data 是 object 返回信息

    ---------------------------------------------------------------------------------------