知人 logo

引言

欢迎使用知人的应用编程接口 API v2.0 通过 API 您可以接入知人提供的大部分服务。

知人 API v2.0 遵循 RESTful 风格,所有 API 的 URL 都是

https://zhiren.com/api/v2/<apiname>

  1. 请求中的业务数据以 JSON 格式传递,认证数据则以 URL 查询参数的形式传递。
  2. 响应以 HTTP Status Code 来表示成功(2xx)或失败,如果失败,则会在响应体中以 JSON 格式给出详细的错误信息。

认证

知人第三方服务称为 Product,通过 API 请求知人时,每一个需要验证的请求都要进行签名。

Product 对应每个 Company 都有唯一的 access_keysecret_key

Parameters
access_key
访问识别码,当您成为知人第三方服务,对应每个开通服务的公司,都会有一对 access_key 和 secret_key, 其中 access_key 必须在每次请求中附上,而 secret_key 请务必放在私有的空间,千万不可在请求中传递。
signature
使用你的 secret_key 进行签名后的字符串,放入 header 的自定义字段 x-zhiren-signature
tonce
请求时间, 必须以 Unix Time 的格式发送, tonce与服务器时间不得超过正负 5 分钟, 否则请求将视为无效。
payload
被签名的数据体部分,JSON 格式的字符串。

signature 的算法

我们用伪代码表示签名的算法如下:

signature = HMAC-SHA256( secret_key, string_to_sign )

首先根据请求的参数,把参数转换为 string_to_sign, 然后用 HMAC-SHA256 算法和你的 secret_key 进行签名。

string_to_sign 的生成方式

上面的公式中的 string_to_sign 由五部分组成:

  string_to_sign = http_method + path + access_key + tonce + payload.to_json
  signature = OpenSSL::HMAC.hexdigest 'SHA256', secret_key, string_to_sign
var utf8 = require("utf8");
var crypto = require("crypto");
signature = crypto.createHmac('sha256', secret_key).update(utf8.encode(payload_str)).digest('hex');
组成部分 描述
http_method 必须为大写, 比如 “POST”, “GET”, “DELETE”, “PATCH” 等
path 假设你请求的uri为 https://zhiren.com/api/v2/example 那么 path 应该为 /api/v2/example
access_key 访问识别码
tonce 请求时间
payload 被签名的数据体部分,JSON 格式的字符串。

那么最终用于签名的原字符串,就是把这五个部分链接起来皆可(注意顺序不可颠倒)。

$.get("https://zhiren.com/api/v2/employees", {
  "access_key": "YOUR_APP_KEY",
  "signature": "YOUR_SIGNATURE",
  "tonce": "YOUR_TONCE",
  "payload": "YOUR_PAYLOAD"
}, function(data) {
  alert(data);
});
curl "https://zhiren.com/api/v2/employees?access_key=YOUR_APP_KEY&\
signature=YOUR_SIGNATURE&\
tonce=YOUR_TONCE&\
payload=YOUR_PAYLOAD"

授权

知人为第三方服务进行标准 Oauth2 协议授权,允许操作用户数据,通过 API 请求用户数据前,需要实现进行授权,并取得授权 token。

对应的每个第三方服务,都有唯一的 app_idapp_secretcallback_url。 对应的每个第三方服务的每个用户,都有唯一的response_codeaccess_token

参数名 描述
app_id 客户端访问识别码,当您成为知人第三方服务,对应每个开通服务的公司,都会有一对 app_id, app_secret 和 callback_url, 用于建立 oauth 请求,并且在用户进行授权请求中附上。
callback_url 用户授权后的回调 URL,用户授权后将跳转到该地址。
response_code 用户授权后成功后,返回给第三方一个repsonse_code,用于标明是该用户已授权,此时,第三方将app_id,app_secret,callback_url以及response_code一同发送给知人,将返回唯一授权标识access_token。
access_token 当用户在第三方请求知人服务时,附上 access_token = access token value 参数,即可调用知人 Oauth API。

错误码

正常API返回的 HTTP Status Code 为 2xx 或 3xx。如果遇到错误,HTTP Status Code 为 4xx 或 5xx, 同时返回报文内容会包含具体错误信息,包括错误代码和错误消息。

API 错误代码列表

错误代码 描述
0 成功
1xxx 认证错误
1001 缺少 access_key
1002 缺少签名
1003 缺少 tonce
1101 签名无效
1102 不存在的记录
1103 tonce 无效
1104 没有找到对应的公司
1105 access_key 无效
2xxx 参数错误
2001 未实现:API参数验证错误
2002 对象验证错误
2003 未实现:无效的身份事项代码
2004 JSON 格式错误
3xxx 参数错误
3001 没有权限访问该 API
3002 bind_code 已过期
9xxx 其他错误
{
  "code": 1xxx,
  "text": "error message here"
}

更新日志

2016-09-09
创建文档

2016-12-29
新增员工提醒、出勤员工、Moka 候选人 API

2017-01-08
新增获取子公司、子公司部门、子公司员工信息的 API

2017-01-17
新增绑定、解绑 Moka 公司以及查询 bind_code 有效性的 API

2017-03-18
新增出勤打卡 API

2017-06-06
Department 对象去掉 sub_company 字段,移除如下接口:
GET /api/v2/sub_companies/:sub_company_uuid/departments
GET /api/v2/sub_companies/:sub_company_uuid/departments/:uuid

2017-06-20
Employee 对象中新增 job_title 字段

2017-07-07
Employee 对象中新增 leader_uuid, virtual_leader_uuid 字段,Department 对象中新增 charger_uuid 字段,新增根据 uuid 查找员工信息

公司

Company

属性 类型 默认值 描述
uuid 字符串   姓名
name 字符串   公司简称
full_name 字符串   公司全称
logo 字符串   logo

分公司

Sub Company

属性 类型 默认值 描述
uuid 字符串   分公司唯一标识符
company_uuid 字符串   母公司唯一标识符
name 字符串   分公司名称
short_name 字符串   分公司简称
registered_address 字符串   注册地址
boss 字符串   法人姓名

部门

Department

属性 类型 默认值 描述
name 字符串   部门名称
uuid 字符串   部门唯一标识符
superior_uuid 字符串   上级部门唯一标识符
charger_uuid 字符串   部门负责人唯一标识符

员工

Employee

属性 类型 默认值 描述
uuid 字符串    
name 字符串   姓名
sex 枚举串   性别
email 字符串   邮箱
mobile 字符串   手机号
empno 字符串   员工编号
phone_number 字符串   手机号
id_number 字符串   身份证号
address 字符串   详细地址
bank_name 字符串   开户行
bank_card 字符串   银行卡号
photo 字符串   头像
marriage 字符串   婚姻状况
birthday 字符串   公历生日
join_date 日期   入职日期
probation_end_date 日期   试用期转正日期
avatar 字符串   头像
leave_date 日期   离职日期
category 字符串   员工类型,详见下方说明
status 字符串   员工状态,详见下方说明
department_uuid 字符串   所在部门唯一标示符
exmail 字符串   企业邮箱地址
job_title 字符串   职位
job_grade 字符串   职级
nickname 字符串   昵称
dingtalk_id 字符串   钉钉 ID
wework_id 字符串   企业微信 ID
leader_uuid 字符串   汇报人唯一标识符
virtual_leader_uuid 字符串   虚线汇报人唯一标识符
sub_company 字符串   合同公司

员工类型说明 (category)

Parameters
fulltime
全职
part_time
兼职
intern
实习生
contractor
劳务派遣

员工状态说明 (status)

Parameters
waiting
待入职
probation
试用期
regular
在职
dimission
离职
internship
实习期

候选人

Candidate

属性 类型 默认值 描述
uuid 字符串    
name 字符串   姓名
email 字符串   电子邮箱
mobile 字符串   手机号
sex 枚举串   性别
marriage 枚举串   婚姻状况
birthday 字符串   生日
degree 字符串   学历
status 枚举串   候选人状态
source_name 字符串   招聘源
source_id 字符串   招聘源 id

排班

Arrangement

属性 类型 默认值 描述
attenance_rule_name 字符串   出勤规则名称
workshift_name 字符串   班次
empno 枚举串   员工工号
date 字符串   排班日期
time_range 字符串   工作时间段

打卡

Attendance Checking

属性 类型 默认值 描述
date 日期   打卡日期
check_in_time 时间   上班打卡时间
check_out_time 时间   下班打卡时间

Timeline

Timeline

属性 类型 默认值 描述
date 日期   发生日期
category 字符串   leave: 请假; business_trip: 公出
duration 数字   时间
duration_unit 字符串   days: 天;hours: 小时;minutes: 分钟
start_time 时间   开始时间
end_time 时间   结束时间

审批对象

Approval

属性 类型 默认值 描述
number_series 字符串   审批单号
creator 字符串   发起人
created_at 时间   发起时间
status 字符串   审批状态
status_name 字符串   状态名称
updated_at 字符串   最后审批时间
category 字符串   审批类型
workflow_name 字符串   审批流名称
form_values 对象   审批表单内容,和审批类型有关

获取所有分公司

GET /api/v2/sub_companies

HTTP Parameters

参数 类型 默认值 必须 描述
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 分公司对象 数组

获取单个分公司

GET /api/v2/sub_companies/:sub_company_uuid

Parameters
sub_company_uuid
分公司 uuid

HTTP Parameters

参数 类型 默认值 必须 描述
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 分公司对象

查询分公司员工

GET /api/v2/sub_companies/:sub_company_uuid/employees

Parameters
sub_company_uuid
分公司 uuid

HTTP Parameters

参数 类型 默认值 必须 描述
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 员工对象 数组

单个员工查询

GET /api/v2/sub_companies/:sub_company_uuid/employees/:uuid

Parameters
sub_company_uuid
分公司 uuid
uuid
员工 uuid

HTTP Parameters

参数 类型 默认值 必须 描述
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 员工对象 数组

获取所有部门


GET /api/v2/departments

HTTP Parameters

参数 类型 默认值 必须 描述
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 部门对象 数组

[
  {
      "name": "管理组",
      "uuid": "7684be70c34c554c8fdc062eba4382be",
      "superior_uuid": null,
      "charger_uuid": "fbfd8384fb43da1d979fd277473d7984"
  },
  {
      "name": "运营组",
      "uuid": "8674be70c34c554c8fdc062eba4382be",
      "superior_uuid": null,
      "charger_uuid": "fbfd8384fb43da1d979fd277473d7984"
  },
  {
      "name": "系统组",
      "uuid": "8689be70c34c554c8fdc062eba4382be",
      "superior_uuid": null,
      "charger_uuid": "fbfd8384fb43da1d979fd277473d7984"
  }
]

获取单个部门

GET /api/v2/departments/:uuid

Parameters
uuid
部门 uuid

HTTP Parameters

参数 类型 默认值 必须 描述
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 部门对象

{
  "name": "管理组",
  "uuid": "7684be70c34c554c8fdc062eba4382be",
  "superior_uuid": null,
  "charger_uuid": "fbfd8384fb43da1d979fd277473d7984"
}

查询部门员工


GET /api/v2/departments/:uuid/employees

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
pagination JSON字符串   分页获取员工数据,详见 pagination schema

Pagination Schema

属性 类型 默认值 必须 描述
page 整型   获取第几页员工数据

Response

全部获取时

JSON 格式的 员工对象 数组

分页获取时

属性 类型 描述
currentPage 整型 当前页码
pageSize 整型 每页数量
totalPages 整型 总页数
totalCount 整型 总数据量
employees 数组 JSON 格式的 员工对象 数组
[{
  "uuid": "1387c26da1091124264793e123744fbb",
  "name": "一般职员",
  "sex": "male",
  "empno": "NORMAL-1",
  "email": "76577261@qq.com",
  "mobile": "18602836721",
  "phone_number": "18602836721",
  "id_number": "320581199406301913",
  "address": "烨伟路313号",
  "bank_card": "",
  "photo": "",
  "marriage": "divorced",
  "birthday": "1983-07-21",
  "join_date": "2012-09-29",
  "avatar": "",
  "leave_date": null,
  "status": "waiting",
  "department_uuid": "f46594b15bc947891fcf8700f3aaa2ba",
  "exmail": "test1@colorway.com",
  "job_title": "CTO",
  "job_grade": "",
  "dingtalk_id": null,
  "nickname": "少林扫地僧",
  "leader_uuid": null,
  "virtual_leader_uuid": "fbfd8324fb43da1d979fd277473d7984"
}]

获取所有员工

GET /api/v2/employees

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串       是   区别公司的标识符
status 字符串 all  否   员工状态
join_date_start 字符串   否   入职开始日期,格式: ‘2017-10-01’
join_date_end 字符串   否   入职截止日期
leave_date_start 字符串   否   离职开始日期
leave_date_end 字符串   否   离职截止日期
name 字符串   否   员工姓名
pagination JSON字符串   分页获取员工数据,详见 pagination schema

Pagination Schema

属性 类型 默认值 必须 描述
page 整型       获取第几页员工数据

Response

全部获取时

JSON 格式的 员工对象 数组

分页获取时

属性 类型 描述
currentPage 整型 当前页码
pageSize 整型 每页数量
totalPages 整型 总页数
totalCount 整型 总数据量
employees 数组 JSON 格式的 员工对象 数组

按工号查询员工

GET /api/v2/employees/:empno

Parameters
empno
员工工号

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串   区别公司的标识符

Response

JSON 格式的 员工对象

按手机号查询员工

GET /api/v2/employees/:mobile

Parameters
mobile
手机号码

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串   区别公司的标识符

Response

JSON 格式的 员工对象

按uuid查询员工

GET /api/v2/employees/:uuid

Parameters
uuid
员工 uuid

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串   区别公司的标识符

Response

JSON 格式的 员工对象

检查员工当天是否出勤

GET /api/v2/employees/:uuid/check_attendance

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串   区别公司的标识符

Response

员工对象

导入员工打卡记录

POST /api/v2/attendance_punches

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
attendances 哈希数组   打卡记录
attendances: [
  { "empno": "NORMAL-1", "punched_at": "2017-02-03 08:00" },
  { "empno": "1100", "punched_at": "2017-02-03 08:00" },
  { "empno": "1100", "punched_at": "2017-02-03 08:00" }
]

Response

包含传递过来的每一条打卡数据的状态,格式为:

[
  { code: "0k", empno: "007" },
  { code: "error", empno: "008", error_message: "employee not found" }
]

查询员工排班

GET /api/v2/arrangement_employees

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
empnoes 列表   员工工号列表,例如:[‘1001’, ‘1002’, ‘1003’]
start_date 字符串   查询开始日期
end_date 字符串   查询结束日期

Response

排班对象 数组

查询请假和公出

GET /api/v2/employees/:guid/timelines

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
start_date 开始日期    
end_date 结束日期    
category 字符串   leave: 请假;business_trip: 公出

Response

Timeline 对象 数组

获取员工打卡记录

GET /api/v2/employees/:guid/attendance_checkings

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
start_date 字符串   查询开始日期
end_date 字符串   查询结束日期

Response

JSON 格式的 打卡对象 数组

薪酬科目上传

POST /api/v2/salary/subject_values

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名
{
  "empno": "001",              # 员工工号
  "subject_name": "绩效工资",   # 薪酬科目名称
  "month": "2017-09",          # 计薪月份,格式: "yyyy-mm"
  "value": 1024.12             # 金额,精确到小数点后两位
}

同一员工薪酬如果上传多次(相同月份),则以最后一次数据为准

Response

  { "code": "返回码", "text": "error message" } # 0 表示成功

更新公司令牌

PATCH /api/v2/company_tokens/:guid

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串   区别
zhiren_visitor_token 字符串   fangke 提供给 zhiren 的令牌

提醒员工接见访客

POST /api/v2/employees/:guid/notify

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Payload Schema

属性 类型 默认值 必须 描述
token 字符串   区别公司的标识符
name 字符串   访客姓名
time 字符串   到访时间

Response

员工对象

获取审批列表


GET /api/v2/approvals

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名
{
  "start_date": "2018-02-01",              # 发起审批开始日期
  "end_date": "2018-03-01",                # 发起审批截止日期
  "category": "leave"                      # 审批类型,不传该参数代表获取所有审批类型
  "status": "waiting"                      # 审批状态,不传该参数代表获取所有审批状态
}

审批类型参数列表

参数 类型
leave 请假
adjustment 员工调整
contract 合同签署
dimission 员工离职
enrollment 员工转正
payroll_submit 工资表审批
recruit 重新入职
salary_change 薪资调整
attendance_recheck 补签
overtime 加班
business_trip 公出
sub_company_transfer 分公司调动
onboarding 员工入职
business_travel 出差
intern_regularization 实习生转全职
breastfeeding_leave 哺乳假申请
duty 值班申请
arrangement 调班申请
custom 自定义审批

审批状态参数列表

参数 类型
waiting 审批中
passed 通过
denied 拒绝

Response

JSON 格式的 审批对象 数组

[
  {
    "number_series": "20170712355448",
    "creator": "辛宪英",
    "created_at": "2017-07-12T17:29:30.000+08:00",
    "status": "denied",
    "status_name": "不通过",
    "updated_at": "2017-07-12T17:30:51.000+08:00",
    "category": "dimission",
    "workflow_name": "员工离职",
    "form_values": [
      {
        "section": "行政审批",
        "fields": [
          {
            "name": "确认办公用品是否归还",
            "value": "否"
          }
        ]
      },
      {
        "section": "财务结算",
        "fields": [
          {
            "name": "停薪日期",
            "value": "2017-07-12"
          }
        ]
      },
      {
        "section": "款项结算",
        "fields": [
          {
            "name": "确认是否还有未结往来款项",
            "value": "否"
          }
        ]
      },
      {
        "section": "服务关闭",
        "fields": [
          {
            "name": "公司邮箱",
            "value": "否"
          }
        ]
      }
    ]
  },
  {
    "number_series": "20170721372181",
    "creator": "袁绍",
    "created_at": "2017-07-21T16:00:06.000+08:00",
    "status": "passed",
    "status_name": "通过",
    "updated_at": "2017-07-21T16:00:09.000+08:00",
    "category": "onboarding",
    "workflow_name": "员工入职",
    "form_values": [
      {
        "section": "适用规则",
        "fields": [
          {
            "name": "假期发放规则",
            "value": {
              "假期_11": null,
              "假期_1": null
            }
          }
        ]
      }
    ]
  }
]

按审批单号查询审批

GET /api/v2/approvals/:number_series

Parameters
number_series
审批单号

HTTP Parameters

参数 类型 默认值 必须 描述
payload JSON字符串   JSON Payload
access_key 字符串   API Key
tonce 整型   以秒为单位的UNIX timestamp
signature 字符串   请求签名

Response

JSON 格式的 审批对象