搜索异动信息
搜索异动信息,该接口会按照应用拥有的「员工数据」的权限范围返回数据,请确定在「开发者后台 - 权限管理 - 数据权限」中有申请「员工资源」权限范围
请求
| 项目 | 值 |
|---|---|
| HTTP URL | https://open.feishu.cn/open-apis/corehr/v2/job_changes/search |
| HTTP Method | POST |
| 接口频率限制 | 100 次/分钟 |
| 支持的应用类型 | custom,isv |
| 权限要求 调用该 API 所需的权限。开启其中任意一项权限即可调用 开启任一权限即可 | corehr:job_change:read 获取员工异动信息 corehr:job_change:write 读写员工异动信息 |
| 字段权限要求 | > Tip: 该接口返回体中存在下列敏感字段,仅当开启对应的权限后才会返回;如果无需获取这些字段,则不建议申请 corehr:contract.company:read 获取合同主体信息 corehr:contract.period:read 获取合同期限信息 corehr:employment.job:read 获取员工的职务信息 corehr:employment.job_level:read 获取职务级别信息 corehr:job_change.custom_field:read 获取员工异动自定义字段信息 corehr:job_change.employment_custom_field:read 获取异动工作信息自定义字段 corehr:job_change.pathway:read 读取异动信息中的通道字段信息 corehr:job_change.pathway:write 读写异动信息中的通道字段信息 corehr:job_change.remark:read 获取异动流程备注信息 corehr:employment.job_level:write 读写员工的职务级别信息 corehr:contract.period:write 读写合同期限信息 corehr:contract.company:write 读写合同主体信息 corehr:job_change.is_adjust_salary:read 获取异动单据是否调薪字段 corehr:employment.job_grade:read 获取职等信息 corehr:employment.job_grade:write 读写职等信息 contact:user.employee_id:readonly 获取用户 user ID corehr:job_change.social_security_city:read 获取异动单据社保字段 corehr:job_data.compensation_type:read 获取薪资类型 corehr:job_data.service_company:read 获取任职公司 |
请求头
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| Authorization | string | 是 | tenant_access_token 值格式:"Bearer access_token" 示例值:"Bearer t-7f1bcd13fc57d46bac21793a18e560" 了解更多:如何选择与获取 access token |
| Content-Type | string | 是 | 固定值:"application/json; charset=utf-8" |
查询参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
page_size | int | 是 | 分页大小,最大 100 示例值:100 数据校验规则: - 取值范围: 1 ~ 100 |
page_token | string | 否 | 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果 示例值:6891251722631890445 |
user_id_type | string | 否 | 用户 ID 类型 示例值:open_id 可选值有: - open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。了解更多:如何获取 Open ID - union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的,在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID,应用开发商可以把同个用户在多个应用中的身份关联起来。了解更多:如何获取 Union ID? - user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内,一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。了解更多:如何获取 User ID? - people_corehr_id: 以飞书人事的 ID 来识别用户默认值: open_id当值为 user_id,字段权限要求: contact:user.employee_id:readonly 获取用户 user ID |
department_id_type | string | 否 | 此次调用中使用的部门 ID 类型 示例值:open_department_id 可选值有: - open_department_id: 以 open_department_id 来标识部门 - department_id: 以 department_id 来标识部门 - people_corehr_department_id: 以 people_corehr_department_id 来标识部门默认值: open_department_id |
请求体
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
employment_ids | string\[\] | 否 | 雇员 ID 列表,可通过【搜索员工信息】接口获取 示例值:["ou_a294793e8fa21529f2a60e3e9de45520"] 数据校验规则: - 最大长度: 30 |
job_change_ids | string\[\] | 否 | 异动记录 ID 列表,可通过接口 搜索异动信息 获取详细信息 示例值:["7044427347159746085"] 数据校验规则: - 最大长度: 10 |
statuses | string\[\] | 否 | 异动状态,多个状态之间为「或」的关系 示例值:["Approving"] 可选值有: - Approving: Approving 审批中 - Approved: Approved 审批通过 - Transformed: Transformed 已异动 - Rejected: Rejected 已拒绝 - Cancelled: Cancelled 已撤销 - NoNeedApproval: NoNeedApproval 无需审批数据校验规则: - 最大长度: 10 |
effective_date_start | string | 否 | 异动生效日期 - 搜索范围开始,需要与effective_date_end(异动生效日期 - 搜索范围结束)一同使用,格式:"YYYY-MM-DD" 示例值:"2022-01-01" |
effective_date_end | string | 否 | 异动生效日期 - 搜索范围结束,需要与effective_date_start(异动生效日期 - 搜索范围开始)一同使用,格式:"YYYY-MM-DD" 示例值:"2022-01-01" |
updated_time_start | string | 否 | 异动更新时间 - 搜索范围开始,需要与updated_time_end(异动更新时间 - 搜索范围结束)一同使用,毫秒时间戳 示例值:"1704084635000" |
updated_time_end | string | 否 | 异动更新时间 - 搜索范围结束,需要与updated_time_start(异动更新时间 - 搜索范围结束)一同使用,毫秒时间戳 示例值:"1704084635000" |
target_department_ids | string\[\] | 否 | 新部门 ID 列表 示例值:["7269981744640312876"] 数据校验规则: - 最大长度: 30 |
transfer_type_unique_identifier | string\[\] | 否 | 异动类型,可通过接口 获取异动类型列表 获取 示例值:["assignment_start_reason_option5"] 数据校验规则: - 最大长度: 30 |
transfer_reason_unique_identifier | string\[\] | 否 | 异动原因,可通过接口 获取异动原因列表 获取详细信息 示例值:["reason_for_job_change_option_7182520625066475540_7382109467556446228"] 数据校验规则: - 最大长度: 30 |
exception_statuses | string\[\] | 否 | 异常处理状态,多个状态之间为「或」的关系 示例值:["pending"] 可选值有: - pending: pending 未处理 - processed: processed 已处理数据校验规则: - 最大长度: 10 |
请求体示例
json
{
"employment_ids": [
"ou_a294793e8fa21529f2a60e3e9de45520"
],
"job_change_ids": [
"7044427347159746085"
],
"statuses": [
"Approving"
],
"effective_date_start": "2022-01-01",
"effective_date_end": "2022-01-01",
"updated_time_start": "1704084635000",
"updated_time_end": "1704084635000",
"target_department_ids": [
"7269981744640312876"
],
"transfer_type_unique_identifier": [
"assignment_start_reason_option5"
],
"transfer_reason_unique_identifier": [
"reason_for_job_change_option_7182520625066475540_7382109467556446228"
],
"exception_statuses": [
"pending"
]
}响应
响应体
| 名称 | 类型 | 描述 |
|---|---|---|
code | int | 错误码,非 0 表示失败 |
msg | string | 错误描述 |
data | \- | - |
└ items | job_change\[\] | 员工异动列表 |
└ job_change_id | string | 异动记录 id,可通过接口 搜索异动信息 获取详细信息 |
└ employment_id | string | 雇员 id,可通过【搜索员工信息】接口获取 |
└ status | string | 异动状态 可选值有: - Approving: 审批中 - Approved: 审批通过 - Transformed: 已异动 - Rejected: 已拒绝 - Cancelled: 已撤销 - NoNeedApproval: 无需审批 |
└ transfer_type_unique_identifier | string | 异动类型,可通过接口 获取异动类型列表 获取 |
└ transfer_reason_unique_identifier | string | 异动原因,可通过接口 获取异动原因列表 获取详细信息 |
└ process_id | string | 异动流程 id,可通过【流程-获取单个流程详情】接口获取 |
└ effective_date | string | 生效时间,格式:"YYYY-MM-DD" |
└ created_time | string | 创建时间,毫秒级时间戳 |
└ updated_time | string | 更新时间,毫秒级时间戳 |
└ transfer_info | transfer_info | 异动详细信息 |
└ remark | string | 备注 字段权限要求: corehr:job_change.remark:read 获取异动流程备注信息 |
└ offer_info | string | offer信息 |
└ target_dotted_manager_clean | boolean | 是否撤销虚线上级 |
└ probation_exist | boolean | 是否有试用期 |
└ original_department | string | 原部门,可通过【批量查询部门】接口获取 |
└ target_department | string | 新部门,可通过【批量查询部门】接口获取 |
└ original_work_location | string | 原工作地点,可通过【批量查询地点】接口获取 |
└ target_work_location | string | 新工作地点,可通过【批量查询地点】接口获取 |
└ original_direct_manager | string | 原直属上级,可通过【搜索员工信息】接口获取 |
└ target_direct_manager | string | 新直属上级,可通过【搜索员工信息】接口获取 |
└ original_dotted_manager | string | 原虚线上级,可通过【搜索员工信息】接口获取 |
└ target_dotted_manager | string | 新虚线上级,可通过【搜索员工信息】接口获取 |
└ original_job | string | 原职务, 可通过【批量查询职务】接口获取 字段权限要求(满足任一): corehr:employment.job:read 获取员工的职务信息 corehr:employment.job_level:read 获取职务级别信息 corehr:employment.job_level:write 读写员工的职务级别信息 |
└ target_job | string | 新职务, 可通过【批量查询职务】接口获取 字段权限要求(满足任一): corehr:employment.job:read 获取员工的职务信息 corehr:employment.job_level:read 获取职务级别信息 corehr:employment.job_level:write 读写员工的职务级别信息 |
└ original_job_family | string | 原序列,可通过【批量查询序列】接口获取 |
└ target_job_family | string | 新序列,可通过【批量查询序列】接口获取 |
└ original_job_level | string | 原职级, 可通过【批量查询职级】接口获取 字段权限要求(满足任一): corehr:employment.job_level:read 获取职务级别信息 corehr:employment.job_level:write 读写员工的职务级别信息 |
└ target_job_level | string | 新级别, 可通过【批量查询职级】接口获取 字段权限要求(满足任一): corehr:employment.job_level:read 获取职务级别信息 corehr:employment.job_level:write 读写员工的职务级别信息 |
└ original_workforce_type | string | 原人员类型,可通过【批量查询人员类型】接口获取 |
└ target_workforce_type | string | 新人员类型,可通过【批量查询人员类型】接口获取 |
└ original_employee_subtype | string | 原人员子类型 |
└ target_employee_subtype | string | 新人员子类型 |
└ original_company | string | 原公司,详细信息可通过【批量查询公司】接口查询获得 字段权限要求(满足任一): corehr:contract.company:read 获取合同主体信息 corehr:contract.company:write 读写合同主体信息 |
└ target_company | string | 新公司,详细信息可通过【批量查询公司】接口查询获得 字段权限要求(满足任一): corehr:contract.company:read 获取合同主体信息 corehr:contract.company:write 读写合同主体信息 |
└ original_contract_number | string | 原合同编号,可通过【批量查询合同】接口获取详细信息 |
└ target_contract_number | string | 新合同编号,可通过【批量查询合同】接口获取详细信息 |
└ original_contract_type | string | 原合同类型,可通过【批量查询合同】接口获取详细信息 |
└ target_contract_type | string | 新合同类型,可通过【批量查询合同】接口获取详细信息 |
└ original_duration_type | string | 原期限类型,可通过【批量查询合同】接口获取详细信息 |
└ target_duration_type | string | 新期限类型,可通过【批量查询合同】接口获取详细信息 |
└ original_signing_type | string | 原签订类型,可通过【批量查询合同】接口获取详细信息 |
└ target_signing_type | string | 新签订类型,可通过【批量查询合同】接口获取详细信息 |
└ original_contract_start_date | string | 原合同开始日期,格式:"YYYY-MM-DD" 字段权限要求(满足任一): corehr:contract.period:read 获取合同期限信息 corehr:contract.period:write 读写合同期限信息 |
└ target_contract_start_date | string | 新合同开始日期,格式:"YYYY-MM-DD" 字段权限要求(满足任一): corehr:contract.period:read 获取合同期限信息 corehr:contract.period:write 读写合同期限信息 |
└ original_contract_end_date | string | 原合同结束日期,格式:"YYYY-MM-DD" 字段权限要求(满足任一): corehr:contract.period:read 获取合同期限信息 corehr:contract.period:write 读写合同期限信息 |
└ target_contract_end_date | string | 新合同结束日期,格式:"YYYY-MM-DD" 字段权限要求(满足任一): corehr:contract.period:read 获取合同期限信息 corehr:contract.period:write 读写合同期限信息 |
└ original_working_hours_type | string | 原工时制度可通过【批量查询工时制度】接口获取 |
└ target_working_hours_type | string | 新工时制度,可通过【批量查询工时制度】接口获取 |
└ original_working_calendar | string | 原工作日历,开通休假服务后联系管理员获取。 |
└ target_working_calendar | string | 新工作日历,开通休假服务后联系管理员获取。 |
└ original_probation_end_date | string | 原试用期预计结束日期,格式:"YYYY-MM-DD" |
└ target_probation_end_date | string | 新试用期预计结束日期,格式:"YYYY-MM-DD" |
└ original_weekly_working_hours | string | 原周工作时长 |
└ target_weekly_working_hours | string | 新周工作时长 |
└ original_work_shift | string | 原排班 |
└ target_work_shift | string | 新排班 |
└ original_cost_center_rate | job_data_cost_center\[\] | 原成本中心分摊方式 |
└ cost_center_id | string | 成本中心 ID,详细信息可通过【搜索成本中心信息】接口查询获得 |
└ rate | int | 分摊比例(整数) |
└ target_cost_center_rate | job_data_cost_center\[\] | 新成本中心分摊方式 |
└ cost_center_id | string | 成本中心 ID,详细信息可通过【搜索成本中心信息】接口查询获得 |
└ rate | int | 分摊比例(整数) |
└ original_employment_change | tranfer_employment_info | 原工作信息 |
└ regular_employee_start_date | string | 转正式员工日期,格式:"YYYY-MM-DD" |
└ seniority_date | string | 司龄起算日期,格式:"YYYY-MM-DD" |
└ employee_number | string | 员工编号,可通过【搜索员工信息】接口获取 |
└ custom_fields | custom_field_data\[\] | 自定义字段 字段权限要求: corehr:job_change.employment_custom_field:read 获取异动工作信息自定义字段 |
└ custom_api_name | string | 自定义字段 apiname,即自定义字段的唯一标识 |
└ name | custom_name | 自定义字段名称 |
└ zh_cn | string | 中文 |
└ en_us | string | 英文 |
└ type | int | 自定义字段类型 |
└ value | string | 字段值,是 json 转义后的字符串,根据元数据定义不同,字段格式不同(如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05") |
└ target_employment_change | tranfer_employment_info | 新工作信息 |
└ regular_employee_start_date | string | 转正式员工日期,格式:"YYYY-MM-DD" |
└ seniority_date | string | 司龄起算日期,格式:"YYYY-MM-DD" |
└ employee_number | string | 员工编号 |
└ custom_fields | custom_field_data\[\] | 自定义字段 字段权限要求: corehr:job_change.employment_custom_field:read 获取异动工作信息自定义字段 |
└ custom_api_name | string | 自定义字段 apiname,即自定义字段的唯一标识 |
└ name | custom_name | 自定义字段名称 |
└ zh_cn | string | 中文 |
└ en_us | string | 英文 |
└ type | int | 自定义字段类型 |
└ value | string | 字段值,是 json 转义后的字符串,根据元数据定义不同,字段格式不同(如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05") |
└ original_job_grade | string | 原职等,可通过【查询职等】接口获取 字段权限要求(满足任一): corehr:employment.job_grade:read 获取职等信息 corehr:employment.job_grade:write 读写职等信息 |
└ target_job_grade | string | 新职等,可通过【查询职等】接口获取 字段权限要求(满足任一): corehr:employment.job_grade:read 获取职等信息 corehr:employment.job_grade:write 读写职等信息 |
└ original_compensation_type | string | 原薪资类型 字段权限要求: corehr:job_data.compensation_type:read 获取薪资类型 |
└ target_compensation_type | string | 新薪资类型 字段权限要求: corehr:job_data.compensation_type:read 获取薪资类型 |
└ original_service_company | string | 原任职公司,详细信息可通过【批量查询公司】接口查询获得 字段权限要求: corehr:job_data.service_company:read 获取任职公司 |
└ target_service_company | string | 新任职公司,详细信息可通过【批量查询公司】接口查询获得 字段权限要求: corehr:job_data.service_company:read 获取任职公司 |
└ original_position | string | 原岗位,可通过【岗职务管理-岗位】相关API获取(目前仅灰度部分租户,如需要请联系管理员开灰) |
└ target_position | string | 新岗位,可通过【岗职务管理-岗位】相关API获取(目前仅灰度部分租户,如需要请联系管理员开灰) |
└ original_social_security_city | string | 原社保城市 字段权限要求: corehr:job_change.social_security_city:read 获取异动单据社保字段 |
└ target_social_security_city | string | 新社保城市 字段权限要求: corehr:job_change.social_security_city:read 获取异动单据社保字段 |
└ original_pathway | string | 原通道 字段权限要求(满足任一): corehr:job_change.pathway:read 读取异动信息中的通道字段信息 corehr:job_change.pathway:write 读写异动信息中的通道字段信息 |
└ target_pathway | string | 新通道 字段权限要求(满足任一): corehr:job_change.pathway:read 读取异动信息中的通道字段信息 corehr:job_change.pathway:write 读写异动信息中的通道字段信息 |
└ is_transfer_with_workforce | boolean | 编制随人员一起调整 |
└ is_adjust_salary | boolean | 是否调整薪酬 字段权限要求: corehr:job_change.is_adjust_salary:read 获取异动单据是否调薪字段 |
└ custom_fields | custom_field_data\[\] | 异动自定义字段 字段权限要求: corehr:job_change.custom_field:read 获取员工异动自定义字段信息 |
└ custom_api_name | string | 自定义字段 apiname,即自定义字段的唯一标识 |
└ name | custom_name | 自定义字段名称 |
└ zh_cn | string | 中文 |
└ en_us | string | 英文 |
└ type | int | 自定义字段类型 |
└ value | string | 字段值,是 json 转义后的字符串,根据元数据定义不同,字段格式不同(如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05") |
└ has_more | boolean | 是否还有更多项 |
└ page_token | string | 分页标记,当 has_more 为 true 时,会同时返回新的 page_token,否则不返回 page_token |
响应体示例
json
{
"code": 0,
"msg": "success",
"data": {
"items": [
{
"job_change_id": "6991776076699549697",
"employment_id": "ou_a294793e8fa21529f2a60e3e9de45520",
"status": "Approved",
"transfer_type_unique_identifier": "direct_leader_change",
"transfer_reason_unique_identifier": "involuntary_transfer",
"process_id": "6991776078461142564",
"effective_date": "2022-03-01",
"created_time": "1627899724000",
"updated_time": "1647434443000",
"transfer_info": {
"remark": "异动详情",
"offer_info": "优质人才,加急处理",
"target_dotted_manager_clean": true,
"probation_exist": false,
"original_department": "6966236933198579208",
"target_department": "6966236933198579208",
"original_work_location": "6967271100992587295",
"target_work_location": "6967271100992587295",
"original_direct_manager": "6974641477444060708",
"target_direct_manager": "7013619729281713671",
"original_dotted_manager": "6974648866876573198",
"target_dotted_manager": "7013328578351842852",
"original_job": "6969469398088287751",
"target_job": "6969469557836760606",
"original_job_family": "6967287547462419975",
"target_job_family": "6967287547462419975",
"original_job_level": "6972085707674355214",
"target_job_level": "6972085707674355214",
"original_workforce_type": "6968386026792289828",
"target_workforce_type": "7036268995372303885",
"original_employee_subtype": "6968386026792289828",
"target_employee_subtype": "7036268995372303885",
"original_company": "6974659700705068581",
"target_company": "6974659700705068581",
"original_contract_number": "55332",
"target_contract_number": "55333",
"original_contract_type": "labor_contract",
"target_contract_type": "labor_contract",
"original_duration_type": "fixed_term",
"target_duration_type": "fixed_term",
"original_signing_type": "new",
"target_signing_type": "new",
"original_contract_start_date": "2021-07-01",
"target_contract_start_date": "2021-07-01",
"original_contract_end_date": "2024-07-01",
"target_contract_end_date": "2024-07-01",
"original_working_hours_type": "6969087376740206087",
"target_working_hours_type": "6969087376740206087",
"original_working_calendar": "6969087376740236087",
"target_working_calendar": "6969087376740236087",
"original_probation_end_date": "2021-11-17",
"target_probation_end_date": "2021-11-17",
"original_weekly_working_hours": "162",
"target_weekly_working_hours": "160",
"original_work_shift": "work_shift",
"target_work_shift": "non_work_shift",
"original_cost_center_rate": [
{
"cost_center_id": "6950635856373745165",
"rate": 100
}
],
"target_cost_center_rate": [
{
"cost_center_id": "6950635856373745165",
"rate": 100
}
],
"original_employment_change": {
"regular_employee_start_date": "2023-01-01",
"seniority_date": "2023-01-01",
"employee_number": "1111111",
"custom_fields": [
{
"custom_api_name": "name",
"name": {
"zh_cn": "自定义姓名",
"en_us": "Custom Name"
},
"type": 1,
"value": "231"
}
]
},
"target_employment_change": {
"regular_employee_start_date": "2023-01-01",
"seniority_date": "2023-01-01",
"employee_number": "1111111",
"custom_fields": [
{
"custom_api_name": "name",
"name": {
"zh_cn": "自定义姓名",
"en_us": "Custom Name"
},
"type": 1,
"value": "231"
}
]
},
"original_job_grade": "7289005963599693366",
"target_job_grade": "7289005963599693366",
"original_compensation_type": "hourly",
"target_compensation_type": "salary",
"original_service_company": "7289005963599693367",
"target_service_company": "7289005963599693367",
"original_position": "7289005963599693367",
"target_position": "7289005963599693367",
"original_social_security_city": "7289005963599693367",
"target_social_security_city": "7289005963599693367",
"original_pathway": "7289005963599693367",
"target_pathway": "7289005963599693367",
"is_transfer_with_workforce": false
},
"is_adjust_salary": true,
"custom_fields": [
{
"custom_api_name": "name",
"name": {
"zh_cn": "自定义姓名",
"en_us": "Custom Name"
},
"type": 1,
"value": "\"231\""
}
]
}
],
"has_more": true,
"page_token": "6891251722631890445"
}
}错误码
| HTTP状态码 | 错误码 | 描述 | 排查建议 |
|---|---|---|---|
| 500 | 1160101 | marshal error | please oncall, https://applink.feishu.cn/TLJpeNdW |
| 500 | 1160102 | unmarshal error | please oncall, https://applink.feishu.cn/TLJpeNdW |
| 500 | 1160103 | request ID repeat | change the request id |
| 500 | 1160104 | custom field format error | please oncall, https://applink.feishu.cn/TLJpeNdW |
| 500 | 1160105 | field is required | please check the parameter |
| 500 | 1160106 | date format should be 2006-01-02 | please check the date parameter |
| 400 | 1160107 | param is invalid | please check the parameter |
