Moka ATS标准交付集成开发方案
2024年8月19日 更新
开启更多功能,提升办公效能


第一章 

1.1 编写目的

Moka API的设计基于REST,使用标准的HTTP功能如HTTP方法、HTTP状态码以及HTTP basic auth等,以便于支持HTTP的服务可以便捷接入。所有的接口数据都通过JSON格式传输(包括错误信息),并使用Unicode UTF-8进行编码。当有字段值为空的时候,返回的结果为null,若字段为数组型且为空的时候,返回的结果为空数组[]

 



第二章 文档概述

2.1 ATS标准集成场景

序号

集成系统

集成协议

集成场景

描述

1

第三方

Rest

单点登支持三种协议cas/oauth2/moka通用

只支持第三方向moka跳转,无登出(推荐使用moka通用单点登录)

2



用户人员信息同步

推荐使用v2同步人事信息接口,v1无法修改角色

3



部门组织架构同步

无特殊要求v1版本即可(推荐引导客户使用全量同步接口)

4



招聘需求同步

不支持批量创建

5



职位同步

不支持批量创建 

6



员工入职、转正、离职状态对接

先入职才能做转正和离职的操作 

7



新建待入职员工

导入ehr 

8



推送面试信息


9



简历投递

支持上传简历和附件

详见api接口地址:https://www.mokahr.com/docs/api/

2.2 接入接口指南

2.2.1 环境说明

测试环境:https://api-staging-3.mokahr.com/api-platform/v1/

正式环境:https://api.mokahr.com/api-platform/v1/

请求方式:get/post/put(https)

接口限流:接口限制开发者调用的频率,如无特殊说明,都会做限流操作,限流值为每分 60 次

2.2.2 鉴权验证说明

客户成功经理在后台生成API Key提供给客户用来验证访问Moka API的请求,apikey分正式环境和测试环境。

Moka API的验证基于HTTP Basic Auth。发送请求时,需要将API Key作为basic auth的username提供,password直接忽略就行。在代码中测试时请确认发送的HTTP请求里有如下header:

Authorization: Basic <base64("username:password")>(此处password为空)

所有的请求都必须通过HTTPS发送。

postman测试实例如下图所示:

2.2.3 时间格式说明

 说明:将国际标准时间+8小时就可以得到对应北京时间


2.2 常见问题

1.无法识别认证信息

请检查apikey是否正确,确保测试环境地址对应的是测试的apikey,正式环境用的是正式环境的apikey。


2.缺少必要信息

请检查必填字段是否都存在,并且必填字段不能为null或空


3.报错角色不存在


role和roleid是两个不同的概念

如果要使用roleId这个字段,需要通过查询角色信息接口来获取对应角色的id。


4.接口返回未开启xx同步

请联系csm在后台开启对应同步功能

 



第三章 标准集成方案


3.0 Moka通用单点登录

3.0.1 业务内容描述

1、单点登录( Single Sign-On , 简称 SSO )一句话介绍:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

2、sso是多个相关但独立的软件系统访问控制的一个属性。通过使用该属性,用户登录与单个ID和密码来访问所连接的一个或多个系统,而不使用不同的用户名或密码,或在某些配置中无缝登录在每个系统上,它是比较流行的服务于企业业务整合的一种解决方案。总结一句话,SSO  使得在多个应用系统中,用户只需要 **登录一次 **就可以访问所有相互信任的应用系统。。

3.0.2 前置信息确认

1.确认客户登录的唯一标识:邮箱(推荐),工号,手机号。

2.客户提供登录地址url,通过配置生成密钥和偏移量给到客户

3.0.3 业务流程图

3.0.4 具体场景实现

请求示例如下

curl --location --request PUT 'https://api-staging-3.mokahr.com/api/sso_setting/{orgId}?type=THIRD_SELF_RESEARCH' \

--header 'authorization: moka%20dun%2C%20moka%20dun%2C%20moka%20dunwan%20moka%20dun.' \

--header 'Content-Type: application/json' \

--data-raw '{

    "setting": {

        "ifNotGoRecommendWeb": false,

        "ifNoCheckAlreadyLogin": false,

        "createRole""",

        "ifEmailSsoLogin": true,

        "ssoIdType""email",

        "baseUrl""http://x.xx.xxx:",

        "returnUrl""",

        "getLogin": {

            "url""8080",

            "loginVerifyArr": [

                "token"

            ],

            "ifPcMokaGoLogin": true,

            "ifPcRecommendGoLogin": true,

            "ifMobileMokaGoLogin": true,

            "ifMobileRecommendGoLogin": true,

            "loginPcMokaVerifyMsg""",

            "loginPcRecommendVerifyMsg""",

            "loginMobileMokaVerifyMsg""",

            "loginMobileRecommendVerifyMsg""",

            "mapping": {},

            "fixed": {},

            "path": {

                "token""query.token"

            }

        },

        "getSsoId": {

            "getType"2,

            "http": {

                "url""/getSso"

            },

            "crypt": {

                "ifCheckTimeStamp": true,

                "ifJsonParse": true,

                "decryptType""aes-256-cbc-iv",

                "decryptKey""decryptKey",

                "decryptIv""decryptIv"

            },

            "mapping": {

                "clientId""appid",

                "thirdTokenId""openid",

                "encryptValue""token"

            },

            "fixed": {

                "method""get"

            },

            "path": {

                "encryptValue""query.token",

                "decryptRes""resBody.data",

                "ssoId""resBody.data.phone",

                "thirdEmail""resBody.data.email",

                "thirdPhone""resBody.data.phone",

                "thirdName""resBody.data.name",

                "thirdNumber""resBody.data.number"

            }

        }

    }

}'

注:根据具体客户修改相关的字段信息

3.1 组织架构信息同步

3.1.1 业务描述

用于双方系统组织架构信息保持一致,便于后续招聘系统数据分析,目前支持全量以及增量的组织架构数据同步。

3.1.2 前置信息确认

1、确认数据返回逻辑

  确认数据返回逻辑为全量返回,还是有对应的增量返回,比如修改,删除时接口返 回对应数据;

2、确定双方对应字段映射

需要根据客户对应系统的组织架构数据返回参数以及Moka Api接口入参确定好两者系统对应的字段映射关系;

3、技术侧实现

  基于以上数据返回逻辑以及映射关系确认后,客户方技术侧调用Moka Api接口实现对应组织架构同步;

3.1.3 业务流程图

 

 

3.1.4 具体场景实现

1 全量同步组织架构

一、场景说明

该场景适用于客户侧只有全量数据,没有用以区分新增以及删除部门的标识或接口;

二、接口调用步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-32

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

 B、请求示例

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/departments' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '[

    {

        "name": "总部-0001",

        "parent_code": "",

        "department_code": "BMTH00080",

        "type": 1,

        "sequence": 1

    },

    {

        "name": "技术部",

        "parent_code": "zongbu",

        "department_code": "js-001",

        "type": 1,

        "sequence": 2

    }]'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 该请求方式为PUT请求
  • 同一父级部门下不能存在部门名称相同的子部门
  • 该接口为全量接口,接口逻辑自动判断新增,修改,删除逻辑,无需额外调用增量新增,修改以及删除合并接口;
  • 全量同步组织架构批量传参时,若接口报错,则所有数据都同步不成功;
  • 针对于自动判断新增,修改,删除逻辑举例说明:
  • 举例新增部门:第一次同步了A,B,C,D四个部门,想新增E部门;

     实现逻辑:调用全量同步组织架构接口,将A,B,C,D,E全部同步就好;如果此时只         在接口中传入E部门的话,相当于是标记删除了其他部门,只同步了E,所以需要         全部都同步;

  • 举例删除部门:第一次同步了A,B,C,D四个部门,想删除D部门;

     实现逻辑:调用全量同步组织架构接口,将A,B,C三个部门同步,D部门会被标记         删除;用全量同步接口相对于在删除部门时,减少了调用删除接口

  • 举例修改部门:第一次同步了A,B,C,D四个部门,需要修改C部门;

     实现逻辑:调用全量同步组织架构接口,同时传入A,B,C(修改后),D部门信             息,实现修改部门C的需求

2 增量同步组织架构

一、场景说明

按照确认数据返回逻辑确认好对应增量、修改、删除数据返回,分别调用全量、增量、更新以及删除及合并接口实现双方数据同步一致;

二、对接概要

1、初次同步组织架构时,调用全量同步接口同步现有组织信息(参考全量同步组织架构)

2、按照数据返回逻辑拉取到增量新增数据后,调用增量同步接口同步;

3、按照数据返回逻辑拉取到修改数据后,调用更新组织架构接口更新;

4、按照数据返回逻辑拉取到删除部门信息后,调用删除及合并接口删除合并Moka系统        已存在部门

三、接口调用步骤

增量同步步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-36

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api-staging-3.mokahr.com/api-platform/v1/departments/sync/incremental' \

--header 'Authorization: Basicbase64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '[

    {

        "department_code": "A301801",

        "name": "门店测试",

        "parent_code": "",

        "type":2,

        "sequence": 0

    },

    {

        "department_code": "A301802",

        "name": "003总部",

        "parent_code": "",

        "type":1,

        "sequence": 0

    }

]'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 该接口为POST请求
  • 批量同步增量新增部门数据时,若接口报错,则所有部门都同步不成功

3 更新组织架构步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-39

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api-staging-3.mokahr.com/api-platform/v1/departments' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '[

    {

        "department_code": "xz-001",

        "name": "namenamename1221",

        "parent_code": "zongbu",

        "sequence": 0

    }]'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 该请求为Post请求方式
  • 更新组织架构批量传入部门信息时,若接口报错则所有数据都不会被更新成功;

4 删除及合并组织架构步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-41

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request DELETE 'https://api-staging-3.mokahr.com/api-platform/v1/departments' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{

    "departments": [

        {

            "department_code": "A301801",

            "target_department_code": "cw-001"

        },

        {

            "department_code": "js-001-02"

        }

    ],

    "email": "zhaomeifeng@mokahr.com"

}'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 该接口为DELETE请求方式
  • 调用删除及合并接口时,若接口报错,则所有数据都不会被标记删除或合并成功

3.2 用户信息同步

3.2.1 业务内容描述

     用于双方系统人员信息保持一致,目前有V1和V2两个版本。

3.2.2 前置信息确认

1、确认数据的基本字段

     人员信息中工号、手机号、邮箱是否齐全?

    工号、手机号、邮箱中用哪一个作为唯一标识?

    确认好全量同步成什么角色?

    确认是否存在同步到Moka的用户手动调整角色后,下次更新不再更新部门信息的情况?

2、确认字段关系映射

     根据客户接口中的返回的数据对应上Moka Api接口的入参,做好字段关系映射。

3.2.3 业务流程图

 

3.2.4 具体场景实现

1 同步人事信息V1

一、场景说明

        该接口适用于工号、手机号、邮箱齐全的情况下使用。并且角色信息支持创建,不支持角色更新,如果更新则去对应的v2接口中。

二、对接概要

    1、用v1的接口要确保工号、手机号、邮箱齐全,并且这三者都要是唯一值。

    2、角色信息只有第一次创建时生效,后续继续传入,不会更新。

三、接口调用步骤

人事信息同步步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-46

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api.mokahr.com/api-platform/v1/users/syncInfo' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '[{"email":"amer@ceshi.com","name":"AMER JAMIL SALAH ABU AL KALBAT","phone":"33730444934","number":"T2447","role":0,"departmentCode":["2326232"],"superiorEmail":"","deactivated":0,"thirdPartyId":"354433808","updateDepartment":true,"updateSuperiorEmail":false},{"email":"cindyevania@ceshi.com","name":"CINDY EVANIA CHARIS","phone":"36602079989","number":"T3328","role":0,"departmentCode":["2745394"],"superiorEmail":"","deactivated":0,"thirdPartyId":"360706430","updateDepartment":true,"updateSuperiorEmail":false},{"email":"dohamy@ceshi.com","name":"DO HA MY","phone":"33328237385","number":"T3346","role":0,"departmentCode":["2745394"],"superiorEmail":"","deactivated":0,"thirdPartyId":"360803993","updateDepartment":true,"updateSuperiorEmail":false}]'

注:根据具体客户修改相关的字段信息

C、 注意事项

  • 每一次请求的数据最大支持100条数据,超出将无法同步。
  • 接口的频率为1分钟80次,假如你有800人要同步。要分批次要同步10次。
  • 工号、手机号、邮箱齐全,并且这三者都要是唯一值,否侧同步失败。
  • 例如已有的用户信息为 :

     员工号:A001,手机号:1111,邮箱:111@qq.com

     员工号:B001,手机号:2222,邮箱:222@qq.com

     你想调接口去增加 员工号:C001,手机号:2222,邮箱:333@qq.com

    这种情况回提示手机号已存在的错误。

  • 例如已有的用户信息为 :

    员工号:A001,手机号:111,邮箱:111@qq.com

    员工号:B001,手机号:2222,邮箱:222@qq.com

    由于某些原因你把员工B001的手机号弄错了,B001的手机号正确是111,

    调接口去更新员工号:B001,修改手机号为111。这种情况系统回提示错误,手机号       在系统中重复,同步失败。正确的操作是要先把A001的手机号修改正确再同步B001      的数据。

离职人员账户禁用

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-46

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

Moka没有删除人员的接口,但账户可以禁用,把Deactivated字段赋值为1即可。

B、请求示例:

curl --location --request POST 'https://api.mokahr.com/api-platform/v1/users/syncInfo' \

--header 'Authorization: Basicbase64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '[{"email":"amer@ceshi.com","name":"AMER JAMIL SALAH ABU AL KALBAT","phone":"33730444934","number":"T2447","role":0,"departmentCode":["2326232"],"superiorEmail":"","deactivated":0,"thirdPartyId":"354433808","updateDepartment":true,"updateSuperiorEmail":false},{"email":"cindyevania@ceshi.com","name":"CINDY EVANIA CHARIS","phone":"36602079989","number":"T3328","role":0,"departmentCode":["2745394"],"superiorEmail":"","deactivated":0,"thirdPartyId":"360706430","updateDepartment":true,"updateSuperiorEmail":false},{"email":"dohamy@ceshi.com","name":"DO HA MY","phone":"33328237385","number":"T3346","role":0,"departmentCode":["2745394"],"superiorEmail":"","deactivated":0,"thirdPartyId":"360803993","updateDepartment":true,"updateSuperiorEmail":false}]'

注:根据具体客户修改相关的字段信息

C、 注意事项

  • 每一次请求的数据最大支持100条数据,超出将无法同步。
  • 接口的频率为1分钟80次假如你有800人要同步,要分批次要同步10次。
  • 工号、手机号、邮箱齐全,并且这三者都要是唯一值,否侧同步失败。

2 同步人事信息V2

一、场景说明

    该接口适用于工号、手机号、邮箱不齐全的情况下使用。并且角色信息支持更新。

二、对接概要

    用v2的接口要确保工号、手机号、邮箱其中一个为唯一标识且所有人都有。从整体数据工号、手机号、邮箱都要唯一,不能存在重复的情况。

三、接口调用步骤

人员信息同步步骤

A、请求地址

接口文档地址:https://www.mokahr.com/docs/api/#-148

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api.mokahr.com/api-platform/v2/users/syncInfo' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{"usersInfo":[{"name":"摩小卡1","phone":"19025311101","number":"AD36794","roleId":79526,"departmentCode":[134437350],"deactivated":0,"thirdPartyId":"“”","uniqueType":"phone","updateDepartment":true,"autoActivated":1},{"name":"摩小卡2","phone":"10056969021","number":"AD34340","roleId":79526,"departmentCode":[134437350],"deactivated":0,"thirdPartyId":"“”","uniqueType":"phone","updateDepartment":true,"autoActivated":1}]}'

注:根据具体客户修改相关的字段信息

C、 注意事项

  • 每一次请求的数据最大支持100条数据,超出将无法同步。
  • 接口的频率为1分钟80次,假如你有800人要同步。要分批次要同步10次。
  • 工号、手机号、邮箱齐全,并且这三者都要是唯一值,否侧同步失败。
  • 例如已有的用户信息为 :

     员工号:A001,手机号:1111,邮箱:111@qq.com

     员工号:B001,手机号:2222,邮箱:222@qq.com

     你想调接口去增加 员工号:C001,手机号:2222,邮箱:333@qq.com

    这种情况回提示手机号已存在的错误。

  • 例如已有的用户信息为 :

    员工号:A001,手机号:111,邮箱:111@qq.com

    员工号:B001,手机号:2222,邮箱:222@qq.com

    由于某些原因你把员工B001的手机号弄错了,B001的手机号正确是111,

    调接口去更新员工号:B001,修改手机号为111。这种情况系统回提示错误,手机号       在系统中重复,同步失败。正确的操作是要先把A001的手机号修改正确再同步B001      的数据。

离职人员账户禁用

A、请求地址

接口文档地址:https://www.mokahr.com/docs/api/#-148

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

Moka没有删除人员的接口,账户可以禁用,把Deactivated字段赋值为1即可。

B、请求示例

curl --location --request POST 'https://api.mokahr.com/api-platform/v2/users/syncInfo' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{"usersInfo":[{"name":"摩小卡1","phone":"19025311101","number":"AD36794","roleId":79526,"departmentCode":[134437350],"deactivated":0,"thirdPartyId":"“”","uniqueType":"phone","updateDepartment":true,"autoActivated":1},{"name":"摩小卡2","phone":"10056969021","number":"AD34340","roleId":79526,"departmentCode":[134437350],"deactivated":0,"thirdPartyId":"“”","uniqueType":"phone","updateDepartment":true,"autoActivated":1}]}

注:根据具体客户修改相关的字段信息

C、 注意事项

  • 工号、手机号、邮箱需要确认其中一个是唯一标识,且必须所有人都有
  • 其余两个也要唯一值,但可以为空

3.3 招聘需求信息同步

3.3.1 业务内容描述

目的是将双方系统中招聘需求保持一致,利于分析后续招聘系统数据分析;

3.3.2 前置信息确认

1、确认数据返回逻辑

  确认客户侧招聘需求数据返回逻辑;招聘需求是否涉及更新,取消,删除等操作;

2、确定双方对应字段映射

  需要根据客户对应招聘需求数据返回参以及moka api接口入参确定好对应的字段映射关系;

3、技术侧实现

     基于以上数据返回逻辑以及映射关系确认好后,技术侧调用接口实现对应需求新增,修改,删除等操作;

3.3.3 业务流程图

3.3.4 具体场景实现

一、场景说明

适用于新增,修改,删除对应招聘需求;

二、对接概要

      1、初次同步招聘需求至moka系统,需调用新建招聘需求接口

      2、涉及修改,取消招聘需求时,则需调用更新招聘需求接口

      3、若客户侧将已同步至moka系统的原招聘需求已删除,则可调用更新接口将该需求状态更新成已取消,或调用删除接口删除招聘需求

三、接口调用步骤

1 招聘信息同步步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-55

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api-staging-3.mokahr.com/api-platform/v1/headcount?currentHireMode=1' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--header 'Cookie: connect.sid=s%3Aqp4q3p3f0TWGrNswXYgtjW7sWFghOJ57.sQYKcSsP1MLP4wLK4CaRK%2F4S8bRk2zEC8ZZNSdno0wo; locale=en-US' \

--data-raw '{

    "number": "hc_automan001",

    "jobName": "hcName001",

    "needNumber": 1,

    "startDate": "2022-10-12T00:00:00.000Z",

    "education": "本科",

    "departmentCode": "abc0001"

}'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 请求方式为Post
  • 不支持批量创建
  • 招聘模式为社招,请求地址中需入参currentHireMode=1
  • departmentCode必须是已经在moka同步过的部门,否则接口会报错【没找到department_code对应的部门】
  • number为全局唯一,如果重复传入同一个值会报错【HC编号重复】

2 更新招聘信息步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-57

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/headcount/200159412' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--header 'Cookie: connect.sid=s%3Aqp4q3p3f0TWGrNswXYgtjW7sWFghOJ57.sQYKcSsP1MLP4wLK4CaRK%2F4S8bRk2zEC8ZZNSdno0wo; locale=en-US' \

--data-raw ' {

    "jobName": "测试hc",

    "needNumber": 20,

    "status": canceled

  }'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 该请求为Put请求方式
  • 更新字段需提前确认清楚
  • 该接口不支持批量更新

3 删除招聘需求步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-59

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request DELETE 'https://api-staging-3.mokahr.com/api-platform/v1/headcount/hcid' \

--header 'Cookie: connect.sid=s%3Aqp4q3p3f0TWGrNswXYgtjW7sWFghOJ57.sQYKcSsP1MLP4wLK4CaRK%2F4S8bRk2zEC8ZZNSdno0wo; locale=en-US'

注:根据具体客户修改相关的字段信息

C、注意事项

  • 该请求为DELETE方式
  • 该接口不支持批量删除

3.4 职位信息同步

3.4.1 业务内容描述

      目的是将客户系统的发布职位同步到招聘系统保持一致,利于分析后续招聘系统中候选人入职信息的写入

3.4.2 前置信息确认

1、职级的创建

2、职能的绑定

3、职位和招聘需求的关联

3.4.3 业务流程图

 

 

3.4.4 具体场景实现

一、场景说明

将三方系统HR创建的职位发布招聘官网

二、对接概要

1、职级的获取

2、职能的获取

三、各场景调用步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-59

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request GET 'https://api-staging-3.mokahr.com/api-platform/v1/job_ranks' \

--header 'Authorization: Basic base64(apiKey:)'


B、请求示例

curl --location --request POST 'https://api.mokahr.com/api-platform/v1/users/syncInfo' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '[{"email":"amer@ceshi.com","name":"AMER JAMIL SALAH ABU AL KALBAT","phone":"33730444934","number":"T2447","role":0,"departmentCode":["2326232"],"superiorEmail":"","deactivated":0,"thirdPartyId":"354433808","updateDepartment":true,"updateSuperiorEmail":false},{"email":"cindyevania@ceshi.com","name":"CINDY EVANIA CHARIS","phone":"36602079989","number":"T3328","role":0,"departmentCode":["2745394"],"superiorEmail":"","deactivated":0,"thirdPartyId":"360706430","updateDepartment":true,"updateSuperiorEmail":false},{"email":"dohamy@ceshi.com","name":"DO HA MY","phone":"33328237385","number":"T3346","role":0,"departmentCode":["2745394"],"superiorEmail":"","deactivated":0,"thirdPartyId":"360803993","updateDepartment":true,"updateSuperiorEmail":false}]'

注:根据具体客户修改相关的字段信息

C、获取职能

curl --location --request GET 'https://api-staging-3.mokahr.com/api-platform/v1/jobs-groupedby-zhineng/implgrouppublic?mode=social' \

--header 'Authorization: Basic base64(apiKey:)'

D、创建职位

curl --location --request POST 'https://api-staging-3.mokahr.com/api-platform/v1/jobs?currentHireMode=1' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{

    "title": "API测试+同时发布到招聘官网2",

    "status": "open",

    "commitment": "其它",

    "departmentCode": "110",

    "minSalary": 20,

    "maxSalary": 50,

    "education": "本科",

    "managerEmail": "ceshi@ceshi.com",

    "hrAssistantEmails": [

        "ceshi@ceshi.com"

    ],

    "hiringManagerEmails": [

        "ceshi@ceshi.com"

    ],

    "interviewerEmails": [

        "ceshi@ceshi.com"

    ],

    "jobRankIds": 1,

    "finishedAt": "2020-04-15 00:00:00",

    "siteIds":["200001624"]

}'

注:根据具体客户修改相关的字段信息

E、更新职位【与创建职位的参数一致,注意职位性质有一个是(其它)】

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/jobs/jobid' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{

    "title": "API测试+同时发布到招聘官网3",

    "status": "open",

    "commitment": "其它",

    "departmentCode": "110",

    "minSalary": 20,

    "maxSalary": 50,

    "education": "本科",

    "managerEmail": "ceshi@ceshi.com",

    "hrAssistantEmails": [

        "ceshio@ceshio.com"

    ],

    "hiringManagerEmails": [

        "ceshi@ceshi.com"

    ],

    "interviewerEmails": [

        "ceshi@ceshi.com"

    ],

    "jobRankIds": 1,

    "finishedAt": "2020-04-15 00:00:00",

    "siteIds":["200001624"]

}'

注:根据具体客户修改相关的字段信息

C、注意事项

工作地点和职位级别这两个字段需要的是id,需要通过获取企业职位级别接口和获取企业工作地点接口来获取id。

3.5 Offer信息同步

3.5.1 业务内容描述

在Moka系统中创建Offer信息,并且支持更新已经创建的Offer信息,便于后续将Offer同步给三方

3.5.2 前置信息确认

1、确认是系统字段还是自定义字段。

2、创建人的邮箱需要在系统存在

3、如果字段涉及码值,需要客户按照码值匹配

3.5.3 业务流程图

 

3.5.4 具体场景实现

一、场景说明

在Moka系统中创建Offer信息

二、对接概要

双方接口的字段映射关系要确认清楚

三、各场景调用步骤

1 创建Offer步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#offer

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api-staging-3.mokahr.com/api-platform/v1/create-offer' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{

    "applicationId": 候选人id

    "checkinDate": "2022-05-09",

    "locationId": 工作地点的id

    "contactUserName": "摩小卡",

    "contactPhone": "15945670038",

    "creatorEmail": "ceshi@ceshi.com",

    "contactEmail": "ceshi@ceshi.com",

    "hcId": hcId,

    "jobRankId": 职位级别的id,

    "departmentCode": 组织架构的编码,

    "isCreateOfferAttachment": true,

    "customFields": [

        {

            "name": "入职时间",

            "value": "2022-05-09"

        },

        {

            "name": "月薪总额(元/月)-税前",

            "value": "12000"

        },

        {

            "name": "月薪总额(元/月)税前",

            "value": "12000"

        },

        {

            "name": "劳动合同签约工资数(元)",

            "value": "4000"

        },

        {

            "name": "公积金(公司承担部分)(元/月)",

            "value": "1000"

        },

        {

            "name": "劳动合同期限(年)",

            "value": "5"

        },

        {

            "name": "常驻工作地",

            "value": "杭州"

        },

        {

            "name": "直接上级",

            "value": "李彦峰"

        },

        {

            "name": "月基本工资(元/月)",

            "value": "4000"

        },

        {

            "name": "岗位津贴(元/月)",

            "value": "8000"

        },

        {

            "name": "餐贴+下午茶补贴(元/天)-base杭州",

            "value": "16"

        },

        {

            "name": "餐补(元/天)",

            "value": "16"

        },

        {

            "name": "月度津贴(税前)",

            "value": "0"

        },

        {

            "name": "年底津贴(税前)",

            "value": "0"

        },

        {

            "name": "试用期月薪比例(%)",

            "value": "100"

        },

        {

            "name": "岗位名称",

            "value": "前端开发岗"

        },

        {

            "name": "年终奖描述",

            "value": "月薪总额(税前)*3.0,"

        },

        {

            "name": "保密补贴(元/月)-base杭州",

            "value": "30"

        },

        {

            "name": "奖金浮动月份(月数)",

            "value": "3.0"

        },

        {

            "name": "工作时间",

            "value": "弹性工作时间:9:00—18:00"

        },

        {

            "name": "联系人",

            "value": "摩小卡1"

        },

        {

            "name": "试用期(X月)",

            "value": "6"

        },

        {

            "name": "联系方式",

            "value": "159xxxxxxxx"

        },

        {

            "name": "offer模板选择",

            "value": "offer模板-总部(常驻工作地为杭州的总部员工)"

        },

        {

            "name": "劳动合同签约工资数(元)",

            "value": "4000"

        }

    ]

}'

注:根据具体客户修改相关的字段信息

C、 注意事项

  • 创建时,创建人必须是Moka已有的账号

2 更新Offer信息步骤

A、接口文档地址

接口文档地址: https://www.mokahr.com/docs/api/#offer-2

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request POST 'https://api-staging-3.mokahr.com/api-platform/v1/offers/offerFields/update' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{

    "applicationId": "候选人的id",

    "operatorName": "摩小卡",

    "orgId": "orgid",

    "fields": [

        {

            "name": "预计入职时间",

            "value": "2022-04-08"

        },

        {

            "name": "职位级别",

            "value": "410031150"

        },

        {

            "name": "入职部门",

            "value": "200563151"

        },curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/offer/status?applicationId=候选人的申请id&accepted=1' \

--header 'Authorization: Basic base64(apiKey:)'

        {

            "name": "实际入职职位",

            "value": "奢侈品HRBP经理"

        }

    ]

}'

注:根据具体客户修改相关的字段信息base64(apiKey:)

C 、注意事项

  • 更新offer的信息时系统字段只能传id

3 接收/拒绝Offer信息步骤

A、接口文档地址

接口文档地址: https://www.mokahr.com/docs/api/#offer-6

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/offer/status?applicationId=候选人的申请id&accepted=1' \

--header 'Authorization: Basic base64(apiKey:)'

注:根据具体客户修改相关的字段信息

C 、注意事项

  • 需要Offer存在

3.6 入离转正状态信息同步

3.6.1 业务内容描述

用于候选人入职状态回传,保持双方候选人入职状态一致;利于招聘系统分析数据。

3.6.2 前置信息确认

         暂无

3.6.3  业务流程图

 

     

3.6.4 具体场景实现

一、场景说明

同步候选人入职,离职,转正状态到Moka系统。

二、对接概要

      暂无

三、各场景调用步骤

1 入职状态同步步骤

A、请求地址

接口文档地址:https://www.mokahr.com/docs/api/#-153

测试环境请求域名:  https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/applications/{applicationid}/hired' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--header 'Cookie: connect.sid=s%3Aqp4q3p3f0TWGrNswXYgtjW7sWFghOJ57.sQYKcSsP1MLP4wLK4CaRK%2F4S8bRk2zEC8ZZNSdno0wo; locale=en-US' \

--data-raw '{

    "hcId": 200168611,

    "hiredAt": "2022-06-06T16:00:00.000Z",

    "probation": 3

}'

注:根据具体客户修改相关的字段信息

C、字段Mapping

XX字段名称

字段描述

字段类型

是否必填

备注

Moka字段名称

Moka接口字段名称

备注

 

 

 

 

 

该候选人对应职位的对应headcount id

hcId

 

 

 

 

 

 

实际入职时间

hiredAt

 

 

 

 

 

 

试用期

probation

可选值0-6,0为无试用期,1-6对应几个月试用期

D、注意事项

  • hcId为岗位绑定的hcId

2 转正状态同步步骤

A、请求地址

接口文档地址:https://www.mokahr.com/docs/api/#-155

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/applications/{applicationid}/corrected' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--header 'Cookie: connect.sid=s%3Aqp4q3p3f0TWGrNswXYgtjW7sWFghOJ57.sQYKcSsP1MLP4wLK4CaRK%2F4S8bRk2zEC8ZZNSdno0wo; locale=en-US' \

--data-raw '{

    "status": 1,

    "correctedAt": "2022-08-06T16:00:00.000Z"

}'

注:根据具体客户修改相关的字段信息

 

C、字段Mapping

XX字段名称

字段描述

字段类型

是否必填

备注

Moka字段名称

Moka接口字段名称

备注

 

 

 

 

 

更新的转正状态;1:转正 0:未转正

status

 

 

 

 

 

 

实际转正时间

correctedAt

 

 

 

D、注意事项

暂无

3 离职状态同步步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-157

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例

curl --location --request PUT 'https://api-staging-3.mokahr.com/api-platform/v1/applications/{applicationid}/resign' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--header 'Cookie: connect.sid=s%3Aqp4q3p3f0TWGrNswXYgtjW7sWFghOJ57.sQYKcSsP1MLP4wLK4CaRK%2F4S8bRk2zEC8ZZNSdno0wo; locale=en-US' \

--data-raw '{

    "detail": "消化不好",

    "time": "2022-05-27T16:00:00.000Z",

    "reason":1

}'

注:根据具体客户修改相关的字段信息

 

C、字段Mapping

XX字段名称

字段描述

字段类型

是否必填

备注

Moka字段名称

Moka接口字段名称

备注

 

 

 

 

 

离职类型的归档原因id

reasonType

 

 

 

 

 

 

离职原因

detail

 

 

 

 

 

 

离职时间

time

 

 

 

 

 

 

操作人的邮箱

email

 

 

 

 

 

 

操作人有权限的人才库ID

talentPoolId

 

 

 

 

 

 

是否回写离职信息

isResignWriteJob

 

 

 

 

 

 

离职职位

resignJobName

 

 

 

 

 

 

离职部门

resignDepartment

 

 

 

 

 

 

离职原因

reason

 

 

 

 

 

 

离职职类

resignJobType

 

D 、注意事项

接口文档中的Type不需要传入,否则接口会报错

3.7 导入EHR信息同步

3.7.1 业务内容描述

将候选人信息推送到客户系统,推送候选人信息目前在Moka中是由导入EHR"按钮点击触

3.7.2 前置信息确认

1、确认导入EHR接口地址

需客户提供一个没有鉴权,Post请求 Body接收参数的接口(支持Rest,Soap接口规则)

如果客户提供接口必须有鉴权,变通方案用IPass平台透传实现,属于定制交付。

2、确认客户是否需要导入成功后跳转页面

如果OA/EHR想在MOKA中触发Webhooks后想跳转到目标地址,只需要在 body的返回参数中加上redirectUrl参数即可。当MOKA收到参数后会根据用户的设备去判断跳转PC端还是Mobile端。目前跳转只支持RESTful方式的webhooks。

3、确定数据是否需要加密

如果客户对数据的安全性要求更高,可以选择对传输的数据进行加密。我们的加密算法采用AES-256,16进制,加密模式为CBC。 我们只会对body中的data字段进行加密,不包括id,event,triggeredAt等字段。 如果需要数据加密,请联系CSM进行开通,并设置加密密钥。 加密密钥请妥善保存。

4、确认字段关系映射

确认客户业务系统需要的字段在我们标准数据结构中是否存在,不存在的字段通过添加自定义字段是否满足。

 

3.7.3 业务流程图

 

3.7.4 具体场景实现

一、场景说明

Offer阶段手动触发导入ehr推送候选人信息到客户OA做offer审批,审批结束回传审批状态到Moka,候选人流转到待入职阶段。邀请候选人更新个人信息,再次触发导入ehr,推送最新候选人数据到OA做入职审批操作,操作完成同步入职状态回Moka。

二、对接概要

1、客户需要提供两个导入ehr接口(一个offer导入用,一个待入职导入用)

2、CSM后台完成配置

3、确认是否开启导入EHR按钮

4、确认是否选择公共推送

5、必须生成EHR密钥(签名用)

6、如果数据加密,秘钥IV必须生成

三、各场景调用步骤

1 导入Ehr信息同步步骤

A、请求地址

客户提供请求地址

B、请求示例

第一步 CSM后台进行配置

第二步 页面按钮触发测试

 

C 、注意事项

  • 详细跟客户讲一下自定义字段的取法(多段教育经历区分,工作经历,自定义模块)

3.8 面试信息同步

3.8.1 业务内容描述

用于推送面试信息同步到客户对接系统。

3.8.2 前置信息确认

暂无

3.8.3 业务流程图

 

3.8.4 具体场景实现

一、场景说明

推送添加面试信息目前在Moka中是由添加面试完成确认按钮点击时触发

二、对接概要

面试信息创建、修改、删除调用的是同一接口地址

三、各场景调用步骤

面试信息步骤

A、请求地址

客户提供信息同步地址

B、请求示例

curl --location --request POST 'https://api-staging-3.mokahr.com/inner/api-platform/interface/createThirdPartyConfigInfo' \

--header 'authCode: authCode' \

--header 'Authorization: Basic base64(apiKey:)' \

--header 'Content-Type: application/json' \

--data-raw '{

    "org_id": "tongdun",

    "third_type": "4",

    "name": "同盾科技",

    "rest_info": "{\"baseUrl\":\"https://ceshi-test.cn\",\"syncInterviewsUrl\":\"/moka/callback\"}",

    "rest_headers": "{\"content-type\": \"application/json;charset=utf-8\"}",

    "config_info": "{\"secretKey\":\"secretKey\",\"needEncrypt\":false}"

}'

注:根据具体客户修改相关的字段信息

C 、注意事项

  • Postman里的参数仔细检查

3.9 Moka通用单点登录

3.9.1 业务内容描述

1、单点登录( Single Sign-On , 简称 SSO )一句话介绍:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

2、sso是多个相关但独立的软件系统访问控制的一个属性。通过使用该属性,用户登录与单个ID和密码来访问所连接的一个或多个系统,而不使用不同的用户名或密码,或在某些配置中无缝登录在每个系统上,它是比较流行的服务于企业业务整合的一种解决方案。总结一句话,SSO  使得在多个应用系统中,用户只需要 **登录一次 **就可以访问所有相互信任的应用系统。。

3.9.2 前置信息确认

3.9.3 业务流程图

3.9 招聘官网

3.9.2 业务内容描述

客户根据职位投递候选人简历到moka

3.9.2 前置信息确认

需要确认职位是否已经发布到招聘官网上

3.9.3 业务流程图

3.8.4 具体场景实现

一、场景说明

客户根据职位投递候选人简历到moka

二、对接概要

1.需要确认职位是否已经发布到招聘官网上

2.跟客户沟通确认候选人字段映射

3.是否内推,招聘模式为社招还是校招

4.请求方式有两种

(1)json格式,正常信息同步

(2)(multipart/form-data方式),可以上传附件

三、各场景调用步骤

A、请求地址

接口文档地址: https://www.mokahr.com/docs/api/#-14

测试环境请求域名: https://api-staging-3.mokahr.com

正式环境请求域名: https://api.mokahr.com

B、请求示例(json格式)

curl https://api.mokahr.com/api-platform/v1/jobs/moka/1234/apply \

-u 'your-api-key:' \

-X POST \

-H 'Content-Type: application/json' \

-d '

{

"basicInfo":

{

"name": "摩小卡",

"age": 22,

"email": "ceshi@ceshi.com",

"gender": "男",

"phone": "18612345678",

"lastCompany": "Moka公司",

"lastSpeciality": "计算机",

"academicDegree": "本科"

},

"educationInfo":

[

{

"school": "北京大学",

"startDate": "2014-09",

"endDate": "2017-06",

"speciality": "软件工程",

"academicDegree": "本科"

}

],

"experienceInfo":

[

{

"company": "Moka公司",

"startDate": "2014-09",

"endDate": "2017-06",

"title": "初级工程师",

"summary": "负责产品功能实现"

}

],

"languageInfo": [

{

"language": "213",

"level": "一般",

"listenAndSpeak": "良好",

"readAndWrite": "熟练"

}

],

"projectInfo":

[

{

"projectName": "项目1",

"startDate": "2017-01",

"endDate": "2017-11",

"projectDescription": "项目功能描述",

"title": "后端工程师",

"responsibilities": "项目职责"

}

],

"practiceInfo":

[

{

"company": "Moka公司",

"title": "实习工程师",

"startDate": "2017-01",

"endDate": "2017-11",

"summary": "负责简单的功能实现"

}

],

"jobIntention": {

"aimSalary": "7000-13000元/月",

"forwardLocation": "北京"

},

"selfDescription": {

"personal": "人经历丰富,在校担任过部长,主持人以及新生教官。"

},

"customFields": [

{

"id": 1,

"value": "aaa"

"index": 0,

},

{

"id": 2,

"value": "bbb"

}

],

"recommender": {

"email": "zhangsan@mokahr.com",

"name": "张三",

"phone": "18612345678",

"employeeId": "1"

}

}'

注:根据具体客户修改相关的字段信息

请求示例(from-data格式)

curl https://api.mokahr.com/api-platform/v1/jobs/moka/1234/apply \

-u 'your-api-key:' \

-X POST \

-H 'Content-Type: multipart/form-data' \

-F 'basicInfo={"name": "摩小卡", "age": 20, "gender": "男", "phone": "18612345678"}' \

-F 'educationInfo=[{"school": "北京大学", "startDate": "2014-01", "endDate": "2017-01", "speciality": "软件工程"}]' \

-F 'experienceInfo=[{"company": "宇宙科技公司", "startDate": "2017-01", "endDate": "2017-01", "title": "工程师"}]' \

-F 'projectInfo=[{"projectName": "项目1", "startDate":"2017-01","endDate":"2017-11","title":"工程师"}]' \

-F 'practiceInfo=[{"company":"Moka公司", "title":"实习工程师", "startDate":"2017-01", "endDate":"2017-11"}]' \

-F 'jobIntention={"aimSalary": "7000-13000/月", forwardLocation: "北京"}' \

-F 'selfDescription={personal: "人经历丰富,在校担任过部长,主持人以及新生教官。"}' \

-F 'customFields=[{"id": "1", "value": "aaa"}, {"id": "2", "value": "bbb"}]' \

-F 'recommender={"email": "ceshi@ceshi.com","name": "摩小卡","phone":"186xxxxxxxx","employeeId":"1"}' \

-F 'resume=@/path/to/resume/摩小卡.pdf' \

-F 'attachments=@/path/to/attachments/attach1.txt' \

-F 'attachments=@/path/to/attachments/attach2.txt'


C 、注意事项

  • Postman里的参数仔细检查
    要区分自定义字段和自定义模块的区别