考勤假期管理

接入考勤业务

批量新增请假记录


使用场景:该接口用于从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个字符

权限说明

返回结果:

{
    "data": {
        "fail": 1,
        "total": 3,
        "suc": [
            {
                "index": 1,
                "hour": 7,
                "type": "事假",
                "reason": "示例格式2",
                "int_type": 1,
                "emp_id": "10aea****78d4875860065****14264c",
                "start_dt": "2025-07-21 09:30:20",
                "end_dt": "2025-07-21 18:55:23",
                "id": "812ee****8ab4f5692a705b****a9b27"
            },
            {
                "index": 2,
                "hour": 7,
                "type": "事假",
                "reason": "示例格式3",
                "int_type": 1,
                "emp_id": "10aea****78d4875860065****14264c",
                "start_dt": "2025-07-22 09:30:20",
                "end_dt": "2025-07-22 18:55:24",
                "id": "3e1c0****31e4c55b29a992****6344e"
            }
        ],
        "err": [
            {
                "hour": 7,
                "type": "事假",
                "fail": "时间段不正确",
                "reason": "示例格式1-错误",
                "int_type": 1,
                "emp_id": "10aea****78d4875860065****14264c",
                "start_dt": "2025-07-10 09:30:20",
                "end_dt": "2025-07-09 18:55:23"
            }
        ],
        "success": 2
    },
    "errcode": 0,
    "errmsg": ""
}

参数说明:

参数 说明
errcode 返回码。暂有以下错误码:
19001: 请开通考勤管理
19002: 请启用请假记录
19003: 请启用外勤记录
19004: 请启用加班记录
19005: 请启用打卡记录
19006: 数据不是当前年月的
19007: 提交的数据记录超过100条
errmsg 对返回码的文本描述内容
data 返回数据

total

提交的数据总数。

fail

提交的数据总中,有误的数据量

success

提交的数据总中,成功保存的数据量

err

提交的数据总中,数据错误原因数组

suc

提交的数据总中,成功保存的数据数组

错误对象 (err item) 除字段 fail 外,其余字段均为对应传入字段的值。

字段 说明
hour 请假时长(小时)
type 请假类型
fail 失败原因分类
reason 详细错误描述
int_type 请假类型编码
emp_id 员工Id
start_dt 请假开始时间
end_dt 请假结束时间

成功对象 (suc item) 除字段 index、id 外,其余字段均为对应传入字段的值。

字段 说明
index 记录在原始请求中的顺序索引
id 服务端生成的唯一记录ID
hour 请假时长(小时)
type 请假类型
reason 成功时的备注信息
int_type 请假类型编码
emp_id 员工Id
start_dt 请假开始时间
end_dt 请假结束时间

批量新增外勤记录


使用场景:该接口用于从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个字符

权限说明

返回结果:

{
    "data": {
        "fail": 2,
        "total": 3,
        "suc": [
            {
                "index": 2,
                "hour": 7,
                "end_dt": "2025-07-26 18:55:23",
                "reason": "示例格式3",
                "int_type": 1,
                "emp_id": "10aea****78d48758600659****4264c",
                "start_dt": "2025-07-26 09:30:20",
                "type": "外出",
                "id": "7d4b7****1ac48b7ab7306d****3e909"
            }
        ],
        "err": [
            {
                "hour": 7,
                "end_dt": "2025-07-09 18:55:23",
                "fail": "该时段已存在外勤记录",
                "reason": "示例格式1",
                "int_type": 1,
                "emp_id": "10aea****78d48758600659****4264c",
                "start_dt": "2025-07-09 09:30:20",
                "type": "外出"
            },
            {
                "hour": 7,
                "end_dt": "2025-07-20 18:55:23",
                "fail": "该时段已存在外勤记录",
                "reason": "示例格式2",
                "int_type": 1,
                "emp_id": "10aea****78d48758600659****4264c",
                "start_dt": "2025-07-20 09:30:20",
                "type": "外出"
            }
        ],
        "success": 1
    },
    "errcode": 0,
    "errmsg": ""
}

参数说明:

参数 说明
errcode 返回码。暂有以下错误码:
19001: 请开通考勤管理
19002: 请启用请假记录
19003: 请启用外勤记录
19004: 请启用加班记录
19005: 请启用打卡记录
19006: 数据不是当前年月的
19007: 提交的数据记录超过100条
errmsg 对返回码的文本描述内容
data 返回数据

total

提交的数据总数

fail

提交的数据总中,有误的数据量

success

提交的数据总中,成功保存的数据量

err

提交的数据总中,数据错误原因数组

suc

提交的数据总中,成功保存的数据数组

错误对象 (err item) 除字段 fail 外,其余字段均为对应传入字段的值。

字段 说明
hour 外勤时长(小时)
type 外勤类型
fail 失败原因分类
reason 详细错误描述
int_type 外勤类型编码
emp_id 员工Id
start_dt 外勤开始时间
end_dt 外勤结束时间

成功对象 (suc item) 除字段 index、id 外,其余字段均为对应传入字段的值。

字段 说明
index 记录在原始请求中的顺序索引
id 服务端生成的唯一记录ID
hour 外勤时长(小时)
type 外勤类型
reason 成功时的备注信息
int_type 外勤类型编码
emp_id 员工Id
start_dt 外勤开始时间
end_dt 外勤结束时间

批量新增加班记录


使用场景:该接口用于从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,
            "need_calc": 0,
            "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 加班时长, 单位:小时数

need_calc

Int 加班时长是否需按加班规则核算,0表示无需按加班规则核算;1表示按加班规则核算;可不传

type

String 加班类型。支持以下几种类型:
1.工作日加班 2.周末加班 3.节假日加班

int_type

Int 加班类型。支持以下几种类型:
1.工作日加班 2.周末加班 3.节假日加班

reason

String 加班原因。
最长支持100个字符

权限说明

返回结果:

{
    "data": {
        "fail": 1,
        "total": 3,
        "suc": [
            {
                "index": 2,
                "hour": 7,
                "end_dt": "2025-07-18 18:55:23",
                "reason": "示例格式2",
                "int_type": 1,
                "emp_id": "10aea****78d48758600659****4264c",
                "start_dt": "2025-07-18 09:30:36",
                "type": "节假日加班",
                "id": "430eb****2b443cd8d86bcf****85613"
            },
            {
                "index": 1,
                "hour": 7,
                "end_dt": "2025-07-17 18:55:23",
                "reason": "示例格式",
                "int_type": 1,
                "emp_id": "10aea****78d48758600659****4264c",
                "start_dt": "2025-07-17 09:30:37",
                "type": "节假日加班",
                "id": "91c16****5dd4a47b7767b8****d8d48"
            }
        ],
        "err": [
            {
                "hour": 7,
                "end_dt": "2025-07-06 18:55:23",
                "fail": "2025-07-07 09:30:20必须小于2025-07-06 18:55:23",
                "reason": "示例格式",
                "int_type": 1,
                "emp_id": "10aea****78d48758600659****4264c",
                "start_dt": "2025-07-07 09:30:20",
                "type": "节假日加班"
            }
        ],
        "success": 2
    },
    "errcode": 0,
    "errmsg": ""
}

参数说明:

参数 说明
errcode 返回码。暂有以下错误码:
19001: 请开通考勤管理
19002: 请启用请假记录
19003: 请启用外勤记录
19004: 请启用加班记录
19005: 请启用打卡记录
19006: 数据不是当前年月的
19007: 提交的数据记录超过100条
errmsg 对返回码的文本描述内容
data 返回数据

total

提交的数据总数

fail

提交的数据总中,有误的数据量

success

提交的数据总中,成功保存的数据量

err

提交的数据总中,数据错误原因数组

suc

提交的数据总中,成功保存的数据数组

错误对象 (err item) 除字段 fail 外,其余字段均为对应传入字段的值。

字段 说明
hour 加班时长(小时)
type 加班类型
fail 失败原因分类
reason 详细错误描述
int_type 加班类型编码
emp_id 员工Id
start_dt 加班开始时间
end_dt 加班结束时间

成功对象 (suc item) 除字段 index、id 外,其余字段均为对应传入字段的值。

字段 说明
index 记录在原始请求中的顺序索引
id 服务端生成的唯一记录ID
hour 加班时长(小时)
type 加班类型
reason 成功时的备注信息
int_type 加班类型编码
emp_id 员工Id
start_dt 加班开始时间
end_dt 加班结束时间

批量新增打卡记录


使用场景:该接口用于从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 操作人

权限说明

返回结果:

{
   "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 打卡来源,不传,取所有的打卡类型

权限说明

返回结果:

{
    "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,
            "longitude": "116.4994723850",
            "latitude": "39.9768261720",
            "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 打卡设备(手机设备型号/考勤机名称)
longitude String 打卡地点的经度
latitude 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 打卡结束时间

权限说明

返回结果:

{
    "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 请假类型,不传,取所有的请假记录

权限说明

返回结果:

{
    "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 结束时间

权限说明

返回结果:

{
    "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 外勤类型,不传,取所有的外勤记录

权限说明

返回结果:

{
    "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 外勤原因

批量删除请假记录


使用场景:用于删除指定的请假记录,一次最多50条。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/delete/leave/?access_token=ACCESS_TOKEN

{
    "ids": ["686460*****44f2987db8*****079b89"]
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
ids List 请假记录id, 一次最多50条

权限说明

返回结果:

{
    "data": {
      "err": 1,
      "succ": 0,
      "err_info": [{
          "id": "686460*****44f2987db8*****079b89",
          "reason": "不允许删除"
      }]
    },
    "errcode": 0,
    "errmsg": ""
    }

返回字段说明(以下所有字段都会返回无值为null):

字段名 类型 说明
err Int 错误数
succ Int 成功数
err_info List 失败详情信息

id

String 请假记录id

reason

String 失败原因

批量删除外勤记录


使用场景:用于删除指定的外勤记录,一次最多50条。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/delete/out_attend/?access_token=ACCESS_TOKEN

{
    "ids": ["561236*****44f2987db8*****079b89"],
  "type": 1
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
ids List 外勤记录id, 一次最多50条
type Int 外勤类型。支持以下几种类型,1.外出 2.出差

权限说明

返回结果:

{
    "data": {
      "err": 1,
      "succ": 0,
      "err_info": [{
          "id": "561236*****44f2987db8*****079b89",
          "reason": "不能删除历史考勤月份的考勤记录"
      }]
    },
    "errcode": 0,
    "errmsg": ""
    }

返回字段说明(以下所有字段都会返回无值为null):

字段名 类型 说明
err Int 错误数
succ Int 成功数
err_info List 失败详情信息

id

String 外勤记录id

reason

String 失败原因

批量删除加班记录


使用场景:用于删除指定的加班记录,一次最多50条。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/delete/overtime/?access_token=ACCESS_TOKEN

{
    "ids": ["785660*****44f2987db8*****079b89"]
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
ids List 加班记录id, 一次最多50条

权限说明

返回结果:

{
    "data": {
      "err": 1,
      "succ": 0,
      "err_info": [{
          "id": "785660*****44f2987db8*****079b89",
          "reason": "不能删除自动核算生成的考勤记录"
      }]
    },
    "errcode": 0,
    "errmsg": ""
    }

返回字段说明(以下所有字段都会返回无值为null):

字段名 类型 说明
err Int 错误数
succ Int 成功数
err_info List 失败详情信息

id

String 加班记录id

reason

String 失败原因

考勤班次管理

获取班次列表


使用场景:用于返回企业设置的班次列表,一次最多50条。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/shifts/list/?access_token=ACCESS_TOKEN

请求包结构体为:

请求参数与示例:

{
    "p": 1,
    "limit": 50,
    "shift_ids": ["9u6460*****44f298668*****079b81", "9u6460*****44f298668*****079bko"]
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
shift_ids List 班次id列表
limit Int 每页条数 默认10
p Int 页码 默认1

权限说明

返回结果:

{
      "data": {
      "p": 1,
      "limit": 10,
      "offset": 0,
      "total_count": 3,
      "totalpage": 1,
      "objects": [
          {
              "name": "休息",
              "short_name": "休息",
              "shift_color": "#FFAC48",
              "shift_rule_type": 2,
              "convert_type": 0,
              "shift_id": "3f198574ecca46f48f36decd66a5b044",
              "overtime_hours": 0,
              "is_elastic": false,
              "work_hours": "0",
              "day_start_tag": 1,
              "is_complex": 0,
              "is_temporary": 0
          },
          {
              "name": "早晚打卡",
              "short_name": "早晚",
              "shift_color": "#5282F7",
              "work_hours": "8.0",
              "shift_rule_type": 1,
              "convert_type": 1,
              "shift_id": "241f664bbe6a4c22834f693a1b3b9b6a",
              "overtime_hours": 0,
              "is_elastic": true,
              "day_start_tag": 1,
              "is_complex": 0,
              "is_temporary": 0,
              "time_stages": [
                  {
                    "is_overtime": false,
                    "record_early": false,
                    "record_late": false,
                    "has_rest": false,
                    "start_time": "08:30",
                    "end_time": "16:30",
                    "card_mod": 1,
                    "rest_start_time": "",
                    "rest_end_time": "",
                    "remit_late": 0,
                    "remit_early": 0,
                    "clock_in_valid_start_time": "05:00",
                    "clock_in_valid_end_time": "13:00",
                    "clock_out_valid_start_time": "13:00",
                    "clock_out_valid_end_time": "04:00",
                    "serial": 1
                  }
              ],
              "late_leave_rules": {
              "later_leave_overtimes": 30,
              "enable_ignore_absent": false
            }
          },
          {
                "name": "简单班次",
                "short_name": "jd",
                "shift_color": "#5282f7",
                "start_1": "08:30",
                "end_1": "17:30",
                "absenteeism_1": 20,
                "miss_type_1": 1,
                "start_2": null,
                "end_2": null,
                "absenteeism_2": 0,
                "miss_type_2": 0,
                "start_3": null,
                "end_3": null,
                "absenteeism_3": 0,
                "miss_type_3": 0,
                "rest_start_dt": "12:00",
                "rest_end_dt": "13:00",
                "character_type": 1,
                "character_grade": 0,
                "character_advance": 30,
                "character_postpone": 30,
                "is_complex": 0,
                "is_temporary": 0,
                "convert_type": 0,
                "shift_id": "e00def90a3814b578381ca3be9631d44",
                "work_hours": "8.00",
                "shift_rule_type": 1,
                "advance_1": "06:00",
                "postpone_1": "23:30",
                "late_1": "10:00",
                "early_1": "16:00"
            }
      ]
      },
      "errcode": 0,
      "errmsg": ""
    }

返回字段说明(以下所有字段都会返回无值为null):

公共相关:

字段名 类型 说明
shift_id String 班次主键id
name String 班次名称
short_name String 班次简称
shift_color String 班次颜色
shift_rule_type Int 班次类型标识:1-工作日班次;2-休息日班次
convert_type Int 班次折算类型:0-按考勤组标准时长自动折算天;1-计该班次为1天;2-计该班次为0.5天(上午半天);3-计该班次为0.5天(下午半天)
day_start_tag Int 一天开始的标签:0-表示班次有效打卡时间开始为前一天开始计算;1-表示班次有效打卡时间开始为当天开始计算
is_elastic Boolean 是否开启弹性规则:1-开启;0-关闭
is_complex Boolean 是否为通用班次:1-通用班次;0-简单班次
is_temporary Boolean 是否临时班次:1-是;0-否
work_hours String 工作时长
errcode int 状态码,0表示成功
errmsg String 异常信息

通用班次相关:

字段名 类型 说明
character_type String 弹性类型:0-未设置,1-豁免,2-弹性(早来早走,晚来晚走),3-弹性(分时段晚来晚),4-晚走晚到;5-分时段晚走晚到;6-上够标准时长即可
overtime_hours String 加班时长
time_stages obj[] 班段集合信息

serial

Int 班段序号

is_overtime

Boolean 是否为加班时段

record_early

Boolean 是否记早退

record_late

Boolean 是否记迟到

remit_late

Int 迟到豁免分钟数

remit_early

Int 早退豁免分钟数

has_rest

Boolean 是否存在休息段

start_time

String 班段打卡开始时间

end_time

String 班段打卡结束时间

clock_in_valid_start_time

String 班段内上班有效打卡开始时间,受day_start_tag影响,当day_start_tag为0时,表示班段有效打卡时间开始为前一天开始计算,类推

clock_in_valid_end_time

String 班段内上班有效打卡结束时间

clock_out_valid_start_time

String 班段内下班有效打卡开始时间

clock_out_valid_end_time

String 班段内下班有效打卡结束时间

card_mod

Int 打卡选项:1-上班, 下班都需要打卡;2-仅需要上班打卡;3-仅需要下班打卡;4-上班或下班任一打卡;5-上下班无需打卡

rest_start_time

String 班段内休息开始时间

rest_end_time

String 班段内休息结束时间
late_rules obj 弹性规则:早来早走,晚来晚走

character_advance

Int 弹性晚到晚走早到早走-早到允许时长

character_postpone

Int 弹性晚到晚走早到早走-晚到允许时长
grant_late_rules obj 分时段晚来晚走

character_grade

Int 弹性分段晚到晚走-分段数

character_postpone

Int 弹性分段晚到晚走-段间隔分钟数

character_advance

Int 最多晚来晚走分钟数
late_leave_rules obj 晚走晚到规则

later_leave_overtimes

Int 弹性晚走晚到时间期满 分钟数

enable_ignore_absent

Boolean 是否开启晚走晚到当次日晚到允许点超过次日上班的整段时, 允许次日无需打卡的规则
late_stages_rules obj 分时段晚走晚到

leave_later_stages

obj[]

start

String 分时段晚走晚到-开始时间

end

String 分时段晚走晚到-结束时间

early_before

String 次日最晚上班时间

enable_ignore_absent

Boolean 是否开启晚走晚到当次日晚到允许点超过次日上班的整段时, 允许次日无需打卡的规则
elastic_satisfy_rules obj 上够标准时长即可规则

standard_hour

String 需上够标准时长

standard_elastic_st

String 弹性标准时长上班打卡起

standard_elastic_ed

String 弹性标准时长上班打卡止

by_half_hour

Boolean 是否按照半小时计算

简单班次相关:

字段名 类型 说明
start_1 String 上班时间1
end_1 String 下班时间1
advance_1 String 班段1上班有效打卡开始时间
late_1 String 班段1上班有效打卡结束时间
early_1 String 班段1下班有效打卡开始时间
postpone_1 String 班段1下班有效打卡结束时间
absenteeism_1 Int 旷工1分钟数
miss_type_1 Boolean 无效打卡计算类型:0缺卡,1-旷工
rest_start_dt String 休息开始时间
rest_end_dt String 休息结束时间
character_type Int 弹性类型:0-未设置,1-豁免,2-弹性(早来早走,晚来晚走),3-弹性(分时段晚来晚)
character_advance Int 弹性-允许提前下班分钟数
character_postpone Int 弹性-允许推迟上班分钟数

获取班次详情


使用场景:用于返回企业设置的班次详情。

请求方式:GET(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/shifts/{id}/?access_token=ACCESS_TOKEN

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
id String 班次id

权限说明

返回结果:

{
    "data": {
        "name": "郑州后厨",
        "short_name": "小早",
        "shift_color": "#DFF04D",
        "work_hours": "8.33",
        "shift_rule_type": 1,
        "convert_type": 1,
        "shift_id": "a20ecccbf7064ec69d7243b6162890ab",
        "overtime_hours": "0",
        "is_elastic": false,
        "day_start_tag": 1,
        "is_complex": 0,
        "is_temporary": 0,
        "time_stages": [
            {
                "is_overtime": false,
                "record_early": false,
                "record_late": false,
                "has_rest": false,
                "start_time": "06:00",
                "end_time": "08:20",
                "card_mod": 2,
                "rest_start_time": "",
                "rest_end_time": "",
                "remit_late": 0,
                "remit_early": 0,
                "clock_in_valid_start_time": "05:30",
                "clock_in_valid_end_time": "07:10",
                "clock_out_valid_start_time": "07:10",
                "clock_out_valid_end_time": "08:40",
                "serial": 1
            },
            {
                "is_overtime": false,
                "record_early": false,
                "record_late": false,
                "has_rest": false,
                "start_time": "09:00",
                "end_time": "12:30",
                "card_mod": 5,
                "rest_start_time": "",
                "rest_end_time": "",
                "remit_late": 0,
                "remit_early": 0,
                "clock_in_valid_start_time": "08:40",
                "clock_in_valid_end_time": "10:45",
                "clock_out_valid_start_time": "10:45",
                "clock_out_valid_end_time": "14:15",
                "serial": 2
            },
            {
                "is_overtime": false,
                "record_early": false,
                "record_late": false,
                "has_rest": false,
                "start_time": "16:00",
                "end_time": "18:30",
                "card_mod": 3,
                "rest_start_time": "",
                "rest_end_time": "",
                "remit_late": 0,
                "remit_early": 0,
                "clock_in_valid_start_time": "14:15",
                "clock_in_valid_end_time": "17:15",
                "clock_out_valid_start_time": "17:15",
                "clock_out_valid_end_time": "21:30",
                "serial": 3
            }
        ]
    },
     "errcode": 0,
     "errmsg": ""
}

返回字段说明(以下所有字段都会返回无值为null):

公共相关:

字段名 类型 说明
shift_id String 班次主键id
name String 班次名称
short_name String 班次简称
shift_color String 班次颜色
shift_rule_type Int 班次类型标识:1-工作日班次;2-休息日班次
convert_type Int 班次折算类型:0-按考勤组标准时长自动折算天;1-计该班次为1天;2-计该班次为0.5天(上午半天);3-计该班次为0.5天(下午半天)
day_start_tag Int 一天开始的标签:0-表示班次有效打卡时间开始为前一天开始计算;1-表示班次有效打卡时间开始为当天开始计算
is_elastic Boolean 是否开启弹性规则:1-开启;0-关闭
is_complex Boolean 是否为通用班次:1-通用班次;0-简单班次
is_temporary Boolean 是否临时班次:1-是;0-否
work_hours String 工作时长
errcode int 状态码,0表示成功
errmsg String 异常信息

通用班次相关:

字段名 类型 说明
character_type String 弹性类型:0-未设置,1-豁免,2-弹性(早来早走,晚来晚走),3-弹性(分时段晚来晚),4-晚走晚到;5-分时段晚走晚到;6-上够标准时长即可
overtime_hours String 加班时长
time_stages obj[] 班段集合信息

serial

Int 班段序号

is_overtime

Boolean 是否为加班时段

record_early

Boolean 是否记早退

record_late

Boolean 是否记迟到

remit_late

Int 迟到豁免分钟数

remit_early

Int 早退豁免分钟数

has_rest

Boolean 是否存在休息段

start_time

String 班段打卡开始时间

end_time

String 班段打卡结束时间

clock_in_valid_start_time

String 班段内上班有效打卡开始时间,受day_start_tag影响,当day_start_tag为0时,表示班段有效打卡时间开始为前一天开始计算,类推

clock_in_valid_end_time

String 班段内上班有效打卡结束时间

clock_out_valid_start_time

String 班段内下班有效打卡开始时间

clock_out_valid_end_time

String 班段内下班有效打卡结束时间

card_mod

Int 打卡选项:1-上班, 下班都需要打卡;2-仅需要上班打卡;3-仅需要下班打卡;4-上班或下班任一打卡;5-上下班无需打卡

rest_start_time

String 班段内休息开始时间

rest_end_time

String 班段内休息结束时间
late_rules obj 弹性规则:早来早走,晚来晚走

character_advance

Int 弹性晚到晚走早到早走-早到允许时长

character_postpone

Int 弹性晚到晚走早到早走-晚到允许时长
grant_late_rules obj 分时段晚来晚走

character_grade

Int 弹性分段晚到晚走-分段数

character_postpone

Int 弹性分段晚到晚走-段间隔分钟数

character_advance

Int 最多晚来晚走分钟数
late_leave_rules obj 晚走晚到规则

later_leave_overtimes

Int 弹性晚走晚到时间期满 分钟数

enable_ignore_absent

Boolean 是否开启晚走晚到当次日晚到允许点超过次日上班的整段时, 允许次日无需打卡的规则
late_stages_rules obj 分时段晚走晚到

leave_later_stages

obj[]

start

String 分时段晚走晚到-开始时间

end

String 分时段晚走晚到-结束时间

early_before

String 次日最晚上班时间

enable_ignore_absent

Boolean 是否开启晚走晚到当次日晚到允许点超过次日上班的整段时, 允许次日无需打卡的规则
elastic_satisfy_rules obj 上够标准时长即可规则

standard_hour

String 需上够标准时长

standard_elastic_st

String 弹性标准时长上班打卡起

standard_elastic_ed

String 弹性标准时长上班打卡止

by_half_hour

Boolean 是否按照半小时计算

简单班次相关:

字段名 类型 说明
start_1 String 上班时间1
end_1 String 下班时间1
advance_1 String 班段1上班有效打卡开始时间
late_1 String 班段1上班有效打卡结束时间
early_1 String 班段1下班有效打卡开始时间
postpone_1 String 班段1下班有效打卡结束时间
absenteeism_1 Int 旷工1分钟数
miss_type_1 Boolean 无效打卡计算类型:0缺卡,1-旷工
rest_start_dt String 休息开始时间
rest_end_dt String 休息结束时间
character_type Int 弹性类型:0-未设置,1-豁免,2-弹性(早来早走,晚来晚走),3-弹性(分时段晚来晚)
character_advance Int 弹性-允许提前下班分钟数
character_postpone Int 弹性-允许推迟上班分钟数

获取员工班次信息


使用场景:用于返回员工的班次信息,一次最多50条。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/shifts/emp/info/?access_token=ACCESS_TOKEN

请求包结构体为:

{
    "emp_ids": [
        "0d928d2cad7******b1f1ffe058e71", "fb098d2cad7******b1f1ffe058e71"
    ],
    "start_date": "2025-03-05",
    "end_date": "2025-03-05"
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
emp_ids List 员工id 列表, 一次最多50条
emp_oa_codes List 员工OA编码 列表, 一次最多50条
start_date String 查询开始日期
end_date String 查询结束日期

权限说明

返回结果:

{
    "data": [
        {
            "emp_id": "00f2d27f4efb4be3bda37f55f4003ce7",
            "shift_data": [
                {
                    "access_date": "2025-03-01",
                    "name": "门店早班更新",
                    "short_name": "早班",
                    "shift_color": "#5255F7",
                    "work_hours": "7.50",
                    "shift_rule_type": 1,
                    "convert_type": 0,
                    "shift_id": "d0c0890553e04137a6428df65643bfc1",
                    "overtime_hours": "0",
                    "is_elastic": false,
                    "day_start_tag": 1,
                    "is_complex": 0,
                    "is_temporary": 0,
                    "time_stages": [
                        {
                            "is_overtime": false,
                            "record_early": false,
                            "record_late": false,
                            "has_rest": false,
                            "start_time": "06:30",
                            "end_time": "14:00",
                            "card_mod": 1,
                            "rest_start_time": "",
                            "rest_end_time": "",
                            "remit_late": 0,
                            "remit_early": 0,
                            "clock_in_valid_start_time": "04:00",
                            "clock_in_valid_end_time": "10:00",
                            "clock_out_valid_start_time": "09:01",
                            "clock_out_valid_end_time": "21:00",
                            "serial": 1
                        }
                    ]
                },
                {
                    "access_date": "2025-03-02",
                    "name": "门店早班更新",
                    "short_name": "早班",
                    "shift_color": "#5255F7",
                    "work_hours": "7.50",
                    "shift_rule_type": 1, 
                    "is_complex": 0,
                    "is_temporary": 0,
                    "convert_type": 0,
                    "shift_id": "d0c0890553e04137a6428df65643bfc1",
                    "overtime_hours": "0",
                    "is_elastic": false,
                    "day_start_tag": 1,
                    "time_stages": [
                        {
                            "is_overtime": false,
                            "record_early": false,
                            "record_late": false,
                            "has_rest": false,
                            "start_time": "06:30",
                            "end_time": "14:00",
                            "card_mod": 1,
                            "rest_start_time": "",
                            "rest_end_time": "",
                            "remit_late": 0,
                            "remit_early": 0,
                            "clock_in_valid_start_time": "04:00",
                            "clock_in_valid_end_time": "10:00",
                            "clock_out_valid_start_time": "09:01",
                            "clock_out_valid_end_time": "21:00",
                            "serial": 1
                        }
                    ]
                }
            ]
        },
       {
            "emp_id": "0d928d2cad7142e49bcb1f1ffe058e71",
            "shift_data": [
                {
                    "date": "2023-03-05",
                    "shift_name": "",
                    "err_msg": "员工不在月考勤表或员工不考勤",
                    "shift_id": null
                }
            ]
        }
    ],
      "errcode": 0,
      "errmsg": ""
}

返回字段说明(以下所有字段都会返回无值为null):

公共相关:

字段名 类型 说明
emp_id String 员工id
shift_id String 班次主键id
name String 班次名称
short_name String 班次简称
shift_color String 班次颜色
shift_rule_type Int 班次类型标识:1-工作日班次;2-休息日班次
convert_type Int 班次折算类型:0-按考勤组标准时长自动折算天;1-计该班次为1天;2-计该班次为0.5天(上午半天);3-计该班次为0.5天(下午半天)
day_start_tag Int 一天开始的标签:0-表示班次有效打卡时间开始为前一天开始计算;1-表示班次有效打卡时间开始为当天开始计算
is_elastic Boolean 是否开启弹性规则:1-开启;0-关闭
is_complex Boolean 是否为通用班次:1-通用班次;0-简单班次
is_temporary Boolean 是否临时班次:1-是;0-否
work_hours String 工作时长
errcode int 状态码,0表示成功
errmsg String 异常信息

通用班次相关:

字段名 类型 说明
character_type String 弹性类型:0-未设置,1-豁免,2-弹性(早来早走,晚来晚走),3-弹性(分时段晚来晚),4-晚走晚到;5-分时段晚走晚到;6-上够标准时长即可
overtime_hours String 加班时长
time_stages obj[] 班段集合信息

serial

Int 班段序号

is_overtime

Boolean 是否为加班时段

record_early

Boolean 是否记早退

record_late

Boolean 是否记迟到

remit_late

Int 迟到豁免分钟数

remit_early

Int 早退豁免分钟数

has_rest

Boolean 是否存在休息段

start_time

String 班段打卡开始时间

end_time

String 班段打卡结束时间

clock_in_valid_start_time

String 班段内上班有效打卡开始时间,受day_start_tag影响,当day_start_tag为0时,表示班段有效打卡时间开始为前一天开始计算,类推

clock_in_valid_end_time

String 班段内上班有效打卡结束时间

clock_out_valid_start_time

String 班段内下班有效打卡开始时间

clock_out_valid_end_time

String 班段内下班有效打卡结束时间

card_mod

Int 打卡选项:1-上班, 下班都需要打卡;2-仅需要上班打卡;3-仅需要下班打卡;4-上班或下班任一打卡;5-上下班无需打卡

rest_start_time

String 班段内休息开始时间

rest_end_time

String 班段内休息结束时间
late_rules obj 弹性规则:早来早走,晚来晚走

character_advance

Int 弹性晚到晚走早到早走-早到允许时长

character_postpone

Int 弹性晚到晚走早到早走-晚到允许时长
grant_late_rules obj 分时段晚来晚走

character_grade

Int 弹性分段晚到晚走-分段数

character_postpone

Int 弹性分段晚到晚走-段间隔分钟数

character_advance

Int 最多晚来晚走分钟数
late_leave_rules obj 晚走晚到规则

later_leave_overtimes

Int 弹性晚走晚到时间期满 分钟数

enable_ignore_absent

Boolean 是否开启晚走晚到当次日晚到允许点超过次日上班的整段时, 允许次日无需打卡的规则
late_stages_rules obj 分时段晚走晚到

leave_later_stages

obj[]

start

String 分时段晚走晚到-开始时间

end

String 分时段晚走晚到-结束时间

early_before

String 次日最晚上班时间

enable_ignore_absent

Boolean 是否开启晚走晚到当次日晚到允许点超过次日上班的整段时, 允许次日无需打卡的规则
elastic_satisfy_rules obj 上够标准时长即可规则

standard_hour

String 需上够标准时长

standard_elastic_st

String 弹性标准时长上班打卡起

standard_elastic_ed

String 弹性标准时长上班打卡止

by_half_hour

Boolean 是否按照半小时计算

简单班次相关:

字段名 类型 说明
start_1 String 上班时间1
end_1 String 下班时间1
advance_1 String 班段1上班有效打卡开始时间
late_1 String 班段1上班有效打卡结束时间
early_1 String 班段1下班有效打卡开始时间
postpone_1 String 班段1下班有效打卡结束时间
absenteeism_1 Int 旷工1分钟数
miss_type_1 Boolean 无效打卡计算类型:0缺卡,1-旷工
rest_start_dt String 休息开始时间
rest_end_dt String 休息结束时间
character_type Int 弹性类型:0-未设置,1-豁免,2-弹性(早来早走,晚来晚走),3-弹性(分时段晚来晚)
character_advance Int 弹性-允许提前下班分钟数
character_postpone Int 弹性-允许推迟上班分钟数

考勤核算数据

获取员工每日实际出勤工时


使用场景:该接口返回指定日期的打卡时间和出勤工时。

请求方式: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不能同时为空,且只支持两个参数只能传一个

权限说明

返回结果:

{
  "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

获取员工月缺卡明细


使用场景:该接口返回员工的月缺卡明细数据。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/miss_card/?access_token=ACCESS_TOKEN

请求包结构体为:

{
    "year": 2025,
    "month": 8,
    "emp_ids": ["b05d5e2e199e4bae8f6c67a02afbff62"],
    "emp_oa_codes": ["10004838"]
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
year int 查询的年份
month int 查询的月份
access_date String 查询当前考勤月的某天,支持格式:%Y-%M-%D, %Y/%M/%D
emp_ids List 员工id 列表, 一次最多50条
emp_oa_codes List 员工OA编码 列表, 一次最多50条

权限说明

返回结果:

{
    "data": [
        {
            "emp_id": "57f322ef1a124448b2219f64fb253330",
            "details": [
                {
                    "date": "2025-08-19",
                    "records": [
                        {
                            "on_off": "off",
                            "id": "bfd5b076664f49278a92d4c93bba0331",
                            "shift_dt": "2025-08-19 18:30"
                        }
                    ],
                    "weekday": 2
                },
                {
                    "date": "2025-08-29",
                    "records": [
                        {
                            "on_off": "on",
                            "id": "dfb2f1b9637c4a6d85d5690464dbdff3",
                            "shift_dt": "2025-08-29 10:00"
                        }
                    ],
                    "weekday": 5
                }
            ]
        }
    ],
    "errcode": 0,
    "errmsg": ""
}

参数说明:

参数 说明
emp_id 员工ID
details 缺卡明细

date

日期

weekday

星期

records

缺卡日明细记录

└id

打卡记录ID

└on_off

上班/下班:on表示上线;off表示下班

└shift_dt

上班/下班的班次时间

获取员工月度考勤结果数据


使用场景:返回员工月度考勤结果,最多一次返回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条

权限说明

返回结果:

{
    "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,
            "weekday_overtime_hours": 0, 
            "weekend_overtime_hours": 0,
            "holiday_overtime_hours": 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 请假总时长
weekday_overtime_hours Float 工作日加班(小时)
weekend_overtime_hours Float 休息日加班(小时)
holiday_overtime_hours 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 外勤合计(小时)

计算外出/出差时长


使用场景:该接口根据员工所在考勤组的外出/出差规则核算指定时间段内可记工时长,并返回系统修正后的实际起止时间,可用于第三方系统在发起外出/出差审批前进行前置校验和自动填写时长。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/outing_hours_length/?access_token=ACCESS_TOKEN

请求包结构体为:

{
    "emp_id": "686460*****44f2987db8*****079b89",
    "start_dt": "2025-11-06",
    "end_dt": "2025-11-06",
    "outing_attendance_type": 1,
    "start_m": "am",
    "end_m": "pm"
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
emp_id String 需要核算的员工ID
start_dt String 申请开始日期,支持YYYY-MM-DDYYYY/MM/DDYYYY-MM-DD HH:MMYYYY/MM/DD HH:MM,不可晚于end_dt
end_dt String 申请结束日期,支持YYYY-MM-DDYYYY/MM/DDYYYY-MM-DD HH:MMYYYY/MM/DD HH:MM
outing_attendance_type Int 外勤类型:1-外出、2-出差,对应考勤系统中的外勤/出差配置
start_m String 当外出出差规则中设置的为按半天申请时,该参数必填,取值am/pm,am为上午,pm为下午
end_m String 当外出出差规则中设置的为按半天申请时,该参数必填,取值am/pm,am为上午,pm为下午

权限说明:

返回结果:

{
    "data": {
        "daily_time": 8.0,
        "days": 1.0,
        "hours": 8.0,
        "start_dt": "2025-11-06T09:00:00",
        "end_dt": "2025-11-06T18:30:00",
        "length_is_disable": 0
    },
    "errcode": 0,
    "errmsg": "",
    "queries": {}
}

返回字段说明:

字段名 类型 说明
hours String 根据企业规则计算出的外出/出差时长(小时)
days String hours ÷ daily_time 折算出的天数
daily_time String 员工考勤组设置的标准工作时长(小时)
start_dt String 结合班次、半天设置后系统确认的实际开始时间
end_dt String 结合班次、半天设置后系统确认的实际结束时间
length_is_disable Int 是否允许前端修改时长:1-禁止修改、0-允许修改

计算请假时长


使用场景:用于在审批或集成系统中实时核算员工某一请假类型在指定时间段内的实际可扣减时长、天数及跨月分钟数,确保与考勤核算口径一致。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/calc_leave_length/?access_token=ACCESS_TOKEN

请求包结构体为:

{
    "emp_id": "686460*****44f2987db8*****079b89",
    "vacation_type_value": 6,
    "start_dt": "2025-11-28 06:00",
    "end_dt": "2025-12-01 19:00",
    "start_m": "am",
    "end_m": "pm"
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
emp_id String 需要核算的员工ID
vacation_type_value Int 请假类型值,需与考勤假期方案中的 type_value 保持一致(例如:1-事假、2-病假、3-婚假、4-丧假、5-年假、6-调休假、7-产假、8-陪产假、9-路途假、10-探亲假、11-看护假、12-非出勤假、13-产检假、14-哺乳假、50+为自定义假期等)
start_dt String 申请开始时间,支持YYYY-MM-DDYYYY/MM/DDYYYY-MM-DD HH:MMYYYY/MM/DD HH:MM,不可晚于end_dt
end_dt String 申请结束时间,支持与 start_dt 相同的格式
start_m String 当请假规则中设置的为按半天申请时,该参数必填,取值am/pm,am为上午,pm为下午
end_m String 当请假规则中设置的为按半天申请时,该参数必填,取值am/pm,am为上午,pm为下午

权限说明:需开通“考勤假期管理”,并保证 access_token 对应企业已启用请假核算功能。

返回结果:

{
    "data": {
        "daily_time": 8.0,
        "month_leave_hours": {
            "2025:11": [
                480.0
            ],
            "2025:12": [
                480.0
            ]
        },
        "err_msg": "",
        "days": 2.0,
        "hours": 16.0,
        "disable_modify_length": false,
        "start_dt": "2025-11-28T06:00:00",
        "end_dt": "2025-12-01T19:00:00"
    },
    "errcode": 0,
    "errmsg": ""
}

返回字段说明:

字段名 类型 说明
hours String 根据企业假期规则计算的请假时长(小时,保留两位小数)
days String hours ÷ daily_time 折算出的天数
month_leave_hours Object 跨月分钟分布,key 为 YYYY:MM,value 为该月内请假的分钟数数组
daily_time String 员工考勤组设置的标准工作时长(小时)
start_dt String 用户提交的请假开始时间
end_dt String 用户提交的请假结束时间
err_msg String 计算失败时的提示信息,成功时为空字符串
disable_modify_length Boolean 是否允许手工调整请假时长:true-禁止修改、false-允许修改

计算加班时长


使用场景:根据员工所在考勤组的加班规则(最小加班单位、加班类型限制等)核算指定起止时间内可计入的加班时长,常用于审批或集成系统发起前的自动校验或自动填写。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/calc_ot_hours/?access_token=ACCESS_TOKEN

请求包结构体为:

{
    "emp_id": "686460*****44f2987db8*****p79b89",
    "start_dt": "2025/11/08 00:00",
    "end_dt": "2025/11/08 19:00"
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
emp_id String 需要核算加班时长的员工ID
start_dt String 加班开始时间,支持,支持YYYY-MM-DDYYYY/MM/DDYYYY-MM-DD HH:MMYYYY/MM/DD HH:MM,不可晚于end_dt
end_dt String 加班结束时间,支持与 start_dt 相同的格式,必须晚于 start_dt

权限说明:

返回结果:

{
    "data": {
        "ot_hours": 19.0
    },
    "errcode": 0,
    "errmsg": ""
}

返回字段说明:

字段名 类型 说明
ot_hours String 根据企业加班规则核算后的加班时长(小时,保留两位小数)

考勤统计概况

查询部门每日考勤概况数据


使用场景:返回指定部门(或全公司)的每日员工考勤概况数据

请求方式: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值}&type={类型}

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值}&type={类型}" --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 是否忽略部门,如果忽略则意味着查询全公司考勤数据
type int 获取类型

返回结果:

{
    "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 正常考勤的人数
late Int 迟到的人数
early Int 早退的人数
absent Int 缺卡的人数
absenteeism Int 旷工的人数
leave Int 请假的人数
overtime Int 加班的人数
outing_work Int 外勤的人数
business_trip Int 出差的人数
outing_hours Int 外出的人数
not_scheduler 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 是否忽略部门,如果忽略则意味着查询全公司考勤数据

注意:

权限说明:-

返回结果:

{
    "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 外出的人数

假期统计概况

获取员工假期余额

使用场景:用于返回员工的假期余额数据,一次最多获取100个员工的数据。

请求方式:POST(HTTPS)

请求地址:https://openapi.2haohr.com/api/attendance/vacation_overview/?access_token=ACCESS_TOKEN

请求包结构体为:

{
    "emp_ids": ["686460*****44f2987db8*****079b89", "ca0274*****b4145b4a*****6f176b3b"], 
    "emp_oa_codes": [], 
    "year": 2020, 
    "month": 4, 
    "type": 1
}

参数说明:

参数 类型 是否必须 说明
access_token String 调用接口凭证
emp_ids List 员工id 列表, 一次最多100条
emp_oa_codes List 员工OA编码 列表, 一次最多100条
year Int
month Int
type Int 假期类型,根据枚举类型查询
type_name String 假期类型,根据假期类型名称查询

返回结果:

{
    "data": 
      [
        {
          "emp_id": "686460*****44f2987db8*****079b89",
          "delivered_total": 22.5,
          "deduction_total": 15.0,
          "remaining": 7.5
        },
        {
          "emp_id": "ca0274*****b4145b4a*****6f176b3b",
          "delivered_total": 12.0,
          "deduction_total": 2.5,
          "remaining": 10.0
        }
      ],
    "errcode": 0,
    "errmsg": ""
}

返回字段说明(以下所有字段都会返回无值为null):

字段名 类型 说明
errcode Int 返回码。
错误码:
19001: 请开通考勤管理
19002: 请启用请假记录
19003: 假期类型未启用
19004: 假期未开启余额
19005: 假期类型不存在
19006: 一次提交的有效员工数超过100条
500: 内部服务错误
400: 参数错误
errmsg String 对返回码的文本描述内容
emp_id String 员工ID
delivered_total Float 累计发放假期总时长,单位默认为小时
deduction_total Float 累计扣减假期总时长,单位默认为小时
remaining Float 剩余假期余额,单位默认为小时