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 返回信息

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