考勤假期管理¶
接入考勤业务¶
批量新增请假记录¶
使用场景:该接口用于从OA中写入请假记录到2号,一次添加的记录数不得超过100条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/leave/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"year": 2018,
"month": 12,
"records": [
{
"emp_id": "686460*****44f2987db8*****079b89",
"start_dt": "2018-12-09 09:30:20",
"end_dt": "2018-12-09 18:55:23",
"hour": 7,
"reason": "示例格式",
"type": "事假",
"int_type": 1
}
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
year | Int | 是 | 年 |
month | Int | 是 | 月 |
records | List | 是 | 记录数组。最大支持100条记录。超过后,此次提交的数据都不会保存,并返回相应错误码。 |
emp_id |
String | 是 | 员工id |
start_dt |
String | 是 | 请假开始的日期时间字符串 |
end_dt |
String | 是 | 请假结束的日期时间字符串* |
hour |
Int | 是 | 请假时长,单位:小时 |
type |
String | 否 | 请假类型,支持 1.事假 2.短期病假 3.婚假 4.丧假 5.年假 6.调休假 7.产假 8.陪产假 9.路途假 10.探亲假 11.看护假 12.非出勤假 13.产检假 14.哺乳假 |
int_type |
Int | 否 | 请假类型,支持 1.事假 2.短期病假 3.婚假 4.丧假 5.年假 6.调休假 7.产假 8.陪产假 9.路途假 10.探亲假 11.看护假 12.非出勤假 13.产检假 14.哺乳假 |
reason |
String | 否 | 请假原因,最长支持100个字符 |
- 参数详细说明
start_dt
和end_dt
- 如果请假单位是天,则start_dt和end_dt的写法支持的写法示例如下:
2020-5-20
请假时间段和时长会根据排班自动计算。2020-5-20 9:30
,2020-5-20 19:00
开始结束时间需包含排班时间段,如不够排班日时长,则请假失败- 如果请假单位是半天,示例如下:
2020-5-20 上午
,2020-5-20 下午
- 如果请假单位是小时,示例如下:
2020-5-20 10:00:00
- 如填写
2020-5-20
,将会被解析成2020-5-20 00:00:00
,建议填写完整时间
hour
请假时长- 请假记录时长显示的为填写的值,但系统核算、扣减假期余额使用通过排班计算出来的真实时长
type
请假类型- 病假的写法支持:
病假
、短期病假
、带薪短期病假
、带薪短期病假
- 事假的写法支持:
带薪事假
、事假
- 调休的写法支持:
调休
、调休假
- 病假的写法支持:
int_type
请假类型- 病假的写法支持:
2
- 事假的写法支持:
1
- 调休的写法支持:
6
- 病假的写法支持:
-
ps:
type
和int_type
不能同时为空,二者必传一。当有确定的请假类型时建议传int_type
(譬如年假、事假); 当请假类型认知模糊时建议传type
(譬如调休、调休假);当两种类型同时传时,会优先匹配int_type
,匹配到不再匹配type
。 -
注意:
-
一次添加的记录数不得大于100条
-
每个员工的请假记录会根据他所在的假期方案进行校验,如“是否允许透支”、“单次请假时长限制”、“请假单位”
-
单次请假限制
- 校验通过排班计算出来的时长是否满足假期方案里单次请假限制的范围
- 是否允许透支
- 如果不允许透支,且余额不为正数,则不允许请假
- 如果允许透支,则余额可能会被扣成负数
- 请假单位
需要按照员工所在假期方案里的请假单位进行请假
- 校验通过排班计算出来的时长是否满足假期方案里单次请假限制的范围
-
-
不能导入当前考勤周期之前的请假记录
-
不能导入当前考勤周期六个月之后的请假记录
-
请假时长不能小于0
-
单个员工的多次请假记录如果有时间交叉,则会添加失败
-
如果员工不享受指定假期,则会添加失败(“不享受假期”的选项在假期方案>发放规则>不享受假期)
权限说明
返回结果:
{
"errcode": 0,
"errmsg": "",
"data": {
"fail": 2,
"total": 10,
"err": [
"2018-11-11 11:12:10 必须满足区间:[2018-12-11 00:00:00, 2018-12-11 23:59:59]",
"2018-12-18 11:12:10 必须小于2018-12-18 11:10:10",
],
"success": 8
}
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码。暂有以下错误码: 19001: 请开通考勤管理 19002: 请启用请假记录 19003: 请启用外勤记录 19004: 请启用加班记录 19005: 请启用打卡记录 19006: 数据不是当前年月的 19007: 提交的数据记录超过100条 |
errmsg | 对返回码的文本描述内容 |
data | 返回数据 |
total |
提交的数据总数。 |
fail |
提交的数据总中,有误的数据量 |
success |
提交的数据总中,成功保存的数据量 |
err |
提交的数据总中,数据错误原因数组 |
批量新增外勤记录¶
使用场景:该接口用于从OA中写入外勤记录到2号,一次添加的记录数不得超过100条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/outattend/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"year": 2018,
"month": 12,
"records": [
{
"emp_id": "686460*****44f2987db8*****079b89",
"start_dt": "2018-12-09 09:30:20",
"end_dt": "2018-12-09 18:55:23",
"hour": 7,
"reason": "示例格式",
"type": "外出",
"int_type": 1
}
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
year | Int | 是 | 年 |
month | Int | 是 | 月 |
records | List | 是 | 记录数组。最大支持100条记录。超过后,此次提交的数据都不会保存,并返回相应错误码。 |
emp_id |
String | 是 | 员工id |
start_dt |
String | 是 | 外勤开始的日期时间字符串。支持的格式: %Y-%m-%d %H:%M:%S %Y/%m/%d %H:%M:%S |
end_dt |
String | 是 | 外勤结束的日期时间字符串。支持的格式: %Y-%m-%d %H:%M:%S %Y/%m/%d %H:%M:%S |
hour |
Int | 是 | 外勤时长, 单位:小时数 |
type |
String | 否 | 外勤类型。支持以下几种类型: 1.外出 2.出差 |
int_type |
Int | 否 | 外勤类型。支持以下几种类型: 1.外出 2.出差 |
reason |
String | 否 | 外勤原因。 最长支持100个字符 |
- 参数详细说明
start_dt
和end_dt
- 如果外勤规则单位是天,则start_dt和end_dt的写法支持的写法示例如下:
2020-5-20
请假时间段和时长会根据排班自动计算。- 如果外勤规则单位是半天,示例如下:
2020-5-20 上午
,2020-5-20 下午
- 如果外勤规则单位是小时,示例如下:
2020-5-20 10:00:00
- 如填写
2020-5-20
,将会被解析成2020-5-20 00:00:00
,建议填写完整时间
hour
外勤时长- 外勤记录申请时长显示的为填写的值,但系统核算会通过排班计算出来的真实时长
type
外勤类型- 外出的写法支持:
出差
- 出差的写法支持:
出差
- 外出的写法支持:
int_type
外勤类型- 外出的写法支持:
1
- 出差的写法支持:
2
- 外出的写法支持:
-
ps
:type
和int_type
不能同时为空,二者必传一。当有确定的外勤类型时建议传int_type
(譬如外出、出差); 当外勤类型认知模糊时建议传type
(譬如xx外出、xx出差);当两种类型同时传时,会优先匹配int_type
,匹配到不再匹配type
。 -
注意:
-
一次添加的记录数不得大于100条
-
每个员工的外勤记录会根据他所属考勤组的外勤规则来校验,如果开始结束时间的格式和外勤规则单位不匹配则会导入失败
-
不能导入当前考勤周期之前的外勤记录
-
不能导入当前考勤周期六个月之后的外勤记录
-
外勤时长不能小于0
权限说明
返回结果:
{
"errcode": 0,
"errmsg": "",
"data": {
"fail": 2,
"total": 10,
"err": [
"2018-11-11 11:12:10 必须满足区间:[2018-12-11 00:00:00, 2018-12-11 23:59:59]",
"2018-12-18 11:12:10 必须小于2018-12-18 11:10:10",
],
"success": 8
}
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码。暂有以下错误码: 19001: 请开通考勤管理 19002: 请启用请假记录 19003: 请启用外勤记录 19004: 请启用加班记录 19005: 请启用打卡记录 19006: 数据不是当前年月的 19007: 提交的数据记录超过100条 |
errmsg | 对返回码的文本描述内容 |
data | 返回数据 |
total |
提交的数据总数 |
fail |
提交的数据总中,有误的数据量 |
success |
提交的数据总中,成功保存的数据量 |
err |
提交的数据总中,数据错误原因数组 |
批量新增加班记录¶
使用场景:该接口用于从OA中写入加班记录到2号,一次添加的记录数不得超过100条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/overtime/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"year": 2018,
"month": 12,
"records": [
{
"emp_id": "686460*****44f2987db8*****079b89",
"start_dt": "2018-12-09 09:30:20",
"end_dt": "2018-12-09 18:55:23",
"hour": 7,
"reason": "示例格式",
"type": "节假日加班",
"int_type": 1
}
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
year | Int | 是 | 年 |
month | Int | 是 | 月 |
records | List | 是 | 记录数组。最大支持100条记录。超过后,此次提交的数据都不会保存,并返回相应错误码。 |
emp_id |
String | 是 | 员工id |
start_dt |
String | 是 | 加班开始的日期时间字符串。支持的格式: %Y-%m-%d %H:%M:%S %Y/%m/%d %H:%M:%S |
end_dt |
String | 是 | 加班结束的日期时间字符串。支持的格式: %Y-%m-%d %H:%M:%S %Y/%m/%d %H:%M:%S |
hour |
Int | 是 | 加班时长, 单位:小时数 |
type |
String | 否 | 加班类型。支持以下几种类型: 1.工作日加班 2.周末加班 3.节假日加班 |
int_type |
Int | 否 | 加班类型。支持以下几种类型: 1.工作日加班 2.周末加班 3.节假日加班 |
reason |
String | 否 | 加班原因。 最长支持100个字符 |
- 参数详细说明
start_dt
和end_dt
- 如果加班时间格式为%Y-%m-%d %H:%M:%S,示例如下:
2020-5-20 10:00:00
- 如果加班时间格式为%Y/%m/%d %H:%M:%S,示例如下:
2020/5/20 10:00:00
hour
加班时长- 单位:小时数
type
加班类型- 工作日加班的写法支持:
工作日加班
、xx工作日加班
- 周末加班的写法支持:
周末加班
- 节假日的写法支持:
节假日加班
- 工作日加班的写法支持:
-
int_type
加班类型- 工作日加班的写法支持:
1
- 周末加班的写法支持:
2
- 节假日加班的写法支持:
3
- 工作日加班的写法支持:
-
注意
: type
和int_type
不能同时为空,二者必传一。当有确定的加班类型时建议传int_type
(譬如工作日加班); 当加班类型认知模糊时建议传type
(譬如xx工作日加班);当两种类型同时传时,会优先匹配int_type
,匹配到不再匹配type
。- 如果同一个emp_id下有多条相同的start_dt,则只有一条记录会保存。
- 如果emp_id和start_dt已在存在系统里时,报提示记录重复。
权限说明
返回结果:
{
"errcode": 0,
"errmsg": "",
"data": {
"fail": 2,
"total": 10,
"err": [
"2018-11-11 11:12:10 必须满足区间:[2018-12-11 00:00:00, 2018-12-11 23:59:59]",
"2018-12-18 11:12:10 必须小于2018-12-18 11:10:10"
],
"success": 8
}
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码。暂有以下错误码: 19001: 请开通考勤管理 19002: 请启用请假记录 19003: 请启用外勤记录 19004: 请启用加班记录 19005: 请启用打卡记录 19006: 数据不是当前年月的 19007: 提交的数据记录超过100条 |
errmsg | 对返回码的文本描述内容 |
data | 返回数据 |
total |
提交的数据总数 |
fail |
提交的数据总中,有误的数据量 |
success |
提交的数据总中,成功保存的数据量 |
err |
提交的数据总中,数据错误原因数组 |
批量新增打卡记录¶
使用场景:该接口用于从OA中写入打卡记录到2号,打卡时间可多次,一次添加的记录数不得超过100条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/add_card/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"year": 2018,
"month": 12,
"records": [
{
"emp_id": "686460*****44f2987db8*****079b89",
"date": "2018-12-09",
"times": "18:55:23 08:55:23 07:55:23 14:55:23"
}
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
year | Int | 是 | 年 |
month | Int | 是 | 月 |
records | List | 是 | 记录数组。最大支持100条记录。超过后,此次提交的数据都不会保存,并返回相应错误码。 |
emp_id |
String | 是 | 员工id |
date |
String | 是 | 打卡日期。支持的格式: %Y-%m-%d %Y/%m/%d |
times |
String | 是 | 以英文空白字符串分隔的时间字符串。支持的格式:只要能正确转为时间点的格式皆可 |
权限说明
返回结果:
{
"errcode": 0,
"errmsg": "",
"data": {
"fail": 2,
"total": 2,
"err": [
"11:91不是正确的时间格式",
"ss:91不是正确的时间格式"
],
"success": 8
}
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码。暂有以下错误码: 19001: 请开通考勤管理 19002: 请启用请假记录 19003: 请启用外勤记录 19004: 请启用加班记录 19005: 请启用打卡记录 19006: 数据不是当前年月的 19007: 提交的数据记录超过100条 |
errmsg | 对返回码的文本描述内容 |
data | 返回数据 |
total |
提交的数据总数。 注:total <= fail + success |
fail |
提交的数据总中,有误的数据量 |
success |
提交的数据总中,成功保存的数据量 |
err |
提交的数据总中,数据错误原因数组 |
批量新增补卡记录¶
使用场景:该接口用于从OA中写入补卡记录到2号,打卡时间可多次,一次添加的记录数不得超过100条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/revamp_card/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"year": 2018,
"month": 12,
"records": [
{
"emp_id": "686460*****44f2987db8*****079b89",
"date": "2018-12-09",
"times": "18:55:23 08:55:23 07:55:23 14:55:23",
"user_name": "莉丝"
}
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
year | Int | 是 | 年 |
month | Int | 是 | 月 |
records | List | 是 | 记录数组。最大支持100条记录。超过后,此次提交的数据都不会保存,并返回相应错误码。 |
emp_id |
String | 是 | 员工id |
date |
String | 是 | 打卡日期。支持的格式: %Y-%m-%d %Y/%m/%d |
times |
String | 是 | 以英文空白字符串分隔的时间字符串。支持的格式:只要能正确转为时间点的格式皆可 |
user_name |
String | 否 | 操作人 |
- 注意:
- 如果times里有多条相同的时间点,则只有第一个时间点会保存。
权限说明
返回结果:
{
"errcode": 0,
"errmsg": "",
"data": {
"fail": 2,
"total": 2,
"err": [
"11:91不是正确的时间格式",
"ss:91不是正确的时间格式"
],
"success": 8
}
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码。暂有以下错误码: 19001: 请开通考勤管理 19002: 请启用请假记录 19003: 请启用外勤记录 19004: 请启用加班记录 19005: 请启用打卡记录 19006: 数据不是当前年月的 19007: 提交的数据记录超过100条 |
errmsg | 对返回码的文本描述内容 |
data | 返回数据 |
total |
提交的数据总数。 注:total <= fail + success |
fail |
提交的数据总中,有误的数据量 |
success |
提交的数据总中,成功保存的数据量 |
err |
提交的数据总中,数据错误原因数组 |
获取打卡记录¶
使用场景:返回员工的打卡记录。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/card_record/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"emp_ids": ["686460*****44f2987db8*****079b89"],
"emp_oa_codes": [],
"start_dt": "2020-05-01 0:00:00",
"end_dt": "2020-05-22 10:10:00",
"type": [1, 2, 3]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
emp_ids | List | 否 | 员工id 列表, 每次最多50个员工id |
emp_oa_codes | List | 否 | 员工OA编码 列表, 每次最多50个员工OA编码 |
start_dt | DateTime | 是 | 打卡开始时间 |
end_dt | DateTime | 是 | 打卡结束时间 |
type | List | 否 | 打卡来源,不传,取所有的打卡类型 |
- 注意:
- emp_ids 和 emp_oa_codes必传其一,两个都传将只使用emp_ids, 忽略emp_oa_codes。
- 列表内无效的emp_id或emp_oa_code将会直接被忽略。
- 打卡来源说明:小程序打卡-上下班(1)、小程序打卡-外勤(2)、考勤机打卡(4)、HR添加(5)、补卡审批(3)、企业微信打卡-上下班(8)、自动打卡(10)、企业微信打卡-外勤(18)、企业微信审批应用(18)
权限说明
返回结果:
{
"data": [
{ "id": "686460*****44f298ddb8*****78a8c",
"emp_id": "686460*****44f2987db8*****079b89",
"emp_no": "100009",
"dep_name": "财务部",
"attendance_no": "100009",
"brand": "",
"remark": "",
"dep_oa": null,
"emp_name": "欧小彪",
"card_dt": "2020-05-01T09:16:00",
"site_name": null,
"dep_id": "51669aaa877149d78a8c3bd882cb292e",
"type": 5
}
],
"errcode": 0,
"errmsg": ""
}
返回字段说明(以下所有字段都会返回无值为null):
字段名 | 类型 | 说明 |
---|---|---|
id | String | 主键id |
emp_id | String | 员工id |
emp_name | String | 员工姓名 |
emp_no | String | 工号 |
attendance_no | String | 考勤编号 |
dep_name | String | 部门名称 |
dep_id | String | 部门ID |
dep_oa | String | 部门OA编码 |
card_dt | String | 打卡时间 |
type | Int | 打卡来源 |
brand | String | 打卡设备(手机设备型号/考勤机名称) |
site_name | String | 打卡地点 |
remark | String | 备注 |
获取打卡结果¶
使用场景:该接口用于返回指定员工的打卡结果。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/card_result/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"emp_ids": ["686460*****44f2987db8*****079b89"],
"emp_oa_codes": [],
"start_dt": "2020-05-01",
"end_dt": "2020-05-22"
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
emp_ids | List | 否 | 员工id 列表, 每次最多50个员工id |
emp_oa_codes | List | 否 | 员工OA编码 列表,每次最多50个员工OA编码 |
start_dt | DateTime | 是 | 打卡开始时间 |
end_dt | DateTime | 是 | 打卡结束时间 |
- 注意:
- emp_ids 和 emp_oa_codes必传其一,两个都传将只使用emp_ids, 忽略emp_oa_codes。
- 列表内无效的emp_id或emp_oa_code将会直接被忽略。
权限说明
返回结果:
{
"data": [
{ "id": "686460*****44f2987db8*****079b89",
"emp_id": "4b519a36*****44f2987db8*****079b908",
"emp_no": "100009",
"dep_name": "财务部",
"attendance_no": "100009",
"emp_name": "欧小彪",
"shift_info": [
{
"start": "08:30",
"end": "18:00"
}
],
"complex_shift_info": [
{
"start": "08:30",
"end": "17:30",
"is_overtime": false
},
{
"start": "19:07",
"end": "21:09",
"is_overtime": true
}
],
"dep_oa": null,
"card_info": [
{
"start_1_time": "09:16",
"remark": "",
"site_name": null,
"brand": "",
"start_1_result": "迟到46分钟",
"card_dt": "2020-05-01T09:16:00",
"type": 5
},
{
"remark": "",
"site_name": "",
"brand": "",
"end_1_time": "",
"card_dt": "",
"end_1_result": "缺卡",
"type": ""
}
],
"access_date": "2020-05-01",
"dep_id": "51669aaa877149d78a8c3bd882cb292e"
}
],
"errcode": 0,
"errmsg": ""
}
返回字段说明(以下所有字段都会返回无值为null):
字段名 | 类型 | 说明 |
---|---|---|
id | String | 主键id |
emp_id | String | 员工id |
emp_name | String | 员工姓名 |
emp_no | String | 工号 |
attendance_no | String | 考勤编号 |
dep_name | String | 部门名称 |
dep_id | String | 部门ID |
dep_oa | String | 部门OA编码 |
card_dt | String | 打卡时间 |
shift_info | 班次信息 | |
complex_shift_info | List | 复杂班次信息,仅当排了复杂班次,此字段才有值,否则为空列表 |
type | Int | 打卡来源 |
brand | String | 打卡设备(手机设备型号/考勤机名称) |
site_name | String | 打卡地点 |
remark | String | 备注 |
获取请假记录¶
使用场景:用于返回指定员工的请假记录,一次最多50条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/leave_record/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"emp_ids": ["686460*****44f2987db8*****079b89"],
"emp_oa_codes": [],
"start_dt": "2020-05-01",
"end_dt": "2020-05-22",
"type": [1, 2, 3]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
emp_ids | List | 否 | 员工id 列表, 一次最多50条 |
emp_oa_codes | List | 否 | 员工OA编码 列表, 一次最多50条 |
start_dt | DateTime | 是 | 开始时间 |
end_dt | DateTime | 是 | 结束时间 |
type | List | 否 | 请假类型,不传,取所有的请假记录 |
- 注意:
- emp_ids 和 emp_oa_codes必传其一,两个都传将只使用emp_ids, 忽略emp_oa_codes。
- 列表内无效的emp_id或emp_oa_code将会直接被忽略。
- 请假类型:年假(5)、调休假(6)、事假(1)、路途假(9)、探亲假(10)、短期病假(2)、产假(7)、产检假(13)、婚假(3)、哺乳假(14)、看护假(11)、陪产假(8)、丧假(4)、非出勤假(12)。为空表示全部类型
- 自定义假类类型请通过2号考勤系统获取
权限说明
返回结果:
{
"data": [
{ "id": "686460*****44f2987db8*****079b89",
"emp_no": "100010",
"dep_name": "财务部",
"attendance_no": "100010",
"source_type": 1,
"source_id":"997c56**4bd4518aad98***2864d434",
"end_dt": "2020-04-01T13:59:00",
"reason": "",
"start_dt": "2020-04-01T09:00:00",
"dep_oa": null,
"length": 3.48,
"calc_length": 3.48,
"emp_name": "吴洪飞",
"emp_id": "997c56**4bd4518aad98***2864d434",
"dep_id": "51669aaa877149d78a8c3bd882cb292e",
"type": 1,
"title": "自定义-转休"
}
],
"errcode": 0,
"errmsg": ""
}
返回字段说明(以下所有字段都会返回无值为null):
字段名 | 类型 | 说明 |
---|---|---|
id | String | 主键id |
emp_id | String | 员工id |
emp_name | String | 员工姓名 |
emp_no | String | 工号 |
attendance_no | String | 考勤编号 |
dep_name | String | 部门名称 |
dep_id | String | 部门ID |
dep_oa | String | 部门OA编码 |
title | String | 假类名称 |
type | Int | 请假类型 |
source_type | Int | 数据来源:HR添加(1)、请假审批(2)、企业微信审批应用(8) |
source_id | String | 数据来源记录ID,如审批单ID ,手动添加的记录该字段为空串 |
start_dt | String | 请假开始时间 |
end_dt | String | 请假结束时间 |
length | Float | 请假时长 |
calc_length | Float | 核算请假时长 |
reason | String | 请假原因 |
获取加班记录¶
使用场景:用于返回指定员工的加班记录,一次最多50条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/ot_record/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"emp_ids": ["686460*****44f2987db8*****079b89"],
"emp_oa_codes": [],
"start_dt": "2020-05-01",
"end_dt": "2020-05-22"
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
emp_ids | List | 否 | 员工id 列表, 一次最多50条 |
emp_oa_codes | List | 否 | 员工OA编码 列表, 一次最多50条 |
start_dt | DateTime | 是 | 开始时间 |
end_dt | DateTime | 是 | 结束时间 |
- 注意:
- emp_ids 和 emp_oa_codes必传其一,两个都传将只使用emp_ids, 忽略emp_oa_codes。
- 列表内无效的emp_id或emp_oa_code将会直接被忽略。
权限说明
返回结果:
{
"data": [
{ "id": "686460*****44f2987db8*****079b89",
"emp_no": "100010",
"dep_name": "财务部",
"attendance_no": "100010",
"source_type": 1,
"source_id": "997c56**4bd4518aad98***2864d434",
"end_dt": "2020-04-01T13:59:00",
"reason": "",
"start_dt": "2020-04-01T09:00:00",
"dep_oa": null,
"length": 3.48,
"approval_length": 3.48,
"compensation": 1,
"emp_name": "吴洪飞",
"emp_id": "997c56**4bd4518aad98***2864d434",
"dep_id": "51669aaa877149d78a8c3bd882cb292e",
"type": 1
}
],
"errcode": 0,
"errmsg": ""
}
返回字段说明(以下所有字段都会返回无值为null):
字段名 | 类型 | 说明 |
---|---|---|
id | String | 主键id |
emp_id | String | 员工id |
emp_name | String | 员工姓名 |
emp_no | String | 工号 |
attendance_no | String | 考勤编号 |
dep_name | String | 部门名称 |
dep_id | String | 部门ID |
dep_oa | String | 部门OA编码 |
type | Int | 加班类型 |
source_type | Int | 数据来源:HR添加(1)、加班审批(2) |
source_id | String | 数据来源记录ID,如审批单ID ,手动添加的记录该字段为空串 |
compensation | Int | 补偿方式:不计补偿(0)、加班工资(1)、加班调休(2) |
start_dt | DateTime | 加班开始时间 |
end_dt | DateTime | 加班结束时间 |
approval_length | Float | 申请时长 |
length | Float | 最终核算时长 |
reason | String | 加班原因 |
获取外勤记录¶
使用场景:用于返回指定员工的外勤记录,一次最多50条。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/outing_record/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"emp_ids": ["686460*****44f2987db8*****079b89"],
"emp_oa_codes": [],
"start_dt": "2020-05-01",
"end_dt": "2020-05-22",
"type": 1
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
emp_ids | List | 否 | 员工id 列表, 一次最多50条 |
emp_oa_codes | List | 否 | 员工OA编码 列表, 一次最多50条 |
start_dt | DateTime | 是 | 开始时间 |
end_dt | DateTime | 是 | 结束时间 |
type | Int | 否 | 外勤类型,不传,取所有的外勤记录 |
- 注意:
- emp_ids 和 emp_oa_codes必传其一,两个都传将只使用emp_ids, 忽略emp_oa_codes。
- 列表内无效的emp_id或emp_oa_code将会直接被忽略。
- 外勤类型:外出(1),出差(2)。为空表示全部类型
权限说明
返回结果:
{
"data": [
{ "id": "686460*****44f2987db8*****079b89",
"emp_no": "100010",
"dep_name": "财务部",
"attendance_no": "100010",
"source_type": 1,
"source_id": "997c56**4bd4518aad98***2864d434",
"end_dt": "2020-04-01T13:59:00",
"reason": "",
"start_dt": "2020-04-01T09:00:00",
"dep_oa": null,
"length": 3.48,
"calc_length": 3.48,
"emp_name": "吴洪飞",
"emp_id": "997c56**4bd4518aad98***2864d434",
"dep_id": "51669aaa877149d78a8c3bd882cb292e",
"type": 1
}
],
"errcode": 0,
"errmsg": ""
}
返回字段说明(以下所有字段都会返回无值为null):
字段名 | 类型 | 说明 |
---|---|---|
id | String | 主键id |
emp_id | String | 员工id |
emp_name | String | 员工姓名 |
emp_no | String | 工号 |
attendance_no | String | 考勤编号 |
dep_name | String | 部门名称 |
dep_id | String | 部门ID |
dep_oa | String | 部门OA编码 |
type | Int | 外勤类型,外出(1),出差(2) |
source_type | Int | 数据来源:HR添加(1)、外出审批(2)、出差审批(3)、企业微信外出审批(5)、企业微信出差审批(6) |
source_id | String | 数据来源记录ID,如审批单ID ,手动添加的记录该字段为空串 |
start_dt | DateTime | 外勤开始时间 |
end_dt | DateTime | 外勤结束时间 |
length | Float | 申请时长 |
calc_length | Float | 最终核算时长 |
reason | String | 外勤原因 |
考勤核算数据¶
获取员工每日实际出勤工时¶
使用场景:该接口返回指定日期的打卡时间和出勤工时。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/attends_info/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"query_start": "2020-04-01",
"query_end": "2020-04-02",
"dep_ids": [
"b05d5e2e199e4bae8f6c67a02afbff62"
],
"dep_oa_codes": [
"10004838"
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
query_start | String | 是 | 查询开始日期 |
query_end | String | 是 | 查询结束日期 |
dep_ids | List | 否 | 部门ID dep_ids 与 dep_oa_codes不能同时为空 |
dep_oa_codes | List | 否 | 部门 OA 编码 dep_oa_codes与dep_ids不能同时为空,且只支持两个参数只能传一个 |
- 注意:
- dep_ids 和 dep_oa_codes必传其一,两个都传将会被限制,不允许两个参数一起传。
-
列表内无效的 dep_ids 或 dep_oa_codes 将会直接被忽略。
-
注意:
- dep_ids 和 dep_oa_codes必传其一,两个都传将会被限制,不允许两个参数一起传。
- 列表内无效的 dep_ids 或 dep_oa_codes 将会直接被忽略。
权限说明
返回结果:
{
"data": {
"10104838": {
"2020-04-01": {
"shift_info": {
"end_1": "18:30",
"shift_hours": 8.0,
"start_1": "09:00"
},
"work_hours": 8.0,
"card_time": {
"end_3": null,
"end_2": null,
"end_1": "2020-04-01T18:43",
"start_2": null,
"start_3": null,
"start_1": "2020-04-01T08:10"
}
},
"2020-04-02": {
"shift_info": {
"end_1": "18:30",
"shift_hours": 8.0,
"start_1": "09:00"
},
"work_hours": 0.0,
"card_time": {
"end_3": null,
"end_2": null,
"end_1": null,
"start_2": null,
"start_3": null,
"start_1": "2020-04-01T08:10"
}
}
}
},
"errcode": 0,
"errmsg": ""
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码。暂有以下错误码: 19001: 请开通考勤管理 19002: 请启用请假记录 19003: 请启用外勤记录 19004: 请启用加班记录 19005: 请启用打卡记录 19006: 数据不是当前年月的 19007: 提交的数据记录超过100条 |
errmsg | 对返回码的文本描述内容 |
data | 返回数据 |
10104838 |
若传参为dep_ids则为返回值员工ID;若传参为dep_oa_codes则为员工 OA 编码 |
2020-04-01 |
查询日期字符串 |
shift_info |
班次信息字典 |
start_1 |
上班时间1 |
end_1 |
下班时间1 |
start_2 |
上班时间2 |
end_2 |
下班时间2 |
start_3 |
上班时间3 |
end_3 |
下班时间3 |
shift_hours |
班次时长 |
work_hours |
实际出勤时长 |
card_time |
实际班次打卡时间信息字典 |
start_1 |
上班打卡时间1 |
end_1 |
下班打卡时间1 |
start_2 |
上班打卡时间2 |
end_2 |
下班打卡时间2 |
start_3 |
上班打卡时间3 |
end_3 |
下班打卡时间3 |
获取员工月度考勤结果数据¶
使用场景:返回员工月度考勤结果,最多一次返回50条员工考勤结果。
请求方式:POST(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/month_overview/?access_token=ACCESS_TOKEN
请求包结构体为:
{
"year": 2019,
"month": 4,
"emp_ids": ["686460*****44f2987db8*****079b89"],
"emp_oa_codes": []
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
year | Int | 是 | 年 |
month | Int | 是 | 月 |
emp_ids | List | 否 | 员工id 列表, 一次最多50条 |
emp_oa_codes | List | 否 | 员工OA编码 列表, 一次最多50条 |
- 注意:
- emp_ids 和 emp_oa_codes必传其一,两个都传将只使用emp_ids, 忽略emp_oa_codes。
- 列表内无效的emp_id或emp_oa_code将会直接被忽略。
权限说明
返回结果:
{
"data": [
{ "id": "686460*****44f2987db8*****079b81",
"leave_non_attendance_hour": 0,
"early_leave_charge": 0,
"leave_lactation_hour": 0,
"leave_type_50_hour": 2,
"leave_type_51_hour": 6.5,
"expected_attend_day": 22,
"expected_attend_hour": 168,
"job_title_name": null,
"leave_maternity_day": 0,
"business_trip_day": 0,
"leave_mourning_day": 0,
"leave_annual_hour": 0,
"business_trip_hour": 0,
"mend_clock_count": 3,
"leave_hour_count": 0,
"dept_oa_code": null,
"late_count": 0,
"leave_paternity_hour": 0,
"emp_id": "8dd54c0**d47e5*****c5e3e13a45",
"comprehensive_charge": 0,
"leave_mourning_hour": 0,
"leave_trip_hour": 0,
"missing_clockin_count": 0,
"leave_home_hour": 0,
"leave_early_minute": 0,
"leave_marriage_hour": 0,
"leave_maternity_hour": 0,
"work_hour": 168,
"leave_marriage_day": 0,
"late_deduct_money": 0,
"absenteeism_count": 0,
"leave_care_hour": 0,
"leave_business_hour": 0,
"missing_clockout_count": 0,
"attendance_no": null,
"missing_clock_count": 0,
"absenteeism_deduct_money": 0,
"missing_clock_charge": 0,
"absenteeism_day": 0,
"leave_sick_hour": 0,
"emp_oa_code": null,
"dep_name": null,
"emp_name": "EMP NAME",
"leave_prenatal_checkup_hour": 0,
"dept_id": null,
"emp_no": null,
"late_minute_count": 0,
"job_title_id": null,
"field_work_hour": 168,
"early_leave_count": 0,
"month_total_outing_hour": 168,
"leave_timeoff_hour": 0
}
],
"errcode": 0,
"errmsg": ""
}
返回字段说明(以下所有字段都会返回无值为null):
字段名 | 类型 | 说明 |
---|---|---|
id | String | 主键ID |
emp_id | String | 员工ID |
emp_oa_code | String | 员工OA编码 |
emp_name | String | 员工姓名 |
emp_no | String | 员工工号 |
attendance_no | String | 考勤编号 |
dept_oa_code | String | 组织OA编码 |
dept_id | Float | 组织ID |
dep_name | String | 组织名称 |
job_title_id | String | 岗位ID |
job_title_name | String | 岗位名称 |
expected_attend_day | Int | 应出勤天数 |
expected_attend_hour | Float | 应出勤小时数 |
work_hour | Float | 工作时长(单位:小时) |
absenteeism_day | Int | 旷工天数 |
missing_clockin_count | Int | 上班缺卡次数 |
missing_clockout_count | Int | 下班缺卡次数 |
missing_clock_count | Int | 缺卡次数 |
mend_clock_count | Int | 补卡次数 |
leave_marriage_hour | Float | 婚假小时 |
leave_sick_hour | Float | 短期病假小时 |
leave_annual_hour | Float | 年假小时 |
leave_timeoff_hour | Float | 调休假小时 |
leave_business_hour | Float | 事假小时 |
leave_maternity_hour | Float | 产假小时 |
leave_paternity_hour | Float | 陪产假小时 |
leave_trip_hour | Float | 路途假小时 |
leave_home_hour | Float | 探亲假小时 |
leave_care_hour | Float | 看护假小时 |
leave_non_attendance_hour | Float | 非出勤假小时 |
leave_prenatal_checkup_hour | Float | 产检假小时 |
leave_mourning_hour | Float | 丧假小时 |
leave_lactation_hour | Float | 哺乳假小时 |
leave_type_50_hour | Float | 自定义假类-50(自定义假类来自2号考勤假期假类自定义配置),单位小时 |
leave_type_51_hour | Float | 自定义假类-51,单位小时 |
leave_marriage_day | Float | 婚假天 |
leave_maternity_day | Float | 产假天 |
leave_mourning_day | Float | 丧假天 |
leave_hour_count | Float | 请假总时长 |
late_count | Int | 迟到次数 |
late_minute_count | Float | 迟到分钟数 |
absenteeism_count | Int | 旷工次数 |
early_leave_count | Int | 早退次数 |
leave_early_minute | Float | 早退分钟数 |
late_deduct_money | Float | 迟到扣款(元) |
absenteeism_deduct_money | Float | 旷工扣款(元) |
early_leave_charge | Float | 早退扣款(元) |
comprehensive_charge | Float | 综合扣款(元) |
missing_clock_charge | Float | 缺卡扣款(元) |
business_trip_hour | Float | 出差(小时) |
business_trip_day | Float | 出差天 |
field_work_hour | Float | 外出(小时) |
month_total_outing_hour | Float | 外勤合计(小时) |
考勤统计概况¶
查询部门每日考勤概况数据¶
使用场景:返回指定部门(或全公司)的每日员工考勤概况数据
请求方式:GET(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/statistics_querier/daily_data/?access_token=ACCESS_TOKEN
请求参数与示例:
查询日期值 = "2022-10-08"
部门ID值 = "686460*****44f2987db8*****079b89"
ignore_department值 = false
https://openapi.2haohr.com/api/attendance/statistics_querier/daily_data/?access_token=ACCESS_TOKEN&query_dt={查询日期值}&department_id={部门ID值}&ignore_department={ignore_department值}
CURL工具请求示例:
curl -s "https://openapi.2haohr.com/api/attendance/statistics_querier/daily_data/?access_token=ACCESS_TOKEN&query_dt={查询日期值}&department_id={部门ID值}&ignore_department={ignore_department值}" --header "Content-Type: application/json"
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
query_dt | String | 是 | 查询日期,Date String "2022-10-10",未传值时默认查询今日 |
department_id | String | 是 | 部门ID,department_id |
ignore_department | Boolean | 否 | 是否忽略部门,如果忽略则意味着查询全公司考勤数据 |
注意:
- ignore_department 参数默认 false,但如果传递值为 true,将忽略 department_id 的取值。
权限说明:-
返回结果:
{
"data": {
"department_data": {
"department_id": "",
"department_name": ""
},
"attendance_data": {
"abnormal": 0,
"normal": 0,
"late": 0,
"early": 0,
"absent": 0,
"absenteeism": 0,
"outing_work": 0,
"outing_hours": 0,
"overtime": 0,
"leave": 0,
"business_trip": 0,
"all": 0,
"not_scheduler": 0
}
},
"errcode": 0,
"errmsg": ""
}
返回字段说明:
字段名 | 类型 | 说明 |
---|---|---|
department_data | Object | 部门信息,指定企业时为NULL |
department_id | String | 部门ID |
department_name | String | 部门名称 |
attendance_data | Object | 考勤统计数据 |
all | Int | 总人数 |
abnormal | Int | 异常考勤的人数 |
normal | Int | 正常考勤的人数 |
full_time | Int | 满勤的人数 |
not_full_time | Int | 未满勤的人数 |
late | Int | 迟到的人数 |
early | Int | 早退的人数 |
absent | Int | 缺卡的人数 |
absenteeism | Int | 旷工的人数 |
leave | Int | 请假的人数 |
overtime | Int | 加班的人数 |
outing_work | Int | 外勤的人数 |
business_trip | Int | 出差的人数 |
outing_hours | Int | 外出的人数 |
查询部门每月考勤概况数据¶
使用场景:返回指定部门(或全公司)的每月员工考勤概况数据
请求方式:GET(HTTPS)
请求地址:https://openapi.2haohr.com/api/attendance/statistics_querier/monthly_data/?access_token=ACCESS_TOKEN
请求参数与示例:
查询日期值 = "2022-10-08"
部门ID值 = "686460*****44f2987db8*****079b89"
ignore_department值 = false
https://openapi.2haohr.com/api/attendance/statistics_querier/monthly_data/?access_token=ACCESS_TOKEN&query_dt={查询日期值}&department_id={部门ID值}&ignore_department={ignore_department值}
CURL工具请求示例:
curl -s "https://openapi.2haohr.com/api/attendance/statistics_querier/monthly_data/?access_token=ACCESS_TOKEN&query_dt={查询日期值}&department_id={部门ID值}&ignore_department={ignore_department值}" --header "Content-Type: application/json"
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 调用接口凭证 |
query_dt | String | 是 | 查询日期,Date String "2022-10-10",未传值时默认查询当前月份 |
department_id | String | 是 | 部门ID,department_id |
ignore_department | Boolean | 否 | 是否忽略部门,如果忽略则意味着查询全公司考勤数据 |
注意:
- ignore_department 参数默认 false,但如果传递值为 true,将忽略 department_id 的取值。
权限说明:-
返回结果:
{
"data": {
"department_data": {
"department_id": "",
"department_name": ""
},
"attendance_data": {
"abnormal": 0,
"normal": 0,
"late": 0,
"early": 0,
"absent": 0,
"absenteeism": 0,
"outing_work": 0,
"outing_hours": 0,
"overtime": 0,
"leave": 0,
"business_trip": 0,
"all": 0,
"not_scheduler": 0
}
},
"errcode": 0,
"errmsg": ""
}
返回字段说明:
字段名 | 类型 | 说明 |
---|---|---|
department_data | Object | 部门信息,指定企业时为NULL |
department_id | String | 部门ID |
department_name | String | 部门名称 |
attendance_data | Object | 考勤统计数据 |
all | Int | 总人数 |
abnormal | Int | 异常考勤的人数 |
normal | Int | 正常考勤的人数 |
full_time | Int | 满勤的人数 |
not_full_time | Int | 未满勤的人数 |
late | Int | 迟到的人数 |
early | Int | 早退的人数 |
absent | Int | 缺卡的人数 |
absenteeism | Int | 旷工的人数 |
leave | Int | 请假的人数 |
overtime | Int | 加班的人数 |
outing_work | Int | 外勤的人数 |
business_trip | Int | 出差的人数 |
outing_hours | Int | 外出的人数 |