Skip to content

如何通过 OpenAPI 维护自定义字段

如何获取自定义字段的元数据?

1.调用方式

Step 1: 传入employmentperson调用「获取自定义字段列表」接口,获取自定义对象的的 API name

  • 自定义对象:当用户在「人员档案配置」页面添加自定义分组时,默认会创建一个与分组同名的自定义对象;人员档案工作信息下创建的自定义分组对应对象为employment;个人信息、履历信息及资料附件下创建的自定义分组对应对象为personXnip2024-07-12_17-57-55_副本.jpg

Step 2: 根据对象的 object_api_name 调用「获取自定义字段列表」接口,获取字段的 API name

常见系统对象:

对象名称object_api_name
个人信息person
证件national_id
地址address
银行账户bank_account
紧急联系人emergency_contact
家庭成员dependent
公民身份信息citizenship_status
教育经历education
工作经历work_experience
资料附件personal_profile
个人附加信息person_info_chn
工作信息employment
任职记录job_data
离职信息offboarding_info
试用期信息probation_management
部门department

Step 3: 根据 object_api_name, custom_api_name 调用「获取字段详情」接口,获得字段详情

2.示例

场景:「个人信息」对象下创建了一个自定义分组「个人证书」,需要查询「个人证书」下「职业证书等级」字段的枚举值有哪些。

Xnip2024-07-12_17-49-15.jpg

怎么维护自定义字段的数据?

1. 自定义字段的数据

飞书人事对外提供的很多 OpenAPI 都支持写入自定义字段的数据,以创建个人信息为例:

  • 设置请求体 custom_fields,以 custom_api_namevalue 的结构写入具体数据

  • 传参示例:

  • 写入一个字段编码为 custom_field_1__c 的自定义字段的值
  • 注意不同的接口参数名称可能不同,如 custom_api_namefield_name
json
{
	"custom_fields": [
		{
			"custom_api_name": "custom_field_1__c",
			"value": "\"这是一段单行文本\""
		}
	]
}

不同字段类型的数据传输格式

字段值是 JSON 转义后的字符串,根据元数据定义不同,字段格式不同,参考如下:

类型Type 值传入 Value 格式说明
文本1单语单行:"field__c": ""这是一段单行文本"" 单语多行:"field__c": ""这是多行文本第一行\n这是多行文本第二行"" 多语单行:"field__c": "{\"en-US\":\"这是英文\",\"zh-CN\":\"这是中文\"}" 多语多行:"field__c": "{\"en-US\":\"这是英文第一行\\n这是英文第二行\",\"zh-CN\":\"这是中文第一行\\n这是中文第二行\"}"文本属性(是否多语、是否多行等)可通过获取字段详情接口获得
是否2"field__c": "\"true\""
数字3"field__c": "\"2334.00\""
选项4单选:"field__c": ""enum_api_name"" 多选:"field__c": "["enum_api_name_1","enum_api_name_2"]"传入选项的 API name,可通过获取字段详情接口获得
查找5人员(单选):"field__c": ""7050076802819163661"" 人员(多选):"field__c": "["6976524804564321805","6976446378482484773"]" 自定义分组:"field__c": "[{\"wk_id\":\"7251542212374136358\",\"field_api_name_1\":\"文本1\",\"field_api_name_2\":\"enum_api_name_1\",\"field_api_name_3\":\"文本2\"}]"人员(单选)和人员(多选)组件传入雇佣 ID,且只能用 people_corehr_id 类型的 user_id_type 自定义分组中的数据要更新时,需要输入 wk_id,可通过查询接口获得,不传 wk_id 认为是新增
自动编码6"field__c": "\"ABC123456XYZ\""只能查询,不可修改
日期时间7日期:"field__c": ""2023-01-24"" 日期时间:"field__c": ""2024-01-23 05:06:07""
附件8附件单选:"field__c": [{"field_name": "field_api_name","value": "\"[{\\\"file_id\\\":\\\"64489fc45cc11e4688d3daf1_d80d327756bd4140ad292fc94d9e9e0f\\\"}]""}] 附件多选:"field__c": [{"field_name": "field_api_name","value": "\"[{\\\"file_id\\\":\\\"64489fc716ba39874c68c077_6fc1ba59668a4fae8a7f045816a18ecc\\\"},{\\\"file_id\\\":\\\"63eb3433fb14e3de87ac7f78_8f74c25f2e85401fbea1d787feea041b\\\"}]\""}]
图片9-只能查询,不可修改
计算字段10-只能查询,不可修改
反向查找11-只能查询,不可修改

2. 自定义分组的数据

目前飞书人事仅支持在「人员档案配置」功能下创建自定义分组,因此仅人员相关的 OpenAPI(如:创建个人信息更新个人信息等)支持更新自定义分组的数据。以更新个人信息为例:

  • 传参示例:
    • 更新 2 条「个人证书」数据,第一条是更新数据;第二条是新建一条数据
    • 自定义分组「个人证书」对应的 object_api_namecustom_obj_6__c
    • 自定义分组内包含的 2 个自定义字段「职业证书名称」、「职业证书类型」,对应的 custom_api_name 分别为 custom_field_1__ccustom_field_2__c
json
{
	"custom_fields": [
		{
			"field_name": "custom_obj_6__c",
			"value": "[{\"custom_field_1__c\":\"证书名称一\",\"custom_field_2__c\":\"enum_api_name_1\",\"wk_id\":\"6863326262618752111\"},{\"custom_field_1__c\":\"证书名称二\",\"custom_field_2__c\":\"enum_api_name_2\"}]"
		}
	]
}
  • 实现效果:
更新前更新后
一条证书数据:1. 职业证书名称:证书名称一、职业证书等级:中级证书Xnip2024-07-12_17-50-19.jpg两条证书数据:1. 职业证书名称:证书名称一、职业证书等级:高级证书;2.职业证书名称:证书名称二、职业证书等级:中级证书Xnip2024-07-12_17-49-55.jpg

内容来源:飞书开放平台 · 自动爬取整理