// Package corehr code generated by oapi sdk gen
/*
 * MIT License
 *
 * Copyright (c) 2022 Lark Technologies Pte. Ltd.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package larkcorehr

import (
	"io"

	"bytes"

	"io/ioutil"

	"fmt"

	"context"
	"errors"

	"github.com/larksuite/oapi-sdk-go/v3/event"

	"github.com/larksuite/oapi-sdk-go/v3/core"
)

const (
	SearchAssignedUserUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchAssignedUserUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchAssignedUserUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchAssignedUserUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	AddRoleAssignAuthorizationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	AddRoleAssignAuthorizationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	AddRoleAssignAuthorizationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	AddRoleAssignAuthorizationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetByParamAuthorizationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetByParamAuthorizationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetByParamAuthorizationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetByParamAuthorizationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	QueryAuthorizationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QueryAuthorizationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QueryAuthorizationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QueryAuthorizationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	RemoveRoleAssignAuthorizationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	RemoveRoleAssignAuthorizationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	RemoveRoleAssignAuthorizationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	RemoveRoleAssignAuthorizationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	UpdateRoleAssignAuthorizationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	UpdateRoleAssignAuthorizationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	UpdateRoleAssignAuthorizationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	UpdateRoleAssignAuthorizationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ConvertCommonDataIdIDTransformTypeCoreHR2Feishu = 1 // 飞书人事 -> 飞书通讯录
	ConvertCommonDataIdIDTransformTypeFeishu2CoreHR = 2 // 飞书通讯录 -> 飞书人事
	ConvertCommonDataIdIDTransformTypeAdmin2Feishu  = 3 // people admin -> 飞书人事
	ConvertCommonDataIdIDTransformTypeAdmin2CoreHR  = 4 // people admin -> 飞书通讯录

)

const (
	ConvertCommonDataIdIDTypeEmploymentID   = "user_id"          // 员工ID，当选择 user_id 且 id_transform_type 为 1、2、4 时，feishu_user_id_type 必填
	ConvertCommonDataIdIDTypeDepartmentID   = "department_id"    // 部门ID，当选择 department_id 且 id_transform_type 为 1、2、4 时，feishu_department_id_type 必填
	ConvertCommonDataIdIDTypeJobLevelID     = "job_level_id"     // 职级ID
	ConvertCommonDataIdIDTypeJobFamilyID    = "job_family_id"    // 序列ID
	ConvertCommonDataIdIDTypeEmployeeTypeID = "employee_type_id" // 人员类型ID
)

const (
	ConvertCommonDataIdFeishuUserIDTypeUserId  = "user_id"  // 以 user_id 来识别用户
	ConvertCommonDataIdFeishuUserIDTypeUnionId = "union_id" // 以 union_id 来识别用户
	ConvertCommonDataIdFeishuUserIDTypeOpenId  = "open_id"  // 以 open_id 来识别用户
)

const (
	ConvertCommonDataIdFeishuDepartmentIDTypeOpenDepartmentId = "open_department_id" // 以 open_department_id 来标识部门
	ConvertCommonDataIdFeishuDepartmentIDTypeDepartmentId     = "department_id"      // 以 department_id 来标识部门
)

const (
	MatchCompensationStandardUserIDTypeUserId         = "user_id"          // 以user_id来识别用户
	MatchCompensationStandardUserIDTypeUnionId        = "union_id"         // 以union_id来识别用户
	MatchCompensationStandardUserIDTypeOpenId         = "open_id"          // 以open_id来识别用户
	MatchCompensationStandardUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的ID来识别用户
)

const (
	MatchCompensationStandardDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	MatchCompensationStandardDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	MatchCompensationStandardDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	MatchCompensationStandardReferenceObjectApiCpstItem      = "cpst_item"      // 薪资项目
	MatchCompensationStandardReferenceObjectApiCpstIndicator = "cpst_indicator" // 薪资统计指标
)

const (
	MatchCompensationStandardRecruitmentTypeExperiencedProfessionals = "experienced_professionals" // 社招
	MatchCompensationStandardRecruitmentTypeRecentGraduates          = "recent_graduates"          // 校招
	MatchCompensationStandardRecruitmentTypeRoutineIntern            = "routine_intern"            // 日常实习
)

const (
	CreateDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreateDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreateDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	GetDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	GetDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	GetDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	ListDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	ListDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	ListDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	PatchDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	DeleteEmploymentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	DeleteEmploymentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	DeleteEmploymentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	DeleteEmploymentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchEmploymentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchEmploymentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchEmploymentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchEmploymentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchEmploymentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchEmploymentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchEmploymentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	CreateJobChangeTransferMode1 = 1 // 直接异动
	CreateJobChangeTransferMode2 = 2 // 发起异动

)

const (
	CreateJobChangeUserIDTypeUserId         = "user_id"          // 以user_id来识别用户
	CreateJobChangeUserIDTypeUnionId        = "union_id"         // 以union_id来识别用户
	CreateJobChangeUserIDTypeOpenId         = "open_id"          // 以open_id来识别用户
	CreateJobChangeUserIDTypePeopleAdminId  = "people_admin_id"  // 以people_admin_id来识别用户
	CreateJobChangeUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的ID来识别用户
)

const (
	CreateJobChangeDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreateJobChangeDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreateJobChangeDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	CreateJobDataUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateJobDataUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateJobDataUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateJobDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateJobDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreateJobDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreateJobDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	GetJobDataUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetJobDataUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetJobDataUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetJobDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetJobDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	GetJobDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	GetJobDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	ListJobDataUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListJobDataUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListJobDataUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListJobDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListJobDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	ListJobDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	ListJobDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	PatchJobDataUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchJobDataUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchJobDataUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchJobDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchJobDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchJobDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchJobDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	LeaveBalancesLeaveUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	LeaveBalancesLeaveUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	LeaveBalancesLeaveUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	LeaveBalancesLeaveUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	LeaveRequestHistoryLeaveUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	LeaveRequestHistoryLeaveUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	LeaveRequestHistoryLeaveUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	LeaveRequestHistoryLeaveUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	LeaveTypesLeaveUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	LeaveTypesLeaveUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	LeaveTypesLeaveUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	LeaveTypesLeaveUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateLeaveGrantingRecordUserIDTypeUserId         = "user_id"          // 以user_id来识别用户
	CreateLeaveGrantingRecordUserIDTypeUnionId        = "union_id"         // 以union_id来识别用户
	CreateLeaveGrantingRecordUserIDTypeOpenId         = "open_id"          // 以open_id来识别用户
	CreateLeaveGrantingRecordUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的ID来识别用户
)

const (
	SearchOffboardingUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchOffboardingUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchOffboardingUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchOffboardingUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SubmitOffboardingOffboardingModeTerminationOfDismissal = 1 // 直接离职

)

const (
	SubmitOffboardingUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SubmitOffboardingUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SubmitOffboardingUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SubmitOffboardingUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetPersonUserIDTypePeopleEmployeeId = "people_employee_id" // 以people_employee_id来识别用户
)

const (
	QuerySecurityGroupDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QuerySecurityGroupDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QuerySecurityGroupDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

type Address struct {
	FullAddressLocalScript *string `json:"full_address_local_script,omitempty"` // 完整地址（本地文字）

	FullAddressWesternScript *string `json:"full_address_western_script,omitempty"` // 完整地址（西方文字）

	Id *string `json:"id,omitempty"` // 地址ID

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	RegionId *string `json:"region_id,omitempty"` // 主要行政区

	CityId *string `json:"city_id,omitempty"` // 城市

	DistinctId *string `json:"distinct_id,omitempty"` // 区/县

	CityIdV2 *string `json:"city_id_v2,omitempty"` // 城市，可通过【查询城市信息】接口查询

	DistrictIdV2 *string `json:"district_id_v2,omitempty"` // 区/县，可通过【查询区/县信息】 接口查询

	AddressLine1 *string `json:"address_line1,omitempty"` // 地址行 1

	AddressLine2 *string `json:"address_line2,omitempty"` // 地址行 2

	AddressLine3 *string `json:"address_line3,omitempty"` // 地址行 3

	AddressLine4 *string `json:"address_line4,omitempty"` // 地址行 4

	AddressLine5 *string `json:"address_line5,omitempty"` // 地址行 5

	AddressLine6 *string `json:"address_line6,omitempty"` // 地址行 6

	AddressLine7 *string `json:"address_line7,omitempty"` // 地址行 7

	AddressLine8 *string `json:"address_line8,omitempty"` // 地址行 8

	AddressLine9 *string `json:"address_line9,omitempty"` // 地址行 9

	LocalAddressLine1 *string `json:"local_address_line1,omitempty"` // 地址行 1（非拉丁语系的本地文字）

	LocalAddressLine2 *string `json:"local_address_line2,omitempty"` // 地址行 2（非拉丁语系的本地文字）

	LocalAddressLine3 *string `json:"local_address_line3,omitempty"` // 地址行 3（非拉丁语系的本地文字）

	LocalAddressLine4 *string `json:"local_address_line4,omitempty"` // 地址行 4（非拉丁语系的本地文字）

	LocalAddressLine5 *string `json:"local_address_line5,omitempty"` // 地址行 5（非拉丁语系的本地文字）

	LocalAddressLine6 *string `json:"local_address_line6,omitempty"` // 地址行 6（非拉丁语系的本地文字）

	LocalAddressLine7 *string `json:"local_address_line7,omitempty"` // 地址行 7（非拉丁语系的本地文字）

	LocalAddressLine8 *string `json:"local_address_line8,omitempty"` // 地址行 8（非拉丁语系的本地文字）

	LocalAddressLine9 *string `json:"local_address_line9,omitempty"` // 地址行 9（非拉丁语系的本地文字）

	PostalCode *string `json:"postal_code,omitempty"` // 邮政编码

	AddressTypeList []*Enum `json:"address_type_list,omitempty"` // 地址类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)地址类型（address_type）枚举定义部分获得

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否为主要地址

	IsPublic *bool `json:"is_public,omitempty"` // 是否为公开地址

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type AddressBuilder struct {
	fullAddressLocalScript     string // 完整地址（本地文字）
	fullAddressLocalScriptFlag bool

	fullAddressWesternScript     string // 完整地址（西方文字）
	fullAddressWesternScriptFlag bool

	id     string // 地址ID
	idFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	regionId     string // 主要行政区
	regionIdFlag bool

	cityId     string // 城市
	cityIdFlag bool

	distinctId     string // 区/县
	distinctIdFlag bool

	cityIdV2     string // 城市，可通过【查询城市信息】接口查询
	cityIdV2Flag bool

	districtIdV2     string // 区/县，可通过【查询区/县信息】 接口查询
	districtIdV2Flag bool

	addressLine1     string // 地址行 1
	addressLine1Flag bool

	addressLine2     string // 地址行 2
	addressLine2Flag bool

	addressLine3     string // 地址行 3
	addressLine3Flag bool

	addressLine4     string // 地址行 4
	addressLine4Flag bool

	addressLine5     string // 地址行 5
	addressLine5Flag bool

	addressLine6     string // 地址行 6
	addressLine6Flag bool

	addressLine7     string // 地址行 7
	addressLine7Flag bool

	addressLine8     string // 地址行 8
	addressLine8Flag bool

	addressLine9     string // 地址行 9
	addressLine9Flag bool

	localAddressLine1     string // 地址行 1（非拉丁语系的本地文字）
	localAddressLine1Flag bool

	localAddressLine2     string // 地址行 2（非拉丁语系的本地文字）
	localAddressLine2Flag bool

	localAddressLine3     string // 地址行 3（非拉丁语系的本地文字）
	localAddressLine3Flag bool

	localAddressLine4     string // 地址行 4（非拉丁语系的本地文字）
	localAddressLine4Flag bool

	localAddressLine5     string // 地址行 5（非拉丁语系的本地文字）
	localAddressLine5Flag bool

	localAddressLine6     string // 地址行 6（非拉丁语系的本地文字）
	localAddressLine6Flag bool

	localAddressLine7     string // 地址行 7（非拉丁语系的本地文字）
	localAddressLine7Flag bool

	localAddressLine8     string // 地址行 8（非拉丁语系的本地文字）
	localAddressLine8Flag bool

	localAddressLine9     string // 地址行 9（非拉丁语系的本地文字）
	localAddressLine9Flag bool

	postalCode     string // 邮政编码
	postalCodeFlag bool

	addressTypeList     []*Enum // 地址类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)地址类型（address_type）枚举定义部分获得
	addressTypeListFlag bool

	isPrimary     bool // 是否为主要地址
	isPrimaryFlag bool

	isPublic     bool // 是否为公开地址
	isPublicFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewAddressBuilder() *AddressBuilder {
	builder := &AddressBuilder{}
	return builder
}

// 完整地址（本地文字）
//
// 示例值：中国北京北京
func (builder *AddressBuilder) FullAddressLocalScript(fullAddressLocalScript string) *AddressBuilder {
	builder.fullAddressLocalScript = fullAddressLocalScript
	builder.fullAddressLocalScriptFlag = true
	return builder
}

// 完整地址（西方文字）
//
// 示例值：Beijing, Beijing, China,
func (builder *AddressBuilder) FullAddressWesternScript(fullAddressWesternScript string) *AddressBuilder {
	builder.fullAddressWesternScript = fullAddressWesternScript
	builder.fullAddressWesternScriptFlag = true
	return builder
}

// 地址ID
//
// 示例值：6989822217869624863
func (builder *AddressBuilder) Id(id string) *AddressBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *AddressBuilder) CountryRegionId(countryRegionId string) *AddressBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 主要行政区
//
// 示例值：6863326815667095047
func (builder *AddressBuilder) RegionId(regionId string) *AddressBuilder {
	builder.regionId = regionId
	builder.regionIdFlag = true
	return builder
}

// 城市
//
// 示例值：6863333254578046471
func (builder *AddressBuilder) CityId(cityId string) *AddressBuilder {
	builder.cityId = cityId
	builder.cityIdFlag = true
	return builder
}

// 区/县
//
// 示例值：6863333516579440141
func (builder *AddressBuilder) DistinctId(distinctId string) *AddressBuilder {
	builder.distinctId = distinctId
	builder.distinctIdFlag = true
	return builder
}

// 城市，可通过【查询城市信息】接口查询
//
// 示例值：6863333254578046472
func (builder *AddressBuilder) CityIdV2(cityIdV2 string) *AddressBuilder {
	builder.cityIdV2 = cityIdV2
	builder.cityIdV2Flag = true
	return builder
}

// 区/县，可通过【查询区/县信息】 接口查询
//
// 示例值：6863333516579441141
func (builder *AddressBuilder) DistrictIdV2(districtIdV2 string) *AddressBuilder {
	builder.districtIdV2 = districtIdV2
	builder.districtIdV2Flag = true
	return builder
}

// 地址行 1
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *AddressBuilder) AddressLine1(addressLine1 string) *AddressBuilder {
	builder.addressLine1 = addressLine1
	builder.addressLine1Flag = true
	return builder
}

// 地址行 2
//
// 示例值：PoewH
func (builder *AddressBuilder) AddressLine2(addressLine2 string) *AddressBuilder {
	builder.addressLine2 = addressLine2
	builder.addressLine2Flag = true
	return builder
}

// 地址行 3
//
// 示例值：PoewH
func (builder *AddressBuilder) AddressLine3(addressLine3 string) *AddressBuilder {
	builder.addressLine3 = addressLine3
	builder.addressLine3Flag = true
	return builder
}

// 地址行 4
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine4(addressLine4 string) *AddressBuilder {
	builder.addressLine4 = addressLine4
	builder.addressLine4Flag = true
	return builder
}

// 地址行 5
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine5(addressLine5 string) *AddressBuilder {
	builder.addressLine5 = addressLine5
	builder.addressLine5Flag = true
	return builder
}

// 地址行 6
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine6(addressLine6 string) *AddressBuilder {
	builder.addressLine6 = addressLine6
	builder.addressLine6Flag = true
	return builder
}

// 地址行 7
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine7(addressLine7 string) *AddressBuilder {
	builder.addressLine7 = addressLine7
	builder.addressLine7Flag = true
	return builder
}

// 地址行 8
//
// 示例值：rafSu
func (builder *AddressBuilder) AddressLine8(addressLine8 string) *AddressBuilder {
	builder.addressLine8 = addressLine8
	builder.addressLine8Flag = true
	return builder
}

// 地址行 9
//
// 示例值：McPRG
func (builder *AddressBuilder) AddressLine9(addressLine9 string) *AddressBuilder {
	builder.addressLine9 = addressLine9
	builder.addressLine9Flag = true
	return builder
}

// 地址行 1（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *AddressBuilder) LocalAddressLine1(localAddressLine1 string) *AddressBuilder {
	builder.localAddressLine1 = localAddressLine1
	builder.localAddressLine1Flag = true
	return builder
}

// 地址行 2（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *AddressBuilder) LocalAddressLine2(localAddressLine2 string) *AddressBuilder {
	builder.localAddressLine2 = localAddressLine2
	builder.localAddressLine2Flag = true
	return builder
}

// 地址行 3（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *AddressBuilder) LocalAddressLine3(localAddressLine3 string) *AddressBuilder {
	builder.localAddressLine3 = localAddressLine3
	builder.localAddressLine3Flag = true
	return builder
}

// 地址行 4（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine4(localAddressLine4 string) *AddressBuilder {
	builder.localAddressLine4 = localAddressLine4
	builder.localAddressLine4Flag = true
	return builder
}

// 地址行 5（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine5(localAddressLine5 string) *AddressBuilder {
	builder.localAddressLine5 = localAddressLine5
	builder.localAddressLine5Flag = true
	return builder
}

// 地址行 6（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine6(localAddressLine6 string) *AddressBuilder {
	builder.localAddressLine6 = localAddressLine6
	builder.localAddressLine6Flag = true
	return builder
}

// 地址行 7（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine7(localAddressLine7 string) *AddressBuilder {
	builder.localAddressLine7 = localAddressLine7
	builder.localAddressLine7Flag = true
	return builder
}

// 地址行 8（非拉丁语系的本地文字）
//
// 示例值：rafSu
func (builder *AddressBuilder) LocalAddressLine8(localAddressLine8 string) *AddressBuilder {
	builder.localAddressLine8 = localAddressLine8
	builder.localAddressLine8Flag = true
	return builder
}

// 地址行 9（非拉丁语系的本地文字）
//
// 示例值：McPRG
func (builder *AddressBuilder) LocalAddressLine9(localAddressLine9 string) *AddressBuilder {
	builder.localAddressLine9 = localAddressLine9
	builder.localAddressLine9Flag = true
	return builder
}

// 邮政编码
//
// 示例值：611530
func (builder *AddressBuilder) PostalCode(postalCode string) *AddressBuilder {
	builder.postalCode = postalCode
	builder.postalCodeFlag = true
	return builder
}

// 地址类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)地址类型（address_type）枚举定义部分获得
//
// 示例值：
func (builder *AddressBuilder) AddressTypeList(addressTypeList []*Enum) *AddressBuilder {
	builder.addressTypeList = addressTypeList
	builder.addressTypeListFlag = true
	return builder
}

// 是否为主要地址
//
// 示例值：true
func (builder *AddressBuilder) IsPrimary(isPrimary bool) *AddressBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否为公开地址
//
// 示例值：true
func (builder *AddressBuilder) IsPublic(isPublic bool) *AddressBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *AddressBuilder) CustomFields(customFields []*ObjectFieldData) *AddressBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *AddressBuilder) Build() *Address {
	req := &Address{}
	if builder.fullAddressLocalScriptFlag {
		req.FullAddressLocalScript = &builder.fullAddressLocalScript

	}
	if builder.fullAddressWesternScriptFlag {
		req.FullAddressWesternScript = &builder.fullAddressWesternScript

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.regionIdFlag {
		req.RegionId = &builder.regionId

	}
	if builder.cityIdFlag {
		req.CityId = &builder.cityId

	}
	if builder.distinctIdFlag {
		req.DistinctId = &builder.distinctId

	}
	if builder.cityIdV2Flag {
		req.CityIdV2 = &builder.cityIdV2

	}
	if builder.districtIdV2Flag {
		req.DistrictIdV2 = &builder.districtIdV2

	}
	if builder.addressLine1Flag {
		req.AddressLine1 = &builder.addressLine1

	}
	if builder.addressLine2Flag {
		req.AddressLine2 = &builder.addressLine2

	}
	if builder.addressLine3Flag {
		req.AddressLine3 = &builder.addressLine3

	}
	if builder.addressLine4Flag {
		req.AddressLine4 = &builder.addressLine4

	}
	if builder.addressLine5Flag {
		req.AddressLine5 = &builder.addressLine5

	}
	if builder.addressLine6Flag {
		req.AddressLine6 = &builder.addressLine6

	}
	if builder.addressLine7Flag {
		req.AddressLine7 = &builder.addressLine7

	}
	if builder.addressLine8Flag {
		req.AddressLine8 = &builder.addressLine8

	}
	if builder.addressLine9Flag {
		req.AddressLine9 = &builder.addressLine9

	}
	if builder.localAddressLine1Flag {
		req.LocalAddressLine1 = &builder.localAddressLine1

	}
	if builder.localAddressLine2Flag {
		req.LocalAddressLine2 = &builder.localAddressLine2

	}
	if builder.localAddressLine3Flag {
		req.LocalAddressLine3 = &builder.localAddressLine3

	}
	if builder.localAddressLine4Flag {
		req.LocalAddressLine4 = &builder.localAddressLine4

	}
	if builder.localAddressLine5Flag {
		req.LocalAddressLine5 = &builder.localAddressLine5

	}
	if builder.localAddressLine6Flag {
		req.LocalAddressLine6 = &builder.localAddressLine6

	}
	if builder.localAddressLine7Flag {
		req.LocalAddressLine7 = &builder.localAddressLine7

	}
	if builder.localAddressLine8Flag {
		req.LocalAddressLine8 = &builder.localAddressLine8

	}
	if builder.localAddressLine9Flag {
		req.LocalAddressLine9 = &builder.localAddressLine9

	}
	if builder.postalCodeFlag {
		req.PostalCode = &builder.postalCode

	}
	if builder.addressTypeListFlag {
		req.AddressTypeList = builder.addressTypeList
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ApplicationInfo struct {
	ApplyInitiatorId *string `json:"apply_initiator_id,omitempty"` // 离职审批发起人的雇佣 ID

	ApplyInitiatingTime *string `json:"apply_initiating_time,omitempty"` // 离职申请流程发起时间

	ApplyFinishTime *string `json:"apply_finish_time,omitempty"` // 离职申请流程结束时间

	ProcessId *string `json:"process_id,omitempty"` // 流程 ID
}

type ApplicationInfoBuilder struct {
	applyInitiatorId     string // 离职审批发起人的雇佣 ID
	applyInitiatorIdFlag bool

	applyInitiatingTime     string // 离职申请流程发起时间
	applyInitiatingTimeFlag bool

	applyFinishTime     string // 离职申请流程结束时间
	applyFinishTimeFlag bool

	processId     string // 流程 ID
	processIdFlag bool
}

func NewApplicationInfoBuilder() *ApplicationInfoBuilder {
	builder := &ApplicationInfoBuilder{}
	return builder
}

// 离职审批发起人的雇佣 ID
//
// 示例值：6838119494196871234
func (builder *ApplicationInfoBuilder) ApplyInitiatorId(applyInitiatorId string) *ApplicationInfoBuilder {
	builder.applyInitiatorId = applyInitiatorId
	builder.applyInitiatorIdFlag = true
	return builder
}

// 离职申请流程发起时间
//
// 示例值：2022-02-03 11:22:33
func (builder *ApplicationInfoBuilder) ApplyInitiatingTime(applyInitiatingTime string) *ApplicationInfoBuilder {
	builder.applyInitiatingTime = applyInitiatingTime
	builder.applyInitiatingTimeFlag = true
	return builder
}

// 离职申请流程结束时间
//
// 示例值：2022-02-03 11:22:33
func (builder *ApplicationInfoBuilder) ApplyFinishTime(applyFinishTime string) *ApplicationInfoBuilder {
	builder.applyFinishTime = applyFinishTime
	builder.applyFinishTimeFlag = true
	return builder
}

// 流程 ID
//
// 示例值：6838119494196871234
func (builder *ApplicationInfoBuilder) ProcessId(processId string) *ApplicationInfoBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

func (builder *ApplicationInfoBuilder) Build() *ApplicationInfo {
	req := &ApplicationInfo{}
	if builder.applyInitiatorIdFlag {
		req.ApplyInitiatorId = &builder.applyInitiatorId

	}
	if builder.applyInitiatingTimeFlag {
		req.ApplyInitiatingTime = &builder.applyInitiatingTime

	}
	if builder.applyFinishTimeFlag {
		req.ApplyFinishTime = &builder.applyFinishTime

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	return req
}

type AssignedOrganization struct {
	OrgKey *string `json:"org_key,omitempty"` // 管理对象key

	OrgName *Name `json:"org_name,omitempty"` // 管理对象名称

	OrgIdList []string `json:"org_id_list,omitempty"` // 管理对象id列表
}

type AssignedOrganizationBuilder struct {
	orgKey     string // 管理对象key
	orgKeyFlag bool

	orgName     *Name // 管理对象名称
	orgNameFlag bool

	orgIdList     []string // 管理对象id列表
	orgIdListFlag bool
}

func NewAssignedOrganizationBuilder() *AssignedOrganizationBuilder {
	builder := &AssignedOrganizationBuilder{}
	return builder
}

// 管理对象key
//
// 示例值：department
func (builder *AssignedOrganizationBuilder) OrgKey(orgKey string) *AssignedOrganizationBuilder {
	builder.orgKey = orgKey
	builder.orgKeyFlag = true
	return builder
}

// 管理对象名称
//
// 示例值：
func (builder *AssignedOrganizationBuilder) OrgName(orgName *Name) *AssignedOrganizationBuilder {
	builder.orgName = orgName
	builder.orgNameFlag = true
	return builder
}

// 管理对象id列表
//
// 示例值：
func (builder *AssignedOrganizationBuilder) OrgIdList(orgIdList []string) *AssignedOrganizationBuilder {
	builder.orgIdList = orgIdList
	builder.orgIdListFlag = true
	return builder
}

func (builder *AssignedOrganizationBuilder) Build() *AssignedOrganization {
	req := &AssignedOrganization{}
	if builder.orgKeyFlag {
		req.OrgKey = &builder.orgKey

	}
	if builder.orgNameFlag {
		req.OrgName = builder.orgName
	}
	if builder.orgIdListFlag {
		req.OrgIdList = builder.orgIdList
	}
	return req
}

type AssignedOrganizationWithCode struct {
	OrgKey *string `json:"org_key,omitempty"` // 管理对象key

	OrgIds []string `json:"org_ids,omitempty"` // 管理对象id列表

	OrgCodes []string `json:"org_codes,omitempty"` // 管理对象code列表
}

type AssignedOrganizationWithCodeBuilder struct {
	orgKey     string // 管理对象key
	orgKeyFlag bool

	orgIds     []string // 管理对象id列表
	orgIdsFlag bool

	orgCodes     []string // 管理对象code列表
	orgCodesFlag bool
}

func NewAssignedOrganizationWithCodeBuilder() *AssignedOrganizationWithCodeBuilder {
	builder := &AssignedOrganizationWithCodeBuilder{}
	return builder
}

// 管理对象key
//
// 示例值：department
func (builder *AssignedOrganizationWithCodeBuilder) OrgKey(orgKey string) *AssignedOrganizationWithCodeBuilder {
	builder.orgKey = orgKey
	builder.orgKeyFlag = true
	return builder
}

// 管理对象id列表
//
// 示例值：
func (builder *AssignedOrganizationWithCodeBuilder) OrgIds(orgIds []string) *AssignedOrganizationWithCodeBuilder {
	builder.orgIds = orgIds
	builder.orgIdsFlag = true
	return builder
}

// 管理对象code列表
//
// 示例值：
func (builder *AssignedOrganizationWithCodeBuilder) OrgCodes(orgCodes []string) *AssignedOrganizationWithCodeBuilder {
	builder.orgCodes = orgCodes
	builder.orgCodesFlag = true
	return builder
}

func (builder *AssignedOrganizationWithCodeBuilder) Build() *AssignedOrganizationWithCode {
	req := &AssignedOrganizationWithCode{}
	if builder.orgKeyFlag {
		req.OrgKey = &builder.orgKey

	}
	if builder.orgIdsFlag {
		req.OrgIds = builder.orgIds
	}
	if builder.orgCodesFlag {
		req.OrgCodes = builder.orgCodes
	}
	return req
}

type AttachmentFieldSetting struct {
	IsMultiple *bool `json:"is_multiple,omitempty"` // 是否支持多个文件

	FileType *int `json:"file_type,omitempty"` // 文件类型枚举，具体如下：;1. jpeg ;2. png ;3. gif ;4. pdf ;5. docx ;6. doc ;7. csv;8. xls ;9. txt ;10. xlsx;11. mp4 ;12. pptx;13. ppt;14. json;15. zip;16. rar
}

type AttachmentFieldSettingBuilder struct {
	isMultiple     bool // 是否支持多个文件
	isMultipleFlag bool

	fileType     int // 文件类型枚举，具体如下：;1. jpeg ;2. png ;3. gif ;4. pdf ;5. docx ;6. doc ;7. csv;8. xls ;9. txt ;10. xlsx;11. mp4 ;12. pptx;13. ppt;14. json;15. zip;16. rar
	fileTypeFlag bool
}

func NewAttachmentFieldSettingBuilder() *AttachmentFieldSettingBuilder {
	builder := &AttachmentFieldSettingBuilder{}
	return builder
}

// 是否支持多个文件
//
// 示例值：false
func (builder *AttachmentFieldSettingBuilder) IsMultiple(isMultiple bool) *AttachmentFieldSettingBuilder {
	builder.isMultiple = isMultiple
	builder.isMultipleFlag = true
	return builder
}

// 文件类型枚举，具体如下：;1. jpeg ;2. png ;3. gif ;4. pdf ;5. docx ;6. doc ;7. csv;8. xls ;9. txt ;10. xlsx;11. mp4 ;12. pptx;13. ppt;14. json;15. zip;16. rar
//
// 示例值：1
func (builder *AttachmentFieldSettingBuilder) FileType(fileType int) *AttachmentFieldSettingBuilder {
	builder.fileType = fileType
	builder.fileTypeFlag = true
	return builder
}

func (builder *AttachmentFieldSettingBuilder) Build() *AttachmentFieldSetting {
	req := &AttachmentFieldSetting{}
	if builder.isMultipleFlag {
		req.IsMultiple = &builder.isMultiple

	}
	if builder.fileTypeFlag {
		req.FileType = &builder.fileType

	}
	return req
}

type BackgroundCheck struct {
	Id *string `json:"id,omitempty"` // 背调ID

	Package *int `json:"package,omitempty"` // 套餐

	Status *int `json:"status,omitempty"` // 状态

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	ModifiedTime *string `json:"modified_time,omitempty"` // 修改时间

	TargetId *string `json:"target_id,omitempty"` // 背调对象ID

	Outcome *int `json:"outcome,omitempty"` // 结果

	Report *BackgroundCheckReportObject `json:"report,omitempty"` // 报告
}

type BackgroundCheckBuilder struct {
	id     string // 背调ID
	idFlag bool

	package_    int // 套餐
	packageFlag bool

	status     int // 状态
	statusFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	modifiedTime     string // 修改时间
	modifiedTimeFlag bool

	targetId     string // 背调对象ID
	targetIdFlag bool

	outcome     int // 结果
	outcomeFlag bool

	report     *BackgroundCheckReportObject // 报告
	reportFlag bool
}

func NewBackgroundCheckBuilder() *BackgroundCheckBuilder {
	builder := &BackgroundCheckBuilder{}
	return builder
}

// 背调ID
//
// 示例值：
func (builder *BackgroundCheckBuilder) Id(id string) *BackgroundCheckBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 套餐
//
// 示例值：
func (builder *BackgroundCheckBuilder) Package(package_ int) *BackgroundCheckBuilder {
	builder.package_ = package_
	builder.packageFlag = true
	return builder
}

// 状态
//
// 示例值：
func (builder *BackgroundCheckBuilder) Status(status int) *BackgroundCheckBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 创建时间
//
// 示例值：
func (builder *BackgroundCheckBuilder) CreatedTime(createdTime string) *BackgroundCheckBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 修改时间
//
// 示例值：
func (builder *BackgroundCheckBuilder) ModifiedTime(modifiedTime string) *BackgroundCheckBuilder {
	builder.modifiedTime = modifiedTime
	builder.modifiedTimeFlag = true
	return builder
}

// 背调对象ID
//
// 示例值：
func (builder *BackgroundCheckBuilder) TargetId(targetId string) *BackgroundCheckBuilder {
	builder.targetId = targetId
	builder.targetIdFlag = true
	return builder
}

// 结果
//
// 示例值：
func (builder *BackgroundCheckBuilder) Outcome(outcome int) *BackgroundCheckBuilder {
	builder.outcome = outcome
	builder.outcomeFlag = true
	return builder
}

// 报告
//
// 示例值：
func (builder *BackgroundCheckBuilder) Report(report *BackgroundCheckReportObject) *BackgroundCheckBuilder {
	builder.report = report
	builder.reportFlag = true
	return builder
}

func (builder *BackgroundCheckBuilder) Build() *BackgroundCheck {
	req := &BackgroundCheck{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.packageFlag {
		req.Package = &builder.package_

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.modifiedTimeFlag {
		req.ModifiedTime = &builder.modifiedTime

	}
	if builder.targetIdFlag {
		req.TargetId = &builder.targetId

	}
	if builder.outcomeFlag {
		req.Outcome = &builder.outcome

	}
	if builder.reportFlag {
		req.Report = builder.report
	}
	return req
}

type BackgroundCheckCity struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文描述

	EnUs *string `json:"en_us,omitempty"` // 英文描述
}

type BackgroundCheckCityBuilder struct {
	zhCn     string // 中文描述
	zhCnFlag bool

	enUs     string // 英文描述
	enUsFlag bool
}

func NewBackgroundCheckCityBuilder() *BackgroundCheckCityBuilder {
	builder := &BackgroundCheckCityBuilder{}
	return builder
}

// 中文描述
//
// 示例值：
func (builder *BackgroundCheckCityBuilder) ZhCn(zhCn string) *BackgroundCheckCityBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文描述
//
// 示例值：
func (builder *BackgroundCheckCityBuilder) EnUs(enUs string) *BackgroundCheckCityBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *BackgroundCheckCityBuilder) Build() *BackgroundCheckCity {
	req := &BackgroundCheckCity{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type BackgroundCheckCountry struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文描述

	EnUs *string `json:"en_us,omitempty"` // 英文描述
}

type BackgroundCheckCountryBuilder struct {
	zhCn     string // 中文描述
	zhCnFlag bool

	enUs     string // 英文描述
	enUsFlag bool
}

func NewBackgroundCheckCountryBuilder() *BackgroundCheckCountryBuilder {
	builder := &BackgroundCheckCountryBuilder{}
	return builder
}

// 中文描述
//
// 示例值：
func (builder *BackgroundCheckCountryBuilder) ZhCn(zhCn string) *BackgroundCheckCountryBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文描述
//
// 示例值：
func (builder *BackgroundCheckCountryBuilder) EnUs(enUs string) *BackgroundCheckCountryBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *BackgroundCheckCountryBuilder) Build() *BackgroundCheckCountry {
	req := &BackgroundCheckCountry{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type BackgroundCheckReportObject struct {
	Url *string `json:"url,omitempty"` // 链接
}

type BackgroundCheckReportObjectBuilder struct {
	url     string // 链接
	urlFlag bool
}

func NewBackgroundCheckReportObjectBuilder() *BackgroundCheckReportObjectBuilder {
	builder := &BackgroundCheckReportObjectBuilder{}
	return builder
}

// 链接
//
// 示例值：
func (builder *BackgroundCheckReportObjectBuilder) Url(url string) *BackgroundCheckReportObjectBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

func (builder *BackgroundCheckReportObjectBuilder) Build() *BackgroundCheckReportObject {
	req := &BackgroundCheckReportObject{}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	return req
}

type BackgroundCheckTarget struct {
	Id *string `json:"id,omitempty"` // 背调对象ID

	FirstName *string `json:"first_name,omitempty"` // 姓

	LastName *string `json:"last_name,omitempty"` // 名

	Email *string `json:"email,omitempty"` // 邮箱

	WorkCountry *BackgroundCheckCountry `json:"work_country,omitempty"` // 工作国家

	WorkCity *BackgroundCheckCity `json:"work_city,omitempty"` // 工作城市

	JobTitle *string `json:"job_title,omitempty"` // 职称

	OfferHrEmail *string `json:"offer_hr_email,omitempty"` // offer HR的电子邮件

	BizUnit *string `json:"biz_unit,omitempty"` // 业务单元

	OfferHrDepartmentId *string `json:"offer_hr_department_id,omitempty"` // offer HR的部门ID
}

type BackgroundCheckTargetBuilder struct {
	id     string // 背调对象ID
	idFlag bool

	firstName     string // 姓
	firstNameFlag bool

	lastName     string // 名
	lastNameFlag bool

	email     string // 邮箱
	emailFlag bool

	workCountry     *BackgroundCheckCountry // 工作国家
	workCountryFlag bool

	workCity     *BackgroundCheckCity // 工作城市
	workCityFlag bool

	jobTitle     string // 职称
	jobTitleFlag bool

	offerHrEmail     string // offer HR的电子邮件
	offerHrEmailFlag bool

	bizUnit     string // 业务单元
	bizUnitFlag bool

	offerHrDepartmentId     string // offer HR的部门ID
	offerHrDepartmentIdFlag bool
}

func NewBackgroundCheckTargetBuilder() *BackgroundCheckTargetBuilder {
	builder := &BackgroundCheckTargetBuilder{}
	return builder
}

// 背调对象ID
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) Id(id string) *BackgroundCheckTargetBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 姓
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) FirstName(firstName string) *BackgroundCheckTargetBuilder {
	builder.firstName = firstName
	builder.firstNameFlag = true
	return builder
}

// 名
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) LastName(lastName string) *BackgroundCheckTargetBuilder {
	builder.lastName = lastName
	builder.lastNameFlag = true
	return builder
}

// 邮箱
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) Email(email string) *BackgroundCheckTargetBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 工作国家
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) WorkCountry(workCountry *BackgroundCheckCountry) *BackgroundCheckTargetBuilder {
	builder.workCountry = workCountry
	builder.workCountryFlag = true
	return builder
}

// 工作城市
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) WorkCity(workCity *BackgroundCheckCity) *BackgroundCheckTargetBuilder {
	builder.workCity = workCity
	builder.workCityFlag = true
	return builder
}

// 职称
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) JobTitle(jobTitle string) *BackgroundCheckTargetBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// offer HR的电子邮件
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) OfferHrEmail(offerHrEmail string) *BackgroundCheckTargetBuilder {
	builder.offerHrEmail = offerHrEmail
	builder.offerHrEmailFlag = true
	return builder
}

// 业务单元
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) BizUnit(bizUnit string) *BackgroundCheckTargetBuilder {
	builder.bizUnit = bizUnit
	builder.bizUnitFlag = true
	return builder
}

// offer HR的部门ID
//
// 示例值：
func (builder *BackgroundCheckTargetBuilder) OfferHrDepartmentId(offerHrDepartmentId string) *BackgroundCheckTargetBuilder {
	builder.offerHrDepartmentId = offerHrDepartmentId
	builder.offerHrDepartmentIdFlag = true
	return builder
}

func (builder *BackgroundCheckTargetBuilder) Build() *BackgroundCheckTarget {
	req := &BackgroundCheckTarget{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.firstNameFlag {
		req.FirstName = &builder.firstName

	}
	if builder.lastNameFlag {
		req.LastName = &builder.lastName

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.workCountryFlag {
		req.WorkCountry = builder.workCountry
	}
	if builder.workCityFlag {
		req.WorkCity = builder.workCity
	}
	if builder.jobTitleFlag {
		req.JobTitle = &builder.jobTitle

	}
	if builder.offerHrEmailFlag {
		req.OfferHrEmail = &builder.offerHrEmail

	}
	if builder.bizUnitFlag {
		req.BizUnit = &builder.bizUnit

	}
	if builder.offerHrDepartmentIdFlag {
		req.OfferHrDepartmentId = &builder.offerHrDepartmentId

	}
	return req
}

type BankAccount struct {
	BankName *string `json:"bank_name,omitempty"` // 银行名称，如果已经填入银行枚举，该字段可为空。如果要填写数据不在系统提供的枚举范围内，该字段存储自定义银行名称

	BankAccountNumber *string `json:"bank_account_number,omitempty"` // 银行账号

	AccountHolder *string `json:"account_holder,omitempty"` // 开户人姓名

	Bank *Enum `json:"bank,omitempty"` // 银行枚举，常见的银行枚举如：bank-5（交通银行）、bank-6（中国银行）、bank-7（中国建设银行）、bank-8（中国农业银行）、bank-9（中国工商银行）、bank-10（中国邮政储蓄银行）、bank-11（中国光大银行）、bank-12（中国民生银行）、bank-13（招商银行）、bank-14（中信银行）、bank-15（华夏银行）

	BankIdentificationCode *string `json:"bank_identification_code,omitempty"` // 银行识别码

	BranchName *string `json:"branch_name,omitempty"` // 支行名称

	BankId *string `json:"bank_id,omitempty"` // 银行 ID

	BranchId *string `json:"branch_id,omitempty"` // 支行 ID

	BankIdV2 *string `json:"bank_id_v2,omitempty"` // 银行 ID，详细信息可通过【查询银行信息】接口查询获得

	BranchIdV2 *string `json:"branch_id_v2,omitempty"` // 支行 ID，详细信息可通过【查询支行信息】接口查询获得

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得

	BankAccountUsage []*Enum `json:"bank_account_usage,omitempty"` // 银行卡用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)银行卡用途（bank_account_usage）枚举定义部分获得

	BankAccountType *Enum `json:"bank_account_type,omitempty"` // 银行卡类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)银行卡类型（bank_account_type）枚举定义部分获得

	CurrencyId *string `json:"currency_id,omitempty"` // 货币id
}

type BankAccountBuilder struct {
	bankName     string // 银行名称，如果已经填入银行枚举，该字段可为空。如果要填写数据不在系统提供的枚举范围内，该字段存储自定义银行名称
	bankNameFlag bool

	bankAccountNumber     string // 银行账号
	bankAccountNumberFlag bool

	accountHolder     string // 开户人姓名
	accountHolderFlag bool

	bank     *Enum // 银行枚举，常见的银行枚举如：bank-5（交通银行）、bank-6（中国银行）、bank-7（中国建设银行）、bank-8（中国农业银行）、bank-9（中国工商银行）、bank-10（中国邮政储蓄银行）、bank-11（中国光大银行）、bank-12（中国民生银行）、bank-13（招商银行）、bank-14（中信银行）、bank-15（华夏银行）
	bankFlag bool

	bankIdentificationCode     string // 银行识别码
	bankIdentificationCodeFlag bool

	branchName     string // 支行名称
	branchNameFlag bool

	bankId     string // 银行 ID
	bankIdFlag bool

	branchId     string // 支行 ID
	branchIdFlag bool

	bankIdV2     string // 银行 ID，详细信息可通过【查询银行信息】接口查询获得
	bankIdV2Flag bool

	branchIdV2     string // 支行 ID，详细信息可通过【查询支行信息】接口查询获得
	branchIdV2Flag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	countryRegionId     string // 国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得
	countryRegionIdFlag bool

	bankAccountUsage     []*Enum // 银行卡用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)银行卡用途（bank_account_usage）枚举定义部分获得
	bankAccountUsageFlag bool

	bankAccountType     *Enum // 银行卡类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)银行卡类型（bank_account_type）枚举定义部分获得
	bankAccountTypeFlag bool

	currencyId     string // 货币id
	currencyIdFlag bool
}

func NewBankAccountBuilder() *BankAccountBuilder {
	builder := &BankAccountBuilder{}
	return builder
}

// 银行名称，如果已经填入银行枚举，该字段可为空。如果要填写数据不在系统提供的枚举范围内，该字段存储自定义银行名称
//
// 示例值：中国农业银行
func (builder *BankAccountBuilder) BankName(bankName string) *BankAccountBuilder {
	builder.bankName = bankName
	builder.bankNameFlag = true
	return builder
}

// 银行账号
//
// 示例值：6231200000001223
func (builder *BankAccountBuilder) BankAccountNumber(bankAccountNumber string) *BankAccountBuilder {
	builder.bankAccountNumber = bankAccountNumber
	builder.bankAccountNumberFlag = true
	return builder
}

// 开户人姓名
//
// 示例值：孟十五
func (builder *BankAccountBuilder) AccountHolder(accountHolder string) *BankAccountBuilder {
	builder.accountHolder = accountHolder
	builder.accountHolderFlag = true
	return builder
}

// 银行枚举，常见的银行枚举如：bank-5（交通银行）、bank-6（中国银行）、bank-7（中国建设银行）、bank-8（中国农业银行）、bank-9（中国工商银行）、bank-10（中国邮政储蓄银行）、bank-11（中国光大银行）、bank-12（中国民生银行）、bank-13（招商银行）、bank-14（中信银行）、bank-15（华夏银行）
//
// 示例值：
func (builder *BankAccountBuilder) Bank(bank *Enum) *BankAccountBuilder {
	builder.bank = bank
	builder.bankFlag = true
	return builder
}

// 银行识别码
//
// 示例值：1234
func (builder *BankAccountBuilder) BankIdentificationCode(bankIdentificationCode string) *BankAccountBuilder {
	builder.bankIdentificationCode = bankIdentificationCode
	builder.bankIdentificationCodeFlag = true
	return builder
}

// 支行名称
//
// 示例值：中国农业银行支行
func (builder *BankAccountBuilder) BranchName(branchName string) *BankAccountBuilder {
	builder.branchName = branchName
	builder.branchNameFlag = true
	return builder
}

// 银行 ID
//
// 示例值：8
func (builder *BankAccountBuilder) BankId(bankId string) *BankAccountBuilder {
	builder.bankId = bankId
	builder.bankIdFlag = true
	return builder
}

// 支行 ID
//
// 示例值：12
func (builder *BankAccountBuilder) BranchId(branchId string) *BankAccountBuilder {
	builder.branchId = branchId
	builder.branchIdFlag = true
	return builder
}

// 银行 ID，详细信息可通过【查询银行信息】接口查询获得
//
// 示例值：MDBH00000001
func (builder *BankAccountBuilder) BankIdV2(bankIdV2 string) *BankAccountBuilder {
	builder.bankIdV2 = bankIdV2
	builder.bankIdV2Flag = true
	return builder
}

// 支行 ID，详细信息可通过【查询支行信息】接口查询获得
//
// 示例值：MDBK00000017
func (builder *BankAccountBuilder) BranchIdV2(branchIdV2 string) *BankAccountBuilder {
	builder.branchIdV2 = branchIdV2
	builder.branchIdV2Flag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *BankAccountBuilder) CustomFields(customFields []*ObjectFieldData) *BankAccountBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得
//
// 示例值：12
func (builder *BankAccountBuilder) CountryRegionId(countryRegionId string) *BankAccountBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 银行卡用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)银行卡用途（bank_account_usage）枚举定义部分获得
//
// 示例值：
func (builder *BankAccountBuilder) BankAccountUsage(bankAccountUsage []*Enum) *BankAccountBuilder {
	builder.bankAccountUsage = bankAccountUsage
	builder.bankAccountUsageFlag = true
	return builder
}

// 银行卡类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)银行卡类型（bank_account_type）枚举定义部分获得
//
// 示例值：
func (builder *BankAccountBuilder) BankAccountType(bankAccountType *Enum) *BankAccountBuilder {
	builder.bankAccountType = bankAccountType
	builder.bankAccountTypeFlag = true
	return builder
}

// 货币id
//
// 示例值：12QueryCountryRegionSubdivisionDataReq
func (builder *BankAccountBuilder) CurrencyId(currencyId string) *BankAccountBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

func (builder *BankAccountBuilder) Build() *BankAccount {
	req := &BankAccount{}
	if builder.bankNameFlag {
		req.BankName = &builder.bankName

	}
	if builder.bankAccountNumberFlag {
		req.BankAccountNumber = &builder.bankAccountNumber

	}
	if builder.accountHolderFlag {
		req.AccountHolder = &builder.accountHolder

	}
	if builder.bankFlag {
		req.Bank = builder.bank
	}
	if builder.bankIdentificationCodeFlag {
		req.BankIdentificationCode = &builder.bankIdentificationCode

	}
	if builder.branchNameFlag {
		req.BranchName = &builder.branchName

	}
	if builder.bankIdFlag {
		req.BankId = &builder.bankId

	}
	if builder.branchIdFlag {
		req.BranchId = &builder.branchId

	}
	if builder.bankIdV2Flag {
		req.BankIdV2 = &builder.bankIdV2

	}
	if builder.branchIdV2Flag {
		req.BranchIdV2 = &builder.branchIdV2

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.bankAccountUsageFlag {
		req.BankAccountUsage = builder.bankAccountUsage
	}
	if builder.bankAccountTypeFlag {
		req.BankAccountType = builder.bankAccountType
	}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId

	}
	return req
}

type BatchCheckFormInstanceI18nResult struct {
	Success *bool `json:"success,omitempty"` // 是否成功

	FieldValidateErrorMessages *string `json:"field_validate_error_messages,omitempty"` // 当出现某个控件校验不通过时，会用此字段返回校验结果，map格式

	FormValidateErrorMessages []*BpmDataengineI18n `json:"form_validate_error_messages,omitempty"` // 当出现配置了表单提交校验，且校验不通过时，会用此字段返回校验结果。

	SystemErrorMessage *BpmFormErrorMessage `json:"system_error_message,omitempty"` // 申请人未填写

	AdvancedFieldCheckResultList *string `json:"advanced_field_check_result_list,omitempty"` // 明细控件、高级控件校验不通过时，会用此字段返回校验结果。

	ErrMessageForExport []*BpmDataengineI18n `json:"err_message_for_export,omitempty"` // 用于多维表格导出场景的校验文案返回

	NoPermissonApis [][]string `json:"no_permisson_apis,omitempty"` // 业务传入的变量在表单中无权限
}

type BatchCheckFormInstanceI18nResultBuilder struct {
	success     bool // 是否成功
	successFlag bool

	fieldValidateErrorMessages     string // 当出现某个控件校验不通过时，会用此字段返回校验结果，map格式
	fieldValidateErrorMessagesFlag bool

	formValidateErrorMessages     []*BpmDataengineI18n // 当出现配置了表单提交校验，且校验不通过时，会用此字段返回校验结果。
	formValidateErrorMessagesFlag bool

	systemErrorMessage     *BpmFormErrorMessage // 申请人未填写
	systemErrorMessageFlag bool

	advancedFieldCheckResultList     string // 明细控件、高级控件校验不通过时，会用此字段返回校验结果。
	advancedFieldCheckResultListFlag bool

	errMessageForExport     []*BpmDataengineI18n // 用于多维表格导出场景的校验文案返回
	errMessageForExportFlag bool

	noPermissonApis     [][]string // 业务传入的变量在表单中无权限
	noPermissonApisFlag bool
}

func NewBatchCheckFormInstanceI18nResultBuilder() *BatchCheckFormInstanceI18nResultBuilder {
	builder := &BatchCheckFormInstanceI18nResultBuilder{}
	return builder
}

// 是否成功
//
// 示例值：false
func (builder *BatchCheckFormInstanceI18nResultBuilder) Success(success bool) *BatchCheckFormInstanceI18nResultBuilder {
	builder.success = success
	builder.successFlag = true
	return builder
}

// 当出现某个控件校验不通过时，会用此字段返回校验结果，map格式
//
// 示例值：null
func (builder *BatchCheckFormInstanceI18nResultBuilder) FieldValidateErrorMessages(fieldValidateErrorMessages string) *BatchCheckFormInstanceI18nResultBuilder {
	builder.fieldValidateErrorMessages = fieldValidateErrorMessages
	builder.fieldValidateErrorMessagesFlag = true
	return builder
}

// 当出现配置了表单提交校验，且校验不通过时，会用此字段返回校验结果。
//
// 示例值：
func (builder *BatchCheckFormInstanceI18nResultBuilder) FormValidateErrorMessages(formValidateErrorMessages []*BpmDataengineI18n) *BatchCheckFormInstanceI18nResultBuilder {
	builder.formValidateErrorMessages = formValidateErrorMessages
	builder.formValidateErrorMessagesFlag = true
	return builder
}

// 申请人未填写
//
// 示例值：map
func (builder *BatchCheckFormInstanceI18nResultBuilder) SystemErrorMessage(systemErrorMessage *BpmFormErrorMessage) *BatchCheckFormInstanceI18nResultBuilder {
	builder.systemErrorMessage = systemErrorMessage
	builder.systemErrorMessageFlag = true
	return builder
}

// 明细控件、高级控件校验不通过时，会用此字段返回校验结果。
//
// 示例值：null
func (builder *BatchCheckFormInstanceI18nResultBuilder) AdvancedFieldCheckResultList(advancedFieldCheckResultList string) *BatchCheckFormInstanceI18nResultBuilder {
	builder.advancedFieldCheckResultList = advancedFieldCheckResultList
	builder.advancedFieldCheckResultListFlag = true
	return builder
}

// 用于多维表格导出场景的校验文案返回
//
// 示例值：
func (builder *BatchCheckFormInstanceI18nResultBuilder) ErrMessageForExport(errMessageForExport []*BpmDataengineI18n) *BatchCheckFormInstanceI18nResultBuilder {
	builder.errMessageForExport = errMessageForExport
	builder.errMessageForExportFlag = true
	return builder
}

// 业务传入的变量在表单中无权限
//
// 示例值：
func (builder *BatchCheckFormInstanceI18nResultBuilder) NoPermissonApis(noPermissonApis [][]string) *BatchCheckFormInstanceI18nResultBuilder {
	builder.noPermissonApis = noPermissonApis
	builder.noPermissonApisFlag = true
	return builder
}

func (builder *BatchCheckFormInstanceI18nResultBuilder) Build() *BatchCheckFormInstanceI18nResult {
	req := &BatchCheckFormInstanceI18nResult{}
	if builder.successFlag {
		req.Success = &builder.success

	}
	if builder.fieldValidateErrorMessagesFlag {
		req.FieldValidateErrorMessages = &builder.fieldValidateErrorMessages

	}
	if builder.formValidateErrorMessagesFlag {
		req.FormValidateErrorMessages = builder.formValidateErrorMessages
	}
	if builder.systemErrorMessageFlag {
		req.SystemErrorMessage = builder.systemErrorMessage
	}
	if builder.advancedFieldCheckResultListFlag {
		req.AdvancedFieldCheckResultList = &builder.advancedFieldCheckResultList

	}
	if builder.errMessageForExportFlag {
		req.ErrMessageForExport = builder.errMessageForExport
	}
	if builder.noPermissonApisFlag {
		req.NoPermissonApis = builder.noPermissonApis
	}
	return req
}

type BpRoleOrganization struct {
	RoleKey *string `json:"role_key,omitempty"` // 角色类型的唯一标识;- HRBP：与部门有关，role_key 固定为 「hrbp」;- 属地 BP：与部门、工作地点有关，role_key 固定为 「location_bp」

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，查询 HRBP 需输入部门 ID

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，查询属地 BP 需要输入部门 ID 与 工作地点 ID
}

type BpRoleOrganizationBuilder struct {
	roleKey     string // 角色类型的唯一标识;- HRBP：与部门有关，role_key 固定为 「hrbp」;- 属地 BP：与部门、工作地点有关，role_key 固定为 「location_bp」
	roleKeyFlag bool

	departmentId     string // 部门 ID，查询 HRBP 需输入部门 ID
	departmentIdFlag bool

	workLocationId     string // 工作地点 ID，查询属地 BP 需要输入部门 ID 与 工作地点 ID
	workLocationIdFlag bool
}

func NewBpRoleOrganizationBuilder() *BpRoleOrganizationBuilder {
	builder := &BpRoleOrganizationBuilder{}
	return builder
}

// 角色类型的唯一标识;- HRBP：与部门有关，role_key 固定为 「hrbp」;- 属地 BP：与部门、工作地点有关，role_key 固定为 「location_bp」
//
// 示例值：location_bp
func (builder *BpRoleOrganizationBuilder) RoleKey(roleKey string) *BpRoleOrganizationBuilder {
	builder.roleKey = roleKey
	builder.roleKeyFlag = true
	return builder
}

// 部门 ID，查询 HRBP 需输入部门 ID
//
// 示例值：7063072995761456670
func (builder *BpRoleOrganizationBuilder) DepartmentId(departmentId string) *BpRoleOrganizationBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 工作地点 ID，查询属地 BP 需要输入部门 ID 与 工作地点 ID
//
// 示例值：6892687221355185677
func (builder *BpRoleOrganizationBuilder) WorkLocationId(workLocationId string) *BpRoleOrganizationBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

func (builder *BpRoleOrganizationBuilder) Build() *BpRoleOrganization {
	req := &BpRoleOrganization{}
	if builder.roleKeyFlag {
		req.RoleKey = &builder.roleKey

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	return req
}

type BpmDataengineI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // i18n类型字段，中文值

	EnUs *string `json:"en_us,omitempty"` // i18n类型字段，英文值
}

type BpmDataengineI18nBuilder struct {
	zhCn     string // i18n类型字段，中文值
	zhCnFlag bool

	enUs     string // i18n类型字段，英文值
	enUsFlag bool
}

func NewBpmDataengineI18nBuilder() *BpmDataengineI18nBuilder {
	builder := &BpmDataengineI18nBuilder{}
	return builder
}

// i18n类型字段，中文值
//
// 示例值：北京
func (builder *BpmDataengineI18nBuilder) ZhCn(zhCn string) *BpmDataengineI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// i18n类型字段，英文值
//
// 示例值：Beijing
func (builder *BpmDataengineI18nBuilder) EnUs(enUs string) *BpmDataengineI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *BpmDataengineI18nBuilder) Build() *BpmDataengineI18n {
	req := &BpmDataengineI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type BpmFormErrorMessage struct {
	Code *string `json:"code,omitempty"` // 错误码

	Message *string `json:"message,omitempty"` // 错误信息
}

type BpmFormErrorMessageBuilder struct {
	code     string // 错误码
	codeFlag bool

	message     string // 错误信息
	messageFlag bool
}

func NewBpmFormErrorMessageBuilder() *BpmFormErrorMessageBuilder {
	builder := &BpmFormErrorMessageBuilder{}
	return builder
}

// 错误码
//
// 示例值：0
func (builder *BpmFormErrorMessageBuilder) Code(code string) *BpmFormErrorMessageBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 错误信息
//
// 示例值：申请人未填写
func (builder *BpmFormErrorMessageBuilder) Message(message string) *BpmFormErrorMessageBuilder {
	builder.message = message
	builder.messageFlag = true
	return builder
}

func (builder *BpmFormErrorMessageBuilder) Build() *BpmFormErrorMessage {
	req := &BpmFormErrorMessage{}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.messageFlag {
		req.Message = &builder.message

	}
	return req
}

type CalculatedFieldSetting struct {
	Type *int `json:"type,omitempty"` // 字段类型
}

type CalculatedFieldSettingBuilder struct {
	type_    int // 字段类型
	typeFlag bool
}

func NewCalculatedFieldSettingBuilder() *CalculatedFieldSettingBuilder {
	builder := &CalculatedFieldSettingBuilder{}
	return builder
}

// 字段类型
//
// 示例值：1
func (builder *CalculatedFieldSettingBuilder) Type(type_ int) *CalculatedFieldSettingBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

func (builder *CalculatedFieldSettingBuilder) Build() *CalculatedFieldSetting {
	req := &CalculatedFieldSetting{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	return req
}

type CalendarDateByDateFilter struct {
	WkCalendarIds []string `json:"wk_calendar_ids,omitempty"` // 工作日历WKID列表，最多100

	Dates []string `json:"dates,omitempty"` // 日期，格式："2006-01-02"，最多50个

	BeginDate *string `json:"begin_date,omitempty"` // 日期范围-开始日期，格式："2006-01-02"

	EndDate *string `json:"end_date,omitempty"` // 日期范围-结束日期(含)，格式："2006-01-02"

	Offset *int `json:"offset,omitempty"` // 分页

	Limit *int `json:"limit,omitempty"` // 分页大小

	Ids []string `json:"ids,omitempty"` // 日期id，与其他筛选参数互斥，传了该参数，其他筛选参数不起效
}

type CalendarDateByDateFilterBuilder struct {
	wkCalendarIds     []string // 工作日历WKID列表，最多100
	wkCalendarIdsFlag bool

	dates     []string // 日期，格式："2006-01-02"，最多50个
	datesFlag bool

	beginDate     string // 日期范围-开始日期，格式："2006-01-02"
	beginDateFlag bool

	endDate     string // 日期范围-结束日期(含)，格式："2006-01-02"
	endDateFlag bool

	offset     int // 分页
	offsetFlag bool

	limit     int // 分页大小
	limitFlag bool

	ids     []string // 日期id，与其他筛选参数互斥，传了该参数，其他筛选参数不起效
	idsFlag bool
}

func NewCalendarDateByDateFilterBuilder() *CalendarDateByDateFilterBuilder {
	builder := &CalendarDateByDateFilterBuilder{}
	return builder
}

// 工作日历WKID列表，最多100
//
// 示例值："7390282135276635692"
func (builder *CalendarDateByDateFilterBuilder) WkCalendarIds(wkCalendarIds []string) *CalendarDateByDateFilterBuilder {
	builder.wkCalendarIds = wkCalendarIds
	builder.wkCalendarIdsFlag = true
	return builder
}

// 日期，格式："2006-01-02"，最多50个
//
// 示例值：
func (builder *CalendarDateByDateFilterBuilder) Dates(dates []string) *CalendarDateByDateFilterBuilder {
	builder.dates = dates
	builder.datesFlag = true
	return builder
}

// 日期范围-开始日期，格式："2006-01-02"
//
// 示例值："2006-01-02"
func (builder *CalendarDateByDateFilterBuilder) BeginDate(beginDate string) *CalendarDateByDateFilterBuilder {
	builder.beginDate = beginDate
	builder.beginDateFlag = true
	return builder
}

// 日期范围-结束日期(含)，格式："2006-01-02"
//
// 示例值："2006-01-02"
func (builder *CalendarDateByDateFilterBuilder) EndDate(endDate string) *CalendarDateByDateFilterBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 分页
//
// 示例值：0
func (builder *CalendarDateByDateFilterBuilder) Offset(offset int) *CalendarDateByDateFilterBuilder {
	builder.offset = offset
	builder.offsetFlag = true
	return builder
}

// 分页大小
//
// 示例值：10
func (builder *CalendarDateByDateFilterBuilder) Limit(limit int) *CalendarDateByDateFilterBuilder {
	builder.limit = limit
	builder.limitFlag = true
	return builder
}

// 日期id，与其他筛选参数互斥，传了该参数，其他筛选参数不起效
//
// 示例值：
func (builder *CalendarDateByDateFilterBuilder) Ids(ids []string) *CalendarDateByDateFilterBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

func (builder *CalendarDateByDateFilterBuilder) Build() *CalendarDateByDateFilter {
	req := &CalendarDateByDateFilter{}
	if builder.wkCalendarIdsFlag {
		req.WkCalendarIds = builder.wkCalendarIds
	}
	if builder.datesFlag {
		req.Dates = builder.dates
	}
	if builder.beginDateFlag {
		req.BeginDate = &builder.beginDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.offsetFlag {
		req.Offset = &builder.offset

	}
	if builder.limitFlag {
		req.Limit = &builder.limit

	}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	return req
}

type CommonSchemaConfig struct {
	TextFieldSetting *TextFieldSetting `json:"text_field_setting,omitempty"` // 文本配置信息

	NumberFieldSetting *NumberFieldSetting `json:"number_field_setting,omitempty"` // 数字配置信息

	EnumFieldSetting *EnumFieldSetting `json:"enum_field_setting,omitempty"` // 选项配置信息

	LookupFieldSetting *LookupFieldSetting `json:"lookup_field_setting,omitempty"` // 查找字段配置信息

	DateTimeFieldSetting *DateTimeFieldSetting `json:"date_time_field_setting,omitempty"` // 日期时间配置信息

	AttachmentFieldSetting *AttachmentFieldSetting `json:"attachment_field_setting,omitempty"` // 附件配置信息

	ImageFieldSetting *ImageFieldSetting `json:"image_field_setting,omitempty"` // 图片配置信息

	CalculatedFieldSetting *CalculatedFieldSetting `json:"calculated_field_setting,omitempty"` // 计算字段配置信息
}

type CommonSchemaConfigBuilder struct {
	textFieldSetting     *TextFieldSetting // 文本配置信息
	textFieldSettingFlag bool

	numberFieldSetting     *NumberFieldSetting // 数字配置信息
	numberFieldSettingFlag bool

	enumFieldSetting     *EnumFieldSetting // 选项配置信息
	enumFieldSettingFlag bool

	lookupFieldSetting     *LookupFieldSetting // 查找字段配置信息
	lookupFieldSettingFlag bool

	dateTimeFieldSetting     *DateTimeFieldSetting // 日期时间配置信息
	dateTimeFieldSettingFlag bool

	attachmentFieldSetting     *AttachmentFieldSetting // 附件配置信息
	attachmentFieldSettingFlag bool

	imageFieldSetting     *ImageFieldSetting // 图片配置信息
	imageFieldSettingFlag bool

	calculatedFieldSetting     *CalculatedFieldSetting // 计算字段配置信息
	calculatedFieldSettingFlag bool
}

func NewCommonSchemaConfigBuilder() *CommonSchemaConfigBuilder {
	builder := &CommonSchemaConfigBuilder{}
	return builder
}

// 文本配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) TextFieldSetting(textFieldSetting *TextFieldSetting) *CommonSchemaConfigBuilder {
	builder.textFieldSetting = textFieldSetting
	builder.textFieldSettingFlag = true
	return builder
}

// 数字配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) NumberFieldSetting(numberFieldSetting *NumberFieldSetting) *CommonSchemaConfigBuilder {
	builder.numberFieldSetting = numberFieldSetting
	builder.numberFieldSettingFlag = true
	return builder
}

// 选项配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) EnumFieldSetting(enumFieldSetting *EnumFieldSetting) *CommonSchemaConfigBuilder {
	builder.enumFieldSetting = enumFieldSetting
	builder.enumFieldSettingFlag = true
	return builder
}

// 查找字段配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) LookupFieldSetting(lookupFieldSetting *LookupFieldSetting) *CommonSchemaConfigBuilder {
	builder.lookupFieldSetting = lookupFieldSetting
	builder.lookupFieldSettingFlag = true
	return builder
}

// 日期时间配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) DateTimeFieldSetting(dateTimeFieldSetting *DateTimeFieldSetting) *CommonSchemaConfigBuilder {
	builder.dateTimeFieldSetting = dateTimeFieldSetting
	builder.dateTimeFieldSettingFlag = true
	return builder
}

// 附件配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) AttachmentFieldSetting(attachmentFieldSetting *AttachmentFieldSetting) *CommonSchemaConfigBuilder {
	builder.attachmentFieldSetting = attachmentFieldSetting
	builder.attachmentFieldSettingFlag = true
	return builder
}

// 图片配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) ImageFieldSetting(imageFieldSetting *ImageFieldSetting) *CommonSchemaConfigBuilder {
	builder.imageFieldSetting = imageFieldSetting
	builder.imageFieldSettingFlag = true
	return builder
}

// 计算字段配置信息
//
// 示例值：
func (builder *CommonSchemaConfigBuilder) CalculatedFieldSetting(calculatedFieldSetting *CalculatedFieldSetting) *CommonSchemaConfigBuilder {
	builder.calculatedFieldSetting = calculatedFieldSetting
	builder.calculatedFieldSettingFlag = true
	return builder
}

func (builder *CommonSchemaConfigBuilder) Build() *CommonSchemaConfig {
	req := &CommonSchemaConfig{}
	if builder.textFieldSettingFlag {
		req.TextFieldSetting = builder.textFieldSetting
	}
	if builder.numberFieldSettingFlag {
		req.NumberFieldSetting = builder.numberFieldSetting
	}
	if builder.enumFieldSettingFlag {
		req.EnumFieldSetting = builder.enumFieldSetting
	}
	if builder.lookupFieldSettingFlag {
		req.LookupFieldSetting = builder.lookupFieldSetting
	}
	if builder.dateTimeFieldSettingFlag {
		req.DateTimeFieldSetting = builder.dateTimeFieldSetting
	}
	if builder.attachmentFieldSettingFlag {
		req.AttachmentFieldSetting = builder.attachmentFieldSetting
	}
	if builder.imageFieldSettingFlag {
		req.ImageFieldSetting = builder.imageFieldSetting
	}
	if builder.calculatedFieldSettingFlag {
		req.CalculatedFieldSetting = builder.calculatedFieldSetting
	}
	return req
}

type CommonSchemaOption struct {
	ApiName *string `json:"api_name,omitempty"` // 选项 api_name，即选项的唯一标识

	Name *Name `json:"name,omitempty"` // 选项名称

	Description *Name `json:"description,omitempty"` // 选项描述

	IsOpen *bool `json:"is_open,omitempty"` // 是否启用
}

type CommonSchemaOptionBuilder struct {
	apiName     string // 选项 api_name，即选项的唯一标识
	apiNameFlag bool

	name     *Name // 选项名称
	nameFlag bool

	description     *Name // 选项描述
	descriptionFlag bool

	isOpen     bool // 是否启用
	isOpenFlag bool
}

func NewCommonSchemaOptionBuilder() *CommonSchemaOptionBuilder {
	builder := &CommonSchemaOptionBuilder{}
	return builder
}

// 选项 api_name，即选项的唯一标识
//
// 示例值：custom_field_33
func (builder *CommonSchemaOptionBuilder) ApiName(apiName string) *CommonSchemaOptionBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 选项名称
//
// 示例值：
func (builder *CommonSchemaOptionBuilder) Name(name *Name) *CommonSchemaOptionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 选项描述
//
// 示例值：
func (builder *CommonSchemaOptionBuilder) Description(description *Name) *CommonSchemaOptionBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *CommonSchemaOptionBuilder) IsOpen(isOpen bool) *CommonSchemaOptionBuilder {
	builder.isOpen = isOpen
	builder.isOpenFlag = true
	return builder
}

func (builder *CommonSchemaOptionBuilder) Build() *CommonSchemaOption {
	req := &CommonSchemaOption{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.isOpenFlag {
		req.IsOpen = &builder.isOpen

	}
	return req
}

type Company struct {
	Id *string `json:"id,omitempty"` // 公司 ID

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 层级关系，内层字段见实体

	Type *Enum `json:"type,omitempty"` // 性质，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)公司类型（company_type）枚举定义部分获得

	IndustryList []*Enum `json:"industry_list,omitempty"` // 行业，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)行业（industry）枚举定义部分获得

	LegalRepresentative []*I18n `json:"legal_representative,omitempty"` // 法定代表人

	PostCode *string `json:"post_code,omitempty"` // 邮编

	TaxPayerId *string `json:"tax_payer_id,omitempty"` // 纳税人识别号

	Confidential *bool `json:"confidential,omitempty"` // 是否保密

	SubTypeList []*Enum `json:"sub_type_list,omitempty"` // 主体类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)主体类型（company_sub_type）枚举定义部分获得

	BranchCompany *bool `json:"branch_company,omitempty"` // 是否为分公司

	PrimaryManager []*I18n `json:"primary_manager,omitempty"` // 主要负责人

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	Currency *Currency `json:"currency,omitempty"` // 默认币种

	Phone *PhoneNumberAndAreaCode `json:"phone,omitempty"` // 电话

	Fax *PhoneNumberAndAreaCode `json:"fax,omitempty"` // 传真

	RegisteredOfficeAddress []*I18n `json:"registered_office_address,omitempty"` // 完整注册地址

	OfficeAddress []*I18n `json:"office_address,omitempty"` // 完整办公地址

	RegisteredOfficeAddressInfo *Address `json:"registered_office_address_info,omitempty"` // 注册地址详细信息

	OfficeAddressInfo *Address `json:"office_address_info,omitempty"` // 办公地址详细信息
}

type CompanyBuilder struct {
	id     string // 公司 ID
	idFlag bool

	hiberarchyCommon     *HiberarchyCommon // 层级关系，内层字段见实体
	hiberarchyCommonFlag bool

	type_    *Enum // 性质，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)公司类型（company_type）枚举定义部分获得
	typeFlag bool

	industryList     []*Enum // 行业，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)行业（industry）枚举定义部分获得
	industryListFlag bool

	legalRepresentative     []*I18n // 法定代表人
	legalRepresentativeFlag bool

	postCode     string // 邮编
	postCodeFlag bool

	taxPayerId     string // 纳税人识别号
	taxPayerIdFlag bool

	confidential     bool // 是否保密
	confidentialFlag bool

	subTypeList     []*Enum // 主体类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)主体类型（company_sub_type）枚举定义部分获得
	subTypeListFlag bool

	branchCompany     bool // 是否为分公司
	branchCompanyFlag bool

	primaryManager     []*I18n // 主要负责人
	primaryManagerFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	currency     *Currency // 默认币种
	currencyFlag bool

	phone     *PhoneNumberAndAreaCode // 电话
	phoneFlag bool

	fax     *PhoneNumberAndAreaCode // 传真
	faxFlag bool

	registeredOfficeAddress     []*I18n // 完整注册地址
	registeredOfficeAddressFlag bool

	officeAddress     []*I18n // 完整办公地址
	officeAddressFlag bool

	registeredOfficeAddressInfo     *Address // 注册地址详细信息
	registeredOfficeAddressInfoFlag bool

	officeAddressInfo     *Address // 办公地址详细信息
	officeAddressInfoFlag bool
}

func NewCompanyBuilder() *CompanyBuilder {
	builder := &CompanyBuilder{}
	return builder
}

// 公司 ID
//
// 示例值：4692472714243080020
func (builder *CompanyBuilder) Id(id string) *CompanyBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 层级关系，内层字段见实体
//
// 示例值：
func (builder *CompanyBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *CompanyBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 性质，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)公司类型（company_type）枚举定义部分获得
//
// 示例值：
func (builder *CompanyBuilder) Type(type_ *Enum) *CompanyBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 行业，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)行业（industry）枚举定义部分获得
//
// 示例值：
func (builder *CompanyBuilder) IndustryList(industryList []*Enum) *CompanyBuilder {
	builder.industryList = industryList
	builder.industryListFlag = true
	return builder
}

// 法定代表人
//
// 示例值：
func (builder *CompanyBuilder) LegalRepresentative(legalRepresentative []*I18n) *CompanyBuilder {
	builder.legalRepresentative = legalRepresentative
	builder.legalRepresentativeFlag = true
	return builder
}

// 邮编
//
// 示例值：邮编
func (builder *CompanyBuilder) PostCode(postCode string) *CompanyBuilder {
	builder.postCode = postCode
	builder.postCodeFlag = true
	return builder
}

// 纳税人识别号
//
// 示例值：123456840
func (builder *CompanyBuilder) TaxPayerId(taxPayerId string) *CompanyBuilder {
	builder.taxPayerId = taxPayerId
	builder.taxPayerIdFlag = true
	return builder
}

// 是否保密
//
// 示例值：true
func (builder *CompanyBuilder) Confidential(confidential bool) *CompanyBuilder {
	builder.confidential = confidential
	builder.confidentialFlag = true
	return builder
}

// 主体类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)主体类型（company_sub_type）枚举定义部分获得
//
// 示例值：
func (builder *CompanyBuilder) SubTypeList(subTypeList []*Enum) *CompanyBuilder {
	builder.subTypeList = subTypeList
	builder.subTypeListFlag = true
	return builder
}

// 是否为分公司
//
// 示例值：true
func (builder *CompanyBuilder) BranchCompany(branchCompany bool) *CompanyBuilder {
	builder.branchCompany = branchCompany
	builder.branchCompanyFlag = true
	return builder
}

// 主要负责人
//
// 示例值：
func (builder *CompanyBuilder) PrimaryManager(primaryManager []*I18n) *CompanyBuilder {
	builder.primaryManager = primaryManager
	builder.primaryManagerFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompanyBuilder) CustomFields(customFields []*ObjectFieldData) *CompanyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 默认币种
//
// 示例值：
func (builder *CompanyBuilder) Currency(currency *Currency) *CompanyBuilder {
	builder.currency = currency
	builder.currencyFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *CompanyBuilder) Phone(phone *PhoneNumberAndAreaCode) *CompanyBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 传真
//
// 示例值：
func (builder *CompanyBuilder) Fax(fax *PhoneNumberAndAreaCode) *CompanyBuilder {
	builder.fax = fax
	builder.faxFlag = true
	return builder
}

// 完整注册地址
//
// 示例值：
func (builder *CompanyBuilder) RegisteredOfficeAddress(registeredOfficeAddress []*I18n) *CompanyBuilder {
	builder.registeredOfficeAddress = registeredOfficeAddress
	builder.registeredOfficeAddressFlag = true
	return builder
}

// 完整办公地址
//
// 示例值：
func (builder *CompanyBuilder) OfficeAddress(officeAddress []*I18n) *CompanyBuilder {
	builder.officeAddress = officeAddress
	builder.officeAddressFlag = true
	return builder
}

// 注册地址详细信息
//
// 示例值：
func (builder *CompanyBuilder) RegisteredOfficeAddressInfo(registeredOfficeAddressInfo *Address) *CompanyBuilder {
	builder.registeredOfficeAddressInfo = registeredOfficeAddressInfo
	builder.registeredOfficeAddressInfoFlag = true
	return builder
}

// 办公地址详细信息
//
// 示例值：
func (builder *CompanyBuilder) OfficeAddressInfo(officeAddressInfo *Address) *CompanyBuilder {
	builder.officeAddressInfo = officeAddressInfo
	builder.officeAddressInfoFlag = true
	return builder
}

func (builder *CompanyBuilder) Build() *Company {
	req := &Company{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.typeFlag {
		req.Type = builder.type_
	}
	if builder.industryListFlag {
		req.IndustryList = builder.industryList
	}
	if builder.legalRepresentativeFlag {
		req.LegalRepresentative = builder.legalRepresentative
	}
	if builder.postCodeFlag {
		req.PostCode = &builder.postCode

	}
	if builder.taxPayerIdFlag {
		req.TaxPayerId = &builder.taxPayerId

	}
	if builder.confidentialFlag {
		req.Confidential = &builder.confidential

	}
	if builder.subTypeListFlag {
		req.SubTypeList = builder.subTypeList
	}
	if builder.branchCompanyFlag {
		req.BranchCompany = &builder.branchCompany

	}
	if builder.primaryManagerFlag {
		req.PrimaryManager = builder.primaryManager
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.currencyFlag {
		req.Currency = builder.currency
	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.faxFlag {
		req.Fax = builder.fax
	}
	if builder.registeredOfficeAddressFlag {
		req.RegisteredOfficeAddress = builder.registeredOfficeAddress
	}
	if builder.officeAddressFlag {
		req.OfficeAddress = builder.officeAddress
	}
	if builder.registeredOfficeAddressInfoFlag {
		req.RegisteredOfficeAddressInfo = builder.registeredOfficeAddressInfo
	}
	if builder.officeAddressInfoFlag {
		req.OfficeAddressInfo = builder.officeAddressInfo
	}
	return req
}

type Contract struct {
	Id *string `json:"id,omitempty"` // 合同ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 合同开始日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 实际结束日期

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 ID，枚举值及详细信息可通过【批量查询雇佣信息】接口查询获得

	ContractType *Enum `json:"contract_type,omitempty"` // 合同类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)合同类型（contract_type）枚举定义部分获得

	FirstPartyCompanyId *string `json:"first_party_company_id,omitempty"` // 甲方, 引用Company的ID，枚举值及详细信息可通过【批量查询公司】接口查询获得

	PersonId *string `json:"person_id,omitempty"` // Person ID，枚举值及详细信息可通过【批量查询个人信息】接口查询获得

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	DurationType *Enum `json:"duration_type,omitempty"` // 期限类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)合同期限类型（duration_type）枚举定义部分获得

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 合同结束日期

	ContractNumber *string `json:"contract_number,omitempty"` // 合同编号

	SigningType *Enum `json:"signing_type,omitempty"` // 签订类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)签订类型（signing_type）枚举定义部分获得

	ContractStatus *Enum `json:"contract_status,omitempty"` // 合同协议状态，枚举值可通过文档【飞书人事枚举常量】合同协议状态（contract_status）枚举定义部分获得

	RenewalStatus *Enum `json:"renewal_status,omitempty"` // 续签状态，枚举值可通过文档【飞书人事枚举常量】续签状态（renewal_status）枚举定义部分获得

	SigningTimes *int `json:"signing_times,omitempty"` // 第几次签署
}

type ContractBuilder struct {
	id     string // 合同ID
	idFlag bool

	effectiveTime     string // 合同开始日期
	effectiveTimeFlag bool

	expirationTime     string // 实际结束日期
	expirationTimeFlag bool

	employmentId     string // 雇员 ID，枚举值及详细信息可通过【批量查询雇佣信息】接口查询获得
	employmentIdFlag bool

	contractType     *Enum // 合同类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)合同类型（contract_type）枚举定义部分获得
	contractTypeFlag bool

	firstPartyCompanyId     string // 甲方, 引用Company的ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
	firstPartyCompanyIdFlag bool

	personId     string // Person ID，枚举值及详细信息可通过【批量查询个人信息】接口查询获得
	personIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	durationType     *Enum // 期限类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)合同期限类型（duration_type）枚举定义部分获得
	durationTypeFlag bool

	contractEndDate     string // 合同结束日期
	contractEndDateFlag bool

	contractNumber     string // 合同编号
	contractNumberFlag bool

	signingType     *Enum // 签订类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)签订类型（signing_type）枚举定义部分获得
	signingTypeFlag bool

	contractStatus     *Enum // 合同协议状态，枚举值可通过文档【飞书人事枚举常量】合同协议状态（contract_status）枚举定义部分获得
	contractStatusFlag bool

	renewalStatus     *Enum // 续签状态，枚举值可通过文档【飞书人事枚举常量】续签状态（renewal_status）枚举定义部分获得
	renewalStatusFlag bool

	signingTimes     int // 第几次签署
	signingTimesFlag bool
}

func NewContractBuilder() *ContractBuilder {
	builder := &ContractBuilder{}
	return builder
}

// 合同ID
//
// 示例值：6919737965274990093
func (builder *ContractBuilder) Id(id string) *ContractBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 合同开始日期
//
// 示例值：2050-01-01 00:00:00
func (builder *ContractBuilder) EffectiveTime(effectiveTime string) *ContractBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 实际结束日期
//
// 示例值：9999-12-31 23:59:59
func (builder *ContractBuilder) ExpirationTime(expirationTime string) *ContractBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 雇员 ID，枚举值及详细信息可通过【批量查询雇佣信息】接口查询获得
//
// 示例值：6893013238632416776
func (builder *ContractBuilder) EmploymentId(employmentId string) *ContractBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 合同类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)合同类型（contract_type）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) ContractType(contractType *Enum) *ContractBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 甲方, 引用Company的ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
//
// 示例值：6892686614112241165
func (builder *ContractBuilder) FirstPartyCompanyId(firstPartyCompanyId string) *ContractBuilder {
	builder.firstPartyCompanyId = firstPartyCompanyId
	builder.firstPartyCompanyIdFlag = true
	return builder
}

// Person ID，枚举值及详细信息可通过【批量查询个人信息】接口查询获得
//
// 示例值：151515151
func (builder *ContractBuilder) PersonId(personId string) *ContractBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ContractBuilder) CustomFields(customFields []*ObjectFieldData) *ContractBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 期限类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)合同期限类型（duration_type）枚举定义部分获得
//
// 示例值：fixed_term
func (builder *ContractBuilder) DurationType(durationType *Enum) *ContractBuilder {
	builder.durationType = durationType
	builder.durationTypeFlag = true
	return builder
}

// 合同结束日期
//
// 示例值：2006-01-02
func (builder *ContractBuilder) ContractEndDate(contractEndDate string) *ContractBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// 合同编号
//
// 示例值：6919737965274990093
func (builder *ContractBuilder) ContractNumber(contractNumber string) *ContractBuilder {
	builder.contractNumber = contractNumber
	builder.contractNumberFlag = true
	return builder
}

// 签订类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)签订类型（signing_type）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) SigningType(signingType *Enum) *ContractBuilder {
	builder.signingType = signingType
	builder.signingTypeFlag = true
	return builder
}

// 合同协议状态，枚举值可通过文档【飞书人事枚举常量】合同协议状态（contract_status）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) ContractStatus(contractStatus *Enum) *ContractBuilder {
	builder.contractStatus = contractStatus
	builder.contractStatusFlag = true
	return builder
}

// 续签状态，枚举值可通过文档【飞书人事枚举常量】续签状态（renewal_status）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) RenewalStatus(renewalStatus *Enum) *ContractBuilder {
	builder.renewalStatus = renewalStatus
	builder.renewalStatusFlag = true
	return builder
}

// 第几次签署
//
// 示例值：1
func (builder *ContractBuilder) SigningTimes(signingTimes int) *ContractBuilder {
	builder.signingTimes = signingTimes
	builder.signingTimesFlag = true
	return builder
}

func (builder *ContractBuilder) Build() *Contract {
	req := &Contract{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.contractTypeFlag {
		req.ContractType = builder.contractType
	}
	if builder.firstPartyCompanyIdFlag {
		req.FirstPartyCompanyId = &builder.firstPartyCompanyId

	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.durationTypeFlag {
		req.DurationType = builder.durationType
	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.contractNumberFlag {
		req.ContractNumber = &builder.contractNumber

	}
	if builder.signingTypeFlag {
		req.SigningType = builder.signingType
	}
	if builder.contractStatusFlag {
		req.ContractStatus = builder.contractStatus
	}
	if builder.renewalStatusFlag {
		req.RenewalStatus = builder.renewalStatus
	}
	if builder.signingTimesFlag {
		req.SigningTimes = &builder.signingTimes

	}
	return req
}

type CostCenter struct {
	IsAutogenerate *bool `json:"is_autogenerate,omitempty"` // 是否自动生成

	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	Name []*I18n `json:"name,omitempty"` // 实体名称

	Active *bool `json:"active,omitempty"` // 当前实体是否启用

	Code *string `json:"code,omitempty"` // 成本中心的编码

	Description []*I18n `json:"description,omitempty"` // 成本中心的描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 成本中心生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 成本中心失效时间

	Managers []string `json:"managers,omitempty"` // 成本中心管理员，lookup 到 Employment 的ID

	Parent *string `json:"parent,omitempty"` // 上级成本中心

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	Rate *int `json:"rate,omitempty"` // 雇员占成本中心比例

	SupportCostCenter []*SupportCostCenterItem `json:"support_cost_center,omitempty"` // 支持的业务线列表
}

type CostCenterBuilder struct {
	isAutogenerate     bool // 是否自动生成
	isAutogenerateFlag bool

	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	name     []*I18n // 实体名称
	nameFlag bool

	active     bool // 当前实体是否启用
	activeFlag bool

	code     string // 成本中心的编码
	codeFlag bool

	description     []*I18n // 成本中心的描述
	descriptionFlag bool

	effectiveTime     string // 成本中心生效时间
	effectiveTimeFlag bool

	expirationTime     string // 成本中心失效时间
	expirationTimeFlag bool

	managers     []string // 成本中心管理员，lookup 到 Employment 的ID
	managersFlag bool

	parent     string // 上级成本中心
	parentFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	employmentId     string // 雇员ID
	employmentIdFlag bool

	rate     int // 雇员占成本中心比例
	rateFlag bool

	supportCostCenter     []*SupportCostCenterItem // 支持的业务线列表
	supportCostCenterFlag bool
}

func NewCostCenterBuilder() *CostCenterBuilder {
	builder := &CostCenterBuilder{}
	return builder
}

// 是否自动生成
//
// 示例值：true
func (builder *CostCenterBuilder) IsAutogenerate(isAutogenerate bool) *CostCenterBuilder {
	builder.isAutogenerate = isAutogenerate
	builder.isAutogenerateFlag = true
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：6950635856373745165
func (builder *CostCenterBuilder) Id(id string) *CostCenterBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 实体名称
//
// 示例值：
func (builder *CostCenterBuilder) Name(name []*I18n) *CostCenterBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 当前实体是否启用
//
// 示例值：true
func (builder *CostCenterBuilder) Active(active bool) *CostCenterBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 成本中心的编码
//
// 示例值：CC-000001
func (builder *CostCenterBuilder) Code(code string) *CostCenterBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 成本中心的描述
//
// 示例值：
func (builder *CostCenterBuilder) Description(description []*I18n) *CostCenterBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 成本中心生效时间
//
// 示例值：20210802
func (builder *CostCenterBuilder) EffectiveTime(effectiveTime string) *CostCenterBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 成本中心失效时间
//
// 示例值：20210802
func (builder *CostCenterBuilder) ExpirationTime(expirationTime string) *CostCenterBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 成本中心管理员，lookup 到 Employment 的ID
//
// 示例值：
func (builder *CostCenterBuilder) Managers(managers []string) *CostCenterBuilder {
	builder.managers = managers
	builder.managersFlag = true
	return builder
}

// 上级成本中心
//
// 示例值：CC-00001
func (builder *CostCenterBuilder) Parent(parent string) *CostCenterBuilder {
	builder.parent = parent
	builder.parentFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CostCenterBuilder) CustomFields(customFields []*ObjectFieldData) *CostCenterBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 雇员ID
//
// 示例值：6950635856373745165
func (builder *CostCenterBuilder) EmploymentId(employmentId string) *CostCenterBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 雇员占成本中心比例
//
// 示例值：100
func (builder *CostCenterBuilder) Rate(rate int) *CostCenterBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

// 支持的业务线列表
//
// 示例值：
func (builder *CostCenterBuilder) SupportCostCenter(supportCostCenter []*SupportCostCenterItem) *CostCenterBuilder {
	builder.supportCostCenter = supportCostCenter
	builder.supportCostCenterFlag = true
	return builder
}

func (builder *CostCenterBuilder) Build() *CostCenter {
	req := &CostCenter{}
	if builder.isAutogenerateFlag {
		req.IsAutogenerate = &builder.isAutogenerate

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.managersFlag {
		req.Managers = builder.managers
	}
	if builder.parentFlag {
		req.Parent = &builder.parent

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	if builder.supportCostCenterFlag {
		req.SupportCostCenter = builder.supportCostCenter
	}
	return req
}

type CostCenterQuery struct {
	IsAutogenerate *bool `json:"is_autogenerate,omitempty"` // 是否自动生成

	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	Name []*I18n `json:"name,omitempty"` // 实体名称

	Active *bool `json:"active,omitempty"` // 当前实体是否启用

	Code *string `json:"code,omitempty"` // 成本中心的编码

	Description []*I18n `json:"description,omitempty"` // 成本中心的描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 成本中心生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 成本中心失效时间

	Managers []string `json:"managers,omitempty"` // 成本中心管理员，lookup 到 Employment 的ID

	Parent *string `json:"parent,omitempty"` // 上级成本中心

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	Rate *int `json:"rate,omitempty"` // 雇员占成本中心比例

	SupportCostCenter []*SupportCostCenterItem `json:"support_cost_center,omitempty"` // 支持的业务线列表
}

type CostCenterQueryBuilder struct {
	isAutogenerate     bool // 是否自动生成
	isAutogenerateFlag bool

	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	name     []*I18n // 实体名称
	nameFlag bool

	active     bool // 当前实体是否启用
	activeFlag bool

	code     string // 成本中心的编码
	codeFlag bool

	description     []*I18n // 成本中心的描述
	descriptionFlag bool

	effectiveTime     string // 成本中心生效时间
	effectiveTimeFlag bool

	expirationTime     string // 成本中心失效时间
	expirationTimeFlag bool

	managers     []string // 成本中心管理员，lookup 到 Employment 的ID
	managersFlag bool

	parent     string // 上级成本中心
	parentFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	employmentId     string // 雇员ID
	employmentIdFlag bool

	rate     int // 雇员占成本中心比例
	rateFlag bool

	supportCostCenter     []*SupportCostCenterItem // 支持的业务线列表
	supportCostCenterFlag bool
}

func NewCostCenterQueryBuilder() *CostCenterQueryBuilder {
	builder := &CostCenterQueryBuilder{}
	return builder
}

// 是否自动生成
//
// 示例值：true
func (builder *CostCenterQueryBuilder) IsAutogenerate(isAutogenerate bool) *CostCenterQueryBuilder {
	builder.isAutogenerate = isAutogenerate
	builder.isAutogenerateFlag = true
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：6950635856373745165
func (builder *CostCenterQueryBuilder) Id(id string) *CostCenterQueryBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 实体名称
//
// 示例值：
func (builder *CostCenterQueryBuilder) Name(name []*I18n) *CostCenterQueryBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 当前实体是否启用
//
// 示例值：true
func (builder *CostCenterQueryBuilder) Active(active bool) *CostCenterQueryBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 成本中心的编码
//
// 示例值：CC-000001
func (builder *CostCenterQueryBuilder) Code(code string) *CostCenterQueryBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 成本中心的描述
//
// 示例值：
func (builder *CostCenterQueryBuilder) Description(description []*I18n) *CostCenterQueryBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 成本中心生效时间
//
// 示例值：20210802
func (builder *CostCenterQueryBuilder) EffectiveTime(effectiveTime string) *CostCenterQueryBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 成本中心失效时间
//
// 示例值：20210802
func (builder *CostCenterQueryBuilder) ExpirationTime(expirationTime string) *CostCenterQueryBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 成本中心管理员，lookup 到 Employment 的ID
//
// 示例值：
func (builder *CostCenterQueryBuilder) Managers(managers []string) *CostCenterQueryBuilder {
	builder.managers = managers
	builder.managersFlag = true
	return builder
}

// 上级成本中心
//
// 示例值：CC-00001
func (builder *CostCenterQueryBuilder) Parent(parent string) *CostCenterQueryBuilder {
	builder.parent = parent
	builder.parentFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CostCenterQueryBuilder) CustomFields(customFields []*ObjectFieldData) *CostCenterQueryBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 雇员ID
//
// 示例值：6950635856373745165
func (builder *CostCenterQueryBuilder) EmploymentId(employmentId string) *CostCenterQueryBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 雇员占成本中心比例
//
// 示例值：100
func (builder *CostCenterQueryBuilder) Rate(rate int) *CostCenterQueryBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

// 支持的业务线列表
//
// 示例值：
func (builder *CostCenterQueryBuilder) SupportCostCenter(supportCostCenter []*SupportCostCenterItem) *CostCenterQueryBuilder {
	builder.supportCostCenter = supportCostCenter
	builder.supportCostCenterFlag = true
	return builder
}

func (builder *CostCenterQueryBuilder) Build() *CostCenterQuery {
	req := &CostCenterQuery{}
	if builder.isAutogenerateFlag {
		req.IsAutogenerate = &builder.isAutogenerate

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.managersFlag {
		req.Managers = builder.managers
	}
	if builder.parentFlag {
		req.Parent = &builder.parent

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	if builder.supportCostCenterFlag {
		req.SupportCostCenter = builder.supportCostCenter
	}
	return req
}

type CountryRegion struct {
	Id *string `json:"id,omitempty"` // 国家/地区id

	Name []*I18n `json:"name,omitempty"` // 国家/地区名称

	Alpha3Code *string `json:"alpha_3_code,omitempty"` // 国家地区三字码

	Alpha2Code *string `json:"alpha_2_code,omitempty"` // 国家地区二字码
}

type CountryRegionBuilder struct {
	id     string // 国家/地区id
	idFlag bool

	name     []*I18n // 国家/地区名称
	nameFlag bool

	alpha3Code     string // 国家地区三字码
	alpha3CodeFlag bool

	alpha2Code     string // 国家地区二字码
	alpha2CodeFlag bool
}

func NewCountryRegionBuilder() *CountryRegionBuilder {
	builder := &CountryRegionBuilder{}
	return builder
}

// 国家/地区id
//
// 示例值：1
func (builder *CountryRegionBuilder) Id(id string) *CountryRegionBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 国家/地区名称
//
// 示例值：
func (builder *CountryRegionBuilder) Name(name []*I18n) *CountryRegionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 国家地区三字码
//
// 示例值：12
func (builder *CountryRegionBuilder) Alpha3Code(alpha3Code string) *CountryRegionBuilder {
	builder.alpha3Code = alpha3Code
	builder.alpha3CodeFlag = true
	return builder
}

// 国家地区二字码
//
// 示例值：12
func (builder *CountryRegionBuilder) Alpha2Code(alpha2Code string) *CountryRegionBuilder {
	builder.alpha2Code = alpha2Code
	builder.alpha2CodeFlag = true
	return builder
}

func (builder *CountryRegionBuilder) Build() *CountryRegion {
	req := &CountryRegion{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.alpha3CodeFlag {
		req.Alpha3Code = &builder.alpha3Code

	}
	if builder.alpha2CodeFlag {
		req.Alpha2Code = &builder.alpha2Code

	}
	return req
}

type CpstBandWidth struct {
	UpperLimit *string `json:"upper_limit,omitempty"` // 上限

	LowerLimit *string `json:"lower_limit,omitempty"` // 下限
}

type CpstBandWidthBuilder struct {
	upperLimit     string // 上限
	upperLimitFlag bool

	lowerLimit     string // 下限
	lowerLimitFlag bool
}

func NewCpstBandWidthBuilder() *CpstBandWidthBuilder {
	builder := &CpstBandWidthBuilder{}
	return builder
}

// 上限
//
// 示例值：15000
func (builder *CpstBandWidthBuilder) UpperLimit(upperLimit string) *CpstBandWidthBuilder {
	builder.upperLimit = upperLimit
	builder.upperLimitFlag = true
	return builder
}

// 下限
//
// 示例值：10000
func (builder *CpstBandWidthBuilder) LowerLimit(lowerLimit string) *CpstBandWidthBuilder {
	builder.lowerLimit = lowerLimit
	builder.lowerLimitFlag = true
	return builder
}

func (builder *CpstBandWidthBuilder) Build() *CpstBandWidth {
	req := &CpstBandWidth{}
	if builder.upperLimitFlag {
		req.UpperLimit = &builder.upperLimit

	}
	if builder.lowerLimitFlag {
		req.LowerLimit = &builder.lowerLimit

	}
	return req
}

type CpstCurrency struct {
	CurrencyId *string `json:"currency_id,omitempty"` // 币种ID

	Code *string `json:"code,omitempty"` // 币种code

	Name *CpstI18n `json:"name,omitempty"` // 币种名称
}

type CpstCurrencyBuilder struct {
	currencyId     string // 币种ID
	currencyIdFlag bool

	code     string // 币种code
	codeFlag bool

	name     *CpstI18n // 币种名称
	nameFlag bool
}

func NewCpstCurrencyBuilder() *CpstCurrencyBuilder {
	builder := &CpstCurrencyBuilder{}
	return builder
}

// 币种ID
//
// 示例值：6863329932261459464
func (builder *CpstCurrencyBuilder) CurrencyId(currencyId string) *CpstCurrencyBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 币种code
//
// 示例值：CNY
func (builder *CpstCurrencyBuilder) Code(code string) *CpstCurrencyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 币种名称
//
// 示例值：
func (builder *CpstCurrencyBuilder) Name(name *CpstI18n) *CpstCurrencyBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *CpstCurrencyBuilder) Build() *CpstCurrency {
	req := &CpstCurrency{}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type CpstGrade struct {
	GradeId *string `json:"grade_id,omitempty"` // 薪资等级ID

	GradeTid *string `json:"grade_tid,omitempty"` // 薪资等级时间轴ID

	GradeStandardValue *CpstGradeStandardValue `json:"grade_standard_value,omitempty"` // 带宽上下限和标准值

	Currency *CpstCurrency `json:"currency,omitempty"` // 币种

	Description *CpstI18n `json:"description,omitempty"` // 薪资标准描述
}

type CpstGradeBuilder struct {
	gradeId     string // 薪资等级ID
	gradeIdFlag bool

	gradeTid     string // 薪资等级时间轴ID
	gradeTidFlag bool

	gradeStandardValue     *CpstGradeStandardValue // 带宽上下限和标准值
	gradeStandardValueFlag bool

	currency     *CpstCurrency // 币种
	currencyFlag bool

	description     *CpstI18n // 薪资标准描述
	descriptionFlag bool
}

func NewCpstGradeBuilder() *CpstGradeBuilder {
	builder := &CpstGradeBuilder{}
	return builder
}

// 薪资等级ID
//
// 示例值：7174758360888215084
func (builder *CpstGradeBuilder) GradeId(gradeId string) *CpstGradeBuilder {
	builder.gradeId = gradeId
	builder.gradeIdFlag = true
	return builder
}

// 薪资等级时间轴ID
//
// 示例值：7174758360888247852
func (builder *CpstGradeBuilder) GradeTid(gradeTid string) *CpstGradeBuilder {
	builder.gradeTid = gradeTid
	builder.gradeTidFlag = true
	return builder
}

// 带宽上下限和标准值
//
// 示例值：
func (builder *CpstGradeBuilder) GradeStandardValue(gradeStandardValue *CpstGradeStandardValue) *CpstGradeBuilder {
	builder.gradeStandardValue = gradeStandardValue
	builder.gradeStandardValueFlag = true
	return builder
}

// 币种
//
// 示例值：
func (builder *CpstGradeBuilder) Currency(currency *CpstCurrency) *CpstGradeBuilder {
	builder.currency = currency
	builder.currencyFlag = true
	return builder
}

// 薪资标准描述
//
// 示例值：
func (builder *CpstGradeBuilder) Description(description *CpstI18n) *CpstGradeBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *CpstGradeBuilder) Build() *CpstGrade {
	req := &CpstGrade{}
	if builder.gradeIdFlag {
		req.GradeId = &builder.gradeId

	}
	if builder.gradeTidFlag {
		req.GradeTid = &builder.gradeTid

	}
	if builder.gradeStandardValueFlag {
		req.GradeStandardValue = builder.gradeStandardValue
	}
	if builder.currencyFlag {
		req.Currency = builder.currency
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	return req
}

type CpstGradeStandardValue struct {
	ReferenceObject *ReferenceObject `json:"reference_object,omitempty"` // 薪资标准的关联对象，项目或者指标

	StandardType *CpstStandardType `json:"standard_type,omitempty"` // 薪资标准类型

	BandWidth *CpstBandWidth `json:"band_width,omitempty"` // 上下限

	StandardValue *string `json:"standard_value,omitempty"` // 标准值
}

type CpstGradeStandardValueBuilder struct {
	referenceObject     *ReferenceObject // 薪资标准的关联对象，项目或者指标
	referenceObjectFlag bool

	standardType     *CpstStandardType // 薪资标准类型
	standardTypeFlag bool

	bandWidth     *CpstBandWidth // 上下限
	bandWidthFlag bool

	standardValue     string // 标准值
	standardValueFlag bool
}

func NewCpstGradeStandardValueBuilder() *CpstGradeStandardValueBuilder {
	builder := &CpstGradeStandardValueBuilder{}
	return builder
}

// 薪资标准的关联对象，项目或者指标
//
// 示例值：
func (builder *CpstGradeStandardValueBuilder) ReferenceObject(referenceObject *ReferenceObject) *CpstGradeStandardValueBuilder {
	builder.referenceObject = referenceObject
	builder.referenceObjectFlag = true
	return builder
}

// 薪资标准类型
//
// 示例值：
func (builder *CpstGradeStandardValueBuilder) StandardType(standardType *CpstStandardType) *CpstGradeStandardValueBuilder {
	builder.standardType = standardType
	builder.standardTypeFlag = true
	return builder
}

// 上下限
//
// 示例值：
func (builder *CpstGradeStandardValueBuilder) BandWidth(bandWidth *CpstBandWidth) *CpstGradeStandardValueBuilder {
	builder.bandWidth = bandWidth
	builder.bandWidthFlag = true
	return builder
}

// 标准值
//
// 示例值：12000
func (builder *CpstGradeStandardValueBuilder) StandardValue(standardValue string) *CpstGradeStandardValueBuilder {
	builder.standardValue = standardValue
	builder.standardValueFlag = true
	return builder
}

func (builder *CpstGradeStandardValueBuilder) Build() *CpstGradeStandardValue {
	req := &CpstGradeStandardValue{}
	if builder.referenceObjectFlag {
		req.ReferenceObject = builder.referenceObject
	}
	if builder.standardTypeFlag {
		req.StandardType = builder.standardType
	}
	if builder.bandWidthFlag {
		req.BandWidth = builder.bandWidth
	}
	if builder.standardValueFlag {
		req.StandardValue = &builder.standardValue

	}
	return req
}

type CpstI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文

	EnUs *string `json:"en_us,omitempty"` // 英文
}

type CpstI18nBuilder struct {
	zhCn     string // 中文
	zhCnFlag bool

	enUs     string // 英文
	enUsFlag bool
}

func NewCpstI18nBuilder() *CpstI18nBuilder {
	builder := &CpstI18nBuilder{}
	return builder
}

// 中文
//
// 示例值：中文名称
func (builder *CpstI18nBuilder) ZhCn(zhCn string) *CpstI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文
//
// 示例值：english name
func (builder *CpstI18nBuilder) EnUs(enUs string) *CpstI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *CpstI18nBuilder) Build() *CpstI18n {
	req := &CpstI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type CpstMatchItem struct {
	StandardId *string `json:"standard_id,omitempty"` // 薪资标准表ID

	Grade *CpstGrade `json:"grade,omitempty"` // 薪资等级

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间
}

type CpstMatchItemBuilder struct {
	standardId     string // 薪资标准表ID
	standardIdFlag bool

	grade     *CpstGrade // 薪资等级
	gradeFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool
}

func NewCpstMatchItemBuilder() *CpstMatchItemBuilder {
	builder := &CpstMatchItemBuilder{}
	return builder
}

// 薪资标准表ID
//
// 示例值：7174758593538295340
func (builder *CpstMatchItemBuilder) StandardId(standardId string) *CpstMatchItemBuilder {
	builder.standardId = standardId
	builder.standardIdFlag = true
	return builder
}

// 薪资等级
//
// 示例值：
func (builder *CpstMatchItemBuilder) Grade(grade *CpstGrade) *CpstMatchItemBuilder {
	builder.grade = grade
	builder.gradeFlag = true
	return builder
}

// 生效时间
//
// 示例值：1660924800000
func (builder *CpstMatchItemBuilder) EffectiveTime(effectiveTime string) *CpstMatchItemBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

func (builder *CpstMatchItemBuilder) Build() *CpstMatchItem {
	req := &CpstMatchItem{}
	if builder.standardIdFlag {
		req.StandardId = &builder.standardId

	}
	if builder.gradeFlag {
		req.Grade = builder.grade
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	return req
}

type CpstStandardType struct {
	ApiName *string `json:"api_name,omitempty"` // 薪资标准类型
}

type CpstStandardTypeBuilder struct {
	apiName     string // 薪资标准类型
	apiNameFlag bool
}

func NewCpstStandardTypeBuilder() *CpstStandardTypeBuilder {
	builder := &CpstStandardTypeBuilder{}
	return builder
}

// 薪资标准类型
//
// 示例值：standard_value
func (builder *CpstStandardTypeBuilder) ApiName(apiName string) *CpstStandardTypeBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

func (builder *CpstStandardTypeBuilder) Build() *CpstStandardType {
	req := &CpstStandardType{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	return req
}

type Currency struct {
	Id *string `json:"id,omitempty"` // 货币id

	CountryRegionId *string `json:"country_region_id,omitempty"` // 货币所属国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得

	CurrencyName []*I18n `json:"currency_name,omitempty"` // 货币名称

	NumericCode *int `json:"numeric_code,omitempty"` // 数字代码

	CurrencyAlpha3Code *string `json:"currency_alpha_3_code,omitempty"` // 三位字母代码

	CountryRegionIdList []string `json:"country_region_id_list,omitempty"` // 货币所属国家/地区 ID 列表，详细信息可通过[查询国家/地区信息]接口查询获得
}

type CurrencyBuilder struct {
	id     string // 货币id
	idFlag bool

	countryRegionId     string // 货币所属国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得
	countryRegionIdFlag bool

	currencyName     []*I18n // 货币名称
	currencyNameFlag bool

	numericCode     int // 数字代码
	numericCodeFlag bool

	currencyAlpha3Code     string // 三位字母代码
	currencyAlpha3CodeFlag bool

	countryRegionIdList     []string // 货币所属国家/地区 ID 列表，详细信息可通过[查询国家/地区信息]接口查询获得
	countryRegionIdListFlag bool
}

func NewCurrencyBuilder() *CurrencyBuilder {
	builder := &CurrencyBuilder{}
	return builder
}

// 货币id
//
// 示例值：1
func (builder *CurrencyBuilder) Id(id string) *CurrencyBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 货币所属国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得
//
// 示例值：12
func (builder *CurrencyBuilder) CountryRegionId(countryRegionId string) *CurrencyBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 货币名称
//
// 示例值：
func (builder *CurrencyBuilder) CurrencyName(currencyName []*I18n) *CurrencyBuilder {
	builder.currencyName = currencyName
	builder.currencyNameFlag = true
	return builder
}

// 数字代码
//
// 示例值：12
func (builder *CurrencyBuilder) NumericCode(numericCode int) *CurrencyBuilder {
	builder.numericCode = numericCode
	builder.numericCodeFlag = true
	return builder
}

// 三位字母代码
//
// 示例值：12
func (builder *CurrencyBuilder) CurrencyAlpha3Code(currencyAlpha3Code string) *CurrencyBuilder {
	builder.currencyAlpha3Code = currencyAlpha3Code
	builder.currencyAlpha3CodeFlag = true
	return builder
}

// 货币所属国家/地区 ID 列表，详细信息可通过[查询国家/地区信息]接口查询获得
//
// 示例值：
func (builder *CurrencyBuilder) CountryRegionIdList(countryRegionIdList []string) *CurrencyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

func (builder *CurrencyBuilder) Build() *Currency {
	req := &Currency{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.currencyNameFlag {
		req.CurrencyName = builder.currencyName
	}
	if builder.numericCodeFlag {
		req.NumericCode = &builder.numericCode

	}
	if builder.currencyAlpha3CodeFlag {
		req.CurrencyAlpha3Code = &builder.currencyAlpha3Code

	}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	return req
}

type CustomField struct {
	CustomApiName *string `json:"custom_api_name,omitempty"` // 自定义字段 apiname，即自定义字段的唯一标识

	Name *Name `json:"name,omitempty"` // 自定义字段名称

	Description *Name `json:"description,omitempty"` // 描述

	IsOpen *bool `json:"is_open,omitempty"` // 是否启用

	IsRequired *bool `json:"is_required,omitempty"` // 是否必填

	IsUnique *bool `json:"is_unique,omitempty"` // 是否唯一

	ObjectApiName *string `json:"object_api_name,omitempty"` // 所属对象 apiname

	Type *int `json:"type,omitempty"` // 自定义字段类型;;可选值有：;- 1：文本 Text;- 2：布尔 Boolean;- 3：数字 Number;- 4：枚举 Option;- 5：查找 Lookup;- 6：反向查找 BackLookup;- 7：自动编号 AutoNumber;- 8：日期时间 Date time;- 9：附件 Attachment;- 10：图片 Image;- 11：计算字段 Calculated

	CommonSchemaConfig *CommonSchemaConfig `json:"common_schema_config,omitempty"` // 配置信息，当前仅字段类型为「文本」、「布尔」、「数字」、「枚举」、「日期时间」、「附件」、「图片」时返回具体的配置信息，其余类型的自定义字段暂不返回

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，秒级时间戳

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间，秒级时间戳
}

type CustomFieldBuilder struct {
	customApiName     string // 自定义字段 apiname，即自定义字段的唯一标识
	customApiNameFlag bool

	name     *Name // 自定义字段名称
	nameFlag bool

	description     *Name // 描述
	descriptionFlag bool

	isOpen     bool // 是否启用
	isOpenFlag bool

	isRequired     bool // 是否必填
	isRequiredFlag bool

	isUnique     bool // 是否唯一
	isUniqueFlag bool

	objectApiName     string // 所属对象 apiname
	objectApiNameFlag bool

	type_    int // 自定义字段类型;;可选值有：;- 1：文本 Text;- 2：布尔 Boolean;- 3：数字 Number;- 4：枚举 Option;- 5：查找 Lookup;- 6：反向查找 BackLookup;- 7：自动编号 AutoNumber;- 8：日期时间 Date time;- 9：附件 Attachment;- 10：图片 Image;- 11：计算字段 Calculated
	typeFlag bool

	commonSchemaConfig     *CommonSchemaConfig // 配置信息，当前仅字段类型为「文本」、「布尔」、「数字」、「枚举」、「日期时间」、「附件」、「图片」时返回具体的配置信息，其余类型的自定义字段暂不返回
	commonSchemaConfigFlag bool

	createTime     string // 创建时间，秒级时间戳
	createTimeFlag bool

	updateTime     string // 更新时间，秒级时间戳
	updateTimeFlag bool
}

func NewCustomFieldBuilder() *CustomFieldBuilder {
	builder := &CustomFieldBuilder{}
	return builder
}

// 自定义字段 apiname，即自定义字段的唯一标识
//
// 示例值：custom_field_33
func (builder *CustomFieldBuilder) CustomApiName(customApiName string) *CustomFieldBuilder {
	builder.customApiName = customApiName
	builder.customApiNameFlag = true
	return builder
}

// 自定义字段名称
//
// 示例值：
func (builder *CustomFieldBuilder) Name(name *Name) *CustomFieldBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *CustomFieldBuilder) Description(description *Name) *CustomFieldBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *CustomFieldBuilder) IsOpen(isOpen bool) *CustomFieldBuilder {
	builder.isOpen = isOpen
	builder.isOpenFlag = true
	return builder
}

// 是否必填
//
// 示例值：true
func (builder *CustomFieldBuilder) IsRequired(isRequired bool) *CustomFieldBuilder {
	builder.isRequired = isRequired
	builder.isRequiredFlag = true
	return builder
}

// 是否唯一
//
// 示例值：true
func (builder *CustomFieldBuilder) IsUnique(isUnique bool) *CustomFieldBuilder {
	builder.isUnique = isUnique
	builder.isUniqueFlag = true
	return builder
}

// 所属对象 apiname
//
// 示例值：offboarding_info
func (builder *CustomFieldBuilder) ObjectApiName(objectApiName string) *CustomFieldBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 自定义字段类型;;可选值有：;- 1：文本 Text;- 2：布尔 Boolean;- 3：数字 Number;- 4：枚举 Option;- 5：查找 Lookup;- 6：反向查找 BackLookup;- 7：自动编号 AutoNumber;- 8：日期时间 Date time;- 9：附件 Attachment;- 10：图片 Image;- 11：计算字段 Calculated
//
// 示例值：1
func (builder *CustomFieldBuilder) Type(type_ int) *CustomFieldBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 配置信息，当前仅字段类型为「文本」、「布尔」、「数字」、「枚举」、「日期时间」、「附件」、「图片」时返回具体的配置信息，其余类型的自定义字段暂不返回
//
// 示例值：
func (builder *CustomFieldBuilder) CommonSchemaConfig(commonSchemaConfig *CommonSchemaConfig) *CustomFieldBuilder {
	builder.commonSchemaConfig = commonSchemaConfig
	builder.commonSchemaConfigFlag = true
	return builder
}

// 创建时间，秒级时间戳
//
// 示例值：1625542287
func (builder *CustomFieldBuilder) CreateTime(createTime string) *CustomFieldBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间，秒级时间戳
//
// 示例值：1625542639
func (builder *CustomFieldBuilder) UpdateTime(updateTime string) *CustomFieldBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

func (builder *CustomFieldBuilder) Build() *CustomField {
	req := &CustomField{}
	if builder.customApiNameFlag {
		req.CustomApiName = &builder.customApiName

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.isOpenFlag {
		req.IsOpen = &builder.isOpen

	}
	if builder.isRequiredFlag {
		req.IsRequired = &builder.isRequired

	}
	if builder.isUniqueFlag {
		req.IsUnique = &builder.isUnique

	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.commonSchemaConfigFlag {
		req.CommonSchemaConfig = builder.commonSchemaConfig
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	return req
}

type CustomFieldData struct {
	CustomApiName *string `json:"custom_api_name,omitempty"` // 自定义字段 apiname，即自定义字段的唯一标识

	Name *CustomName `json:"name,omitempty"` // 自定义字段名称

	Type *int `json:"type,omitempty"` // 自定义字段类型

	Value *string `json:"value,omitempty"` // 字段值，是 json 转义后的字符串，根据元数据定义不同，字段格式不同（如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05"）
}

type CustomFieldDataBuilder struct {
	customApiName     string // 自定义字段 apiname，即自定义字段的唯一标识
	customApiNameFlag bool

	name     *CustomName // 自定义字段名称
	nameFlag bool

	type_    int // 自定义字段类型
	typeFlag bool

	value     string // 字段值，是 json 转义后的字符串，根据元数据定义不同，字段格式不同（如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05"）
	valueFlag bool
}

func NewCustomFieldDataBuilder() *CustomFieldDataBuilder {
	builder := &CustomFieldDataBuilder{}
	return builder
}

// 自定义字段 apiname，即自定义字段的唯一标识
//
// 示例值：name
func (builder *CustomFieldDataBuilder) CustomApiName(customApiName string) *CustomFieldDataBuilder {
	builder.customApiName = customApiName
	builder.customApiNameFlag = true
	return builder
}

// 自定义字段名称
//
// 示例值：
func (builder *CustomFieldDataBuilder) Name(name *CustomName) *CustomFieldDataBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 自定义字段类型
//
// 示例值：1
func (builder *CustomFieldDataBuilder) Type(type_ int) *CustomFieldDataBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 字段值，是 json 转义后的字符串，根据元数据定义不同，字段格式不同（如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05"）
//
// 示例值："231"
func (builder *CustomFieldDataBuilder) Value(value string) *CustomFieldDataBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *CustomFieldDataBuilder) Build() *CustomFieldData {
	req := &CustomFieldData{}
	if builder.customApiNameFlag {
		req.CustomApiName = &builder.customApiName

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type CustomName struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文

	EnUs *string `json:"en_us,omitempty"` // 英文
}

type CustomNameBuilder struct {
	zhCn     string // 中文
	zhCnFlag bool

	enUs     string // 英文
	enUsFlag bool
}

func NewCustomNameBuilder() *CustomNameBuilder {
	builder := &CustomNameBuilder{}
	return builder
}

// 中文
//
// 示例值：自定义姓名
func (builder *CustomNameBuilder) ZhCn(zhCn string) *CustomNameBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文
//
// 示例值：Custom Name
func (builder *CustomNameBuilder) EnUs(enUs string) *CustomNameBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *CustomNameBuilder) Build() *CustomName {
	req := &CustomName{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type DateTimeFieldSetting struct {
	DateTimeType *int `json:"date_time_type,omitempty"` // 时间类型枚举，枚举值如下：;1. Date 日期，如 2020-01-01;2. Time  时间，如 11:52:00;3. Datetime 日期时间，如 2020-01-01 11:52:00;4. CusDatetime // timestamp 时间戳
}

type DateTimeFieldSettingBuilder struct {
	dateTimeType     int // 时间类型枚举，枚举值如下：;1. Date 日期，如 2020-01-01;2. Time  时间，如 11:52:00;3. Datetime 日期时间，如 2020-01-01 11:52:00;4. CusDatetime // timestamp 时间戳
	dateTimeTypeFlag bool
}

func NewDateTimeFieldSettingBuilder() *DateTimeFieldSettingBuilder {
	builder := &DateTimeFieldSettingBuilder{}
	return builder
}

// 时间类型枚举，枚举值如下：;1. Date 日期，如 2020-01-01;2. Time  时间，如 11:52:00;3. Datetime 日期时间，如 2020-01-01 11:52:00;4. CusDatetime // timestamp 时间戳
//
// 示例值：1
func (builder *DateTimeFieldSettingBuilder) DateTimeType(dateTimeType int) *DateTimeFieldSettingBuilder {
	builder.dateTimeType = dateTimeType
	builder.dateTimeTypeFlag = true
	return builder
}

func (builder *DateTimeFieldSettingBuilder) Build() *DateTimeFieldSetting {
	req := &DateTimeFieldSetting{}
	if builder.dateTimeTypeFlag {
		req.DateTimeType = &builder.dateTimeType

	}
	return req
}

type Department struct {
	Id *string `json:"id,omitempty"` // 部门 ID

	SubType *Enum `json:"sub_type,omitempty"` // 部门子类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)部门子类型（department_sub_type）枚举定义部分获得

	Manager *string `json:"manager,omitempty"` // 部门负责人 ID，枚举值及详细信息可通过【批量查询雇佣信息】接口查询获得

	IsConfidential *bool `json:"is_confidential,omitempty"` // 是否保密

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 层级关系，内层字段见实体

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心id

	StaffingModel *Enum `json:"staffing_model,omitempty"` // 是否使用职务
}

type DepartmentBuilder struct {
	id     string // 部门 ID
	idFlag bool

	subType     *Enum // 部门子类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)部门子类型（department_sub_type）枚举定义部分获得
	subTypeFlag bool

	manager     string // 部门负责人 ID，枚举值及详细信息可通过【批量查询雇佣信息】接口查询获得
	managerFlag bool

	isConfidential     bool // 是否保密
	isConfidentialFlag bool

	hiberarchyCommon     *HiberarchyCommon // 层级关系，内层字段见实体
	hiberarchyCommonFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	costCenterId     string // 成本中心id
	costCenterIdFlag bool

	staffingModel     *Enum // 是否使用职务
	staffingModelFlag bool
}

func NewDepartmentBuilder() *DepartmentBuilder {
	builder := &DepartmentBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：6969828847121885087
func (builder *DepartmentBuilder) Id(id string) *DepartmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 部门子类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)部门子类型（department_sub_type）枚举定义部分获得
//
// 示例值：
func (builder *DepartmentBuilder) SubType(subType *Enum) *DepartmentBuilder {
	builder.subType = subType
	builder.subTypeFlag = true
	return builder
}

// 部门负责人 ID，枚举值及详细信息可通过【批量查询雇佣信息】接口查询获得
//
// 示例值：6893013238632416776
func (builder *DepartmentBuilder) Manager(manager string) *DepartmentBuilder {
	builder.manager = manager
	builder.managerFlag = true
	return builder
}

// 是否保密
//
// 示例值：true
func (builder *DepartmentBuilder) IsConfidential(isConfidential bool) *DepartmentBuilder {
	builder.isConfidential = isConfidential
	builder.isConfidentialFlag = true
	return builder
}

// 层级关系，内层字段见实体
//
// 示例值：
func (builder *DepartmentBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *DepartmentBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *DepartmentBuilder) EffectiveTime(effectiveTime string) *DepartmentBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *DepartmentBuilder) ExpirationTime(expirationTime string) *DepartmentBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DepartmentBuilder) CustomFields(customFields []*ObjectFieldData) *DepartmentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 成本中心id
//
// 示例值：7142384817131652652
func (builder *DepartmentBuilder) CostCenterId(costCenterId string) *DepartmentBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 是否使用职务
//
// 示例值：
func (builder *DepartmentBuilder) StaffingModel(staffingModel *Enum) *DepartmentBuilder {
	builder.staffingModel = staffingModel
	builder.staffingModelFlag = true
	return builder
}

func (builder *DepartmentBuilder) Build() *Department {
	req := &Department{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.subTypeFlag {
		req.SubType = builder.subType
	}
	if builder.managerFlag {
		req.Manager = &builder.manager

	}
	if builder.isConfidentialFlag {
		req.IsConfidential = &builder.isConfidential

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.staffingModelFlag {
		req.StaffingModel = builder.staffingModel
	}
	return req
}

type DepartmentCreate struct {
	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	SubType *Enum `json:"sub_type,omitempty"` // 子类型

	Manager *string `json:"manager,omitempty"` // 部门负责人

	IsConfidential *bool `json:"is_confidential,omitempty"` // 是否保密

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 层级关系，内层字段见实体

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心id

	StaffingModel *Enum `json:"staffing_model,omitempty"` // 是否使用职务
}

type DepartmentCreateBuilder struct {
	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	subType     *Enum // 子类型
	subTypeFlag bool

	manager     string // 部门负责人
	managerFlag bool

	isConfidential     bool // 是否保密
	isConfidentialFlag bool

	hiberarchyCommon     *HiberarchyCommon // 层级关系，内层字段见实体
	hiberarchyCommonFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	costCenterId     string // 成本中心id
	costCenterIdFlag bool

	staffingModel     *Enum // 是否使用职务
	staffingModelFlag bool
}

func NewDepartmentCreateBuilder() *DepartmentCreateBuilder {
	builder := &DepartmentCreateBuilder{}
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：4719456877659520852
func (builder *DepartmentCreateBuilder) Id(id string) *DepartmentCreateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 子类型
//
// 示例值：
func (builder *DepartmentCreateBuilder) SubType(subType *Enum) *DepartmentCreateBuilder {
	builder.subType = subType
	builder.subTypeFlag = true
	return builder
}

// 部门负责人
//
// 示例值：6893013238632416776
func (builder *DepartmentCreateBuilder) Manager(manager string) *DepartmentCreateBuilder {
	builder.manager = manager
	builder.managerFlag = true
	return builder
}

// 是否保密
//
// 示例值：true
func (builder *DepartmentCreateBuilder) IsConfidential(isConfidential bool) *DepartmentCreateBuilder {
	builder.isConfidential = isConfidential
	builder.isConfidentialFlag = true
	return builder
}

// 层级关系，内层字段见实体
//
// 示例值：
func (builder *DepartmentCreateBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *DepartmentCreateBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *DepartmentCreateBuilder) EffectiveTime(effectiveTime string) *DepartmentCreateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *DepartmentCreateBuilder) ExpirationTime(expirationTime string) *DepartmentCreateBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DepartmentCreateBuilder) CustomFields(customFields []*ObjectFieldData) *DepartmentCreateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 成本中心id
//
// 示例值：7142384817131652652
func (builder *DepartmentCreateBuilder) CostCenterId(costCenterId string) *DepartmentCreateBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 是否使用职务
//
// 示例值：
func (builder *DepartmentCreateBuilder) StaffingModel(staffingModel *Enum) *DepartmentCreateBuilder {
	builder.staffingModel = staffingModel
	builder.staffingModelFlag = true
	return builder
}

func (builder *DepartmentCreateBuilder) Build() *DepartmentCreate {
	req := &DepartmentCreate{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.subTypeFlag {
		req.SubType = builder.subType
	}
	if builder.managerFlag {
		req.Manager = &builder.manager

	}
	if builder.isConfidentialFlag {
		req.IsConfidential = &builder.isConfidential

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.staffingModelFlag {
		req.StaffingModel = builder.staffingModel
	}
	return req
}

type DepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` //

	OpenDepartmentId *string `json:"open_department_id,omitempty"` //
}

type DepartmentIdBuilder struct {
	departmentId     string //
	departmentIdFlag bool

	openDepartmentId     string //
	openDepartmentIdFlag bool
}

func NewDepartmentIdBuilder() *DepartmentIdBuilder {
	builder := &DepartmentIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) DepartmentId(departmentId string) *DepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) OpenDepartmentId(openDepartmentId string) *DepartmentIdBuilder {
	builder.openDepartmentId = openDepartmentId
	builder.openDepartmentIdFlag = true
	return builder
}

func (builder *DepartmentIdBuilder) Build() *DepartmentId {
	req := &DepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.openDepartmentIdFlag {
		req.OpenDepartmentId = &builder.openDepartmentId

	}
	return req
}

type Dependent struct {
	Name *PersonName `json:"name,omitempty"` // 亲属姓名

	Relationship *Enum `json:"relationship,omitempty"` // 亲属关系，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)亲属关系（relationship）枚举定义获得

	Gender *Enum `json:"gender,omitempty"` // 亲属性别，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)性别（gender）枚举定义部分获得

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日

	NationalityId *string `json:"nationality_id,omitempty"` // 国籍

	NationalityIdV2 *string `json:"nationality_id_v2,omitempty"` // 国籍 ID，可通过【查询国籍信息】接口查询

	NationalIdList []*NationalId `json:"national_id_list,omitempty"` // 证件号码

	SpousesWorkingStatus *Enum `json:"spouses_working_status,omitempty"` // 配偶工作状态，比如working（在岗）、not_working（不在岗）

	IsThisPersonCoveredByHealthInsurance *bool `json:"is_this_person_covered_by_health_insurance,omitempty"` // 包含家属医疗保险

	IsThisPersonAllowedForTaxDeduction *bool `json:"is_this_person_allowed_for_tax_deduction,omitempty"` // 允许家属抵扣税款

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	DependentName *string `json:"dependent_name,omitempty"` // 家庭成员姓名

	Employer *string `json:"employer,omitempty"` // 工作单位

	Job *string `json:"job,omitempty"` // 岗位

	Phone *Phone `json:"phone,omitempty"` // 电话

	Address *Address `json:"address,omitempty"` // 联系地址

	BirthCertificateOfChild []*File `json:"birth_certificate_of_child,omitempty"` // 出生证明
}

type DependentBuilder struct {
	name     *PersonName // 亲属姓名
	nameFlag bool

	relationship     *Enum // 亲属关系，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)亲属关系（relationship）枚举定义获得
	relationshipFlag bool

	gender     *Enum // 亲属性别，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)性别（gender）枚举定义部分获得
	genderFlag bool

	dateOfBirth     string // 生日
	dateOfBirthFlag bool

	nationalityId     string // 国籍
	nationalityIdFlag bool

	nationalityIdV2     string // 国籍 ID，可通过【查询国籍信息】接口查询
	nationalityIdV2Flag bool

	nationalIdList     []*NationalId // 证件号码
	nationalIdListFlag bool

	spousesWorkingStatus     *Enum // 配偶工作状态，比如working（在岗）、not_working（不在岗）
	spousesWorkingStatusFlag bool

	isThisPersonCoveredByHealthInsurance     bool // 包含家属医疗保险
	isThisPersonCoveredByHealthInsuranceFlag bool

	isThisPersonAllowedForTaxDeduction     bool // 允许家属抵扣税款
	isThisPersonAllowedForTaxDeductionFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	dependentName     string // 家庭成员姓名
	dependentNameFlag bool

	employer     string // 工作单位
	employerFlag bool

	job     string // 岗位
	jobFlag bool

	phone     *Phone // 电话
	phoneFlag bool

	address     *Address // 联系地址
	addressFlag bool

	birthCertificateOfChild     []*File // 出生证明
	birthCertificateOfChildFlag bool
}

func NewDependentBuilder() *DependentBuilder {
	builder := &DependentBuilder{}
	return builder
}

// 亲属姓名
//
// 示例值：
func (builder *DependentBuilder) Name(name *PersonName) *DependentBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 亲属关系，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)亲属关系（relationship）枚举定义获得
//
// 示例值：
func (builder *DependentBuilder) Relationship(relationship *Enum) *DependentBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 亲属性别，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)性别（gender）枚举定义部分获得
//
// 示例值：
func (builder *DependentBuilder) Gender(gender *Enum) *DependentBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 生日
//
// 示例值：2020-01-01
func (builder *DependentBuilder) DateOfBirth(dateOfBirth string) *DependentBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 国籍
//
// 示例值：123456
func (builder *DependentBuilder) NationalityId(nationalityId string) *DependentBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 国籍 ID，可通过【查询国籍信息】接口查询
//
// 示例值：7075702734054164012
func (builder *DependentBuilder) NationalityIdV2(nationalityIdV2 string) *DependentBuilder {
	builder.nationalityIdV2 = nationalityIdV2
	builder.nationalityIdV2Flag = true
	return builder
}

// 证件号码
//
// 示例值：
func (builder *DependentBuilder) NationalIdList(nationalIdList []*NationalId) *DependentBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 配偶工作状态，比如working（在岗）、not_working（不在岗）
//
// 示例值：
func (builder *DependentBuilder) SpousesWorkingStatus(spousesWorkingStatus *Enum) *DependentBuilder {
	builder.spousesWorkingStatus = spousesWorkingStatus
	builder.spousesWorkingStatusFlag = true
	return builder
}

// 包含家属医疗保险
//
// 示例值：true
func (builder *DependentBuilder) IsThisPersonCoveredByHealthInsurance(isThisPersonCoveredByHealthInsurance bool) *DependentBuilder {
	builder.isThisPersonCoveredByHealthInsurance = isThisPersonCoveredByHealthInsurance
	builder.isThisPersonCoveredByHealthInsuranceFlag = true
	return builder
}

// 允许家属抵扣税款
//
// 示例值：false
func (builder *DependentBuilder) IsThisPersonAllowedForTaxDeduction(isThisPersonAllowedForTaxDeduction bool) *DependentBuilder {
	builder.isThisPersonAllowedForTaxDeduction = isThisPersonAllowedForTaxDeduction
	builder.isThisPersonAllowedForTaxDeductionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DependentBuilder) CustomFields(customFields []*ObjectFieldData) *DependentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 家庭成员姓名
//
// 示例值：张三
func (builder *DependentBuilder) DependentName(dependentName string) *DependentBuilder {
	builder.dependentName = dependentName
	builder.dependentNameFlag = true
	return builder
}

// 工作单位
//
// 示例值：海淀区交警大队
func (builder *DependentBuilder) Employer(employer string) *DependentBuilder {
	builder.employer = employer
	builder.employerFlag = true
	return builder
}

// 岗位
//
// 示例值：保安
func (builder *DependentBuilder) Job(job string) *DependentBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *DependentBuilder) Phone(phone *Phone) *DependentBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *DependentBuilder) Address(address *Address) *DependentBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 出生证明
//
// 示例值：
func (builder *DependentBuilder) BirthCertificateOfChild(birthCertificateOfChild []*File) *DependentBuilder {
	builder.birthCertificateOfChild = birthCertificateOfChild
	builder.birthCertificateOfChildFlag = true
	return builder
}

func (builder *DependentBuilder) Build() *Dependent {
	req := &Dependent{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.relationshipFlag {
		req.Relationship = builder.relationship
	}
	if builder.genderFlag {
		req.Gender = builder.gender
	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nationalityIdV2Flag {
		req.NationalityIdV2 = &builder.nationalityIdV2

	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.spousesWorkingStatusFlag {
		req.SpousesWorkingStatus = builder.spousesWorkingStatus
	}
	if builder.isThisPersonCoveredByHealthInsuranceFlag {
		req.IsThisPersonCoveredByHealthInsurance = &builder.isThisPersonCoveredByHealthInsurance

	}
	if builder.isThisPersonAllowedForTaxDeductionFlag {
		req.IsThisPersonAllowedForTaxDeduction = &builder.isThisPersonAllowedForTaxDeduction

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.dependentNameFlag {
		req.DependentName = &builder.dependentName

	}
	if builder.employerFlag {
		req.Employer = &builder.employer

	}
	if builder.jobFlag {
		req.Job = &builder.job

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.birthCertificateOfChildFlag {
		req.BirthCertificateOfChild = builder.birthCertificateOfChild
	}
	return req
}

type DimensionValue struct {
	ApiName *string `json:"api_name,omitempty"` // 管理维度名称 eg. department（部门）、job_family(序列) 更多可以去元数据平台搜索cpst_management_dimension

	ValueList []string `json:"value_list,omitempty"` // 值列表 例如部门ID
}

type DimensionValueBuilder struct {
	apiName     string // 管理维度名称 eg. department（部门）、job_family(序列) 更多可以去元数据平台搜索cpst_management_dimension
	apiNameFlag bool

	valueList     []string // 值列表 例如部门ID
	valueListFlag bool
}

func NewDimensionValueBuilder() *DimensionValueBuilder {
	builder := &DimensionValueBuilder{}
	return builder
}

// 管理维度名称 eg. department（部门）、job_family(序列) 更多可以去元数据平台搜索cpst_management_dimension
//
// 示例值：department
func (builder *DimensionValueBuilder) ApiName(apiName string) *DimensionValueBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 值列表 例如部门ID
//
// 示例值：
func (builder *DimensionValueBuilder) ValueList(valueList []string) *DimensionValueBuilder {
	builder.valueList = valueList
	builder.valueListFlag = true
	return builder
}

func (builder *DimensionValueBuilder) Build() *DimensionValue {
	req := &DimensionValue{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.valueListFlag {
		req.ValueList = builder.valueList
	}
	return req
}

type Education struct {
	School []*I18n `json:"school,omitempty"` // 学校

	LevelOfEducation *Enum `json:"level_of_education,omitempty"` // 学历，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)学历（level_of_education）枚举定义获得

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	FieldOfStudy []*I18n `json:"field_of_study,omitempty"` // 专业

	Degree *Enum `json:"degree,omitempty"` // 学位，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)学位（degree）枚举定义获得

	SchoolName *Enum `json:"school_name,omitempty"` // 学校名称

	FieldOfStudyName *Enum `json:"field_of_study_name,omitempty"` // 专业名称

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家地区ID

	ExpectedEndDate *string `json:"expected_end_date,omitempty"` // 预期结束日期

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EducationBuilder struct {
	school     []*I18n // 学校
	schoolFlag bool

	levelOfEducation     *Enum // 学历，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)学历（level_of_education）枚举定义获得
	levelOfEducationFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	fieldOfStudy     []*I18n // 专业
	fieldOfStudyFlag bool

	degree     *Enum // 学位，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)学位（degree）枚举定义获得
	degreeFlag bool

	schoolName     *Enum // 学校名称
	schoolNameFlag bool

	fieldOfStudyName     *Enum // 专业名称
	fieldOfStudyNameFlag bool

	countryRegionId     string // 国家地区ID
	countryRegionIdFlag bool

	expectedEndDate     string // 预期结束日期
	expectedEndDateFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEducationBuilder() *EducationBuilder {
	builder := &EducationBuilder{}
	return builder
}

// 学校
//
// 示例值：
func (builder *EducationBuilder) School(school []*I18n) *EducationBuilder {
	builder.school = school
	builder.schoolFlag = true
	return builder
}

// 学历，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)学历（level_of_education）枚举定义获得
//
// 示例值：
func (builder *EducationBuilder) LevelOfEducation(levelOfEducation *Enum) *EducationBuilder {
	builder.levelOfEducation = levelOfEducation
	builder.levelOfEducationFlag = true
	return builder
}

// 开始日期
//
// 示例值：2011-09-01
func (builder *EducationBuilder) StartDate(startDate string) *EducationBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2015-06-30
func (builder *EducationBuilder) EndDate(endDate string) *EducationBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 专业
//
// 示例值：
func (builder *EducationBuilder) FieldOfStudy(fieldOfStudy []*I18n) *EducationBuilder {
	builder.fieldOfStudy = fieldOfStudy
	builder.fieldOfStudyFlag = true
	return builder
}

// 学位，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)学位（degree）枚举定义获得
//
// 示例值：
func (builder *EducationBuilder) Degree(degree *Enum) *EducationBuilder {
	builder.degree = degree
	builder.degreeFlag = true
	return builder
}

// 学校名称
//
// 示例值：
func (builder *EducationBuilder) SchoolName(schoolName *Enum) *EducationBuilder {
	builder.schoolName = schoolName
	builder.schoolNameFlag = true
	return builder
}

// 专业名称
//
// 示例值：
func (builder *EducationBuilder) FieldOfStudyName(fieldOfStudyName *Enum) *EducationBuilder {
	builder.fieldOfStudyName = fieldOfStudyName
	builder.fieldOfStudyNameFlag = true
	return builder
}

// 国家地区ID
//
// 示例值：1
func (builder *EducationBuilder) CountryRegionId(countryRegionId string) *EducationBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 预期结束日期
//
// 示例值：2011-09-01
func (builder *EducationBuilder) ExpectedEndDate(expectedEndDate string) *EducationBuilder {
	builder.expectedEndDate = expectedEndDate
	builder.expectedEndDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EducationBuilder) CustomFields(customFields []*ObjectFieldData) *EducationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EducationBuilder) Build() *Education {
	req := &Education{}
	if builder.schoolFlag {
		req.School = builder.school
	}
	if builder.levelOfEducationFlag {
		req.LevelOfEducation = builder.levelOfEducation
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.fieldOfStudyFlag {
		req.FieldOfStudy = builder.fieldOfStudy
	}
	if builder.degreeFlag {
		req.Degree = builder.degree
	}
	if builder.schoolNameFlag {
		req.SchoolName = builder.schoolName
	}
	if builder.fieldOfStudyNameFlag {
		req.FieldOfStudyName = builder.fieldOfStudyName
	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.expectedEndDateFlag {
		req.ExpectedEndDate = &builder.expectedEndDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Email struct {
	Email *string `json:"email,omitempty"` // 邮箱号

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否为主要邮箱

	IsPublic *bool `json:"is_public,omitempty"` // 是否为公开邮箱

	EmailUsage *Enum `json:"email_usage,omitempty"` // 邮箱用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)邮箱用途（email_usage）枚举定义获得

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmailBuilder struct {
	email     string // 邮箱号
	emailFlag bool

	isPrimary     bool // 是否为主要邮箱
	isPrimaryFlag bool

	isPublic     bool // 是否为公开邮箱
	isPublicFlag bool

	emailUsage     *Enum // 邮箱用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)邮箱用途（email_usage）枚举定义获得
	emailUsageFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmailBuilder() *EmailBuilder {
	builder := &EmailBuilder{}
	return builder
}

// 邮箱号
//
// 示例值：12456@test.com
func (builder *EmailBuilder) Email(email string) *EmailBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 是否为主要邮箱
//
// 示例值：true
func (builder *EmailBuilder) IsPrimary(isPrimary bool) *EmailBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否为公开邮箱
//
// 示例值：true
func (builder *EmailBuilder) IsPublic(isPublic bool) *EmailBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 邮箱用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)邮箱用途（email_usage）枚举定义获得
//
// 示例值：
func (builder *EmailBuilder) EmailUsage(emailUsage *Enum) *EmailBuilder {
	builder.emailUsage = emailUsage
	builder.emailUsageFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmailBuilder) CustomFields(customFields []*ObjectFieldData) *EmailBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmailBuilder) Build() *Email {
	req := &Email{}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.emailUsageFlag {
		req.EmailUsage = builder.emailUsage
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EmergencyContact struct {
	Name *PersonName `json:"name,omitempty"` // 紧急联系人姓名

	Relationship *Enum `json:"relationship,omitempty"` // 紧急联系人与本人亲属关系，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)亲属关系（relationship）枚举定义获得

	PhoneIst []*Phone `json:"phone_ist,omitempty"` // 紧急联系人电话

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	LegalName *string `json:"legal_name,omitempty"` // 法定姓名
}

type EmergencyContactBuilder struct {
	name     *PersonName // 紧急联系人姓名
	nameFlag bool

	relationship     *Enum // 紧急联系人与本人亲属关系，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)亲属关系（relationship）枚举定义获得
	relationshipFlag bool

	phoneIst     []*Phone // 紧急联系人电话
	phoneIstFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	legalName     string // 法定姓名
	legalNameFlag bool
}

func NewEmergencyContactBuilder() *EmergencyContactBuilder {
	builder := &EmergencyContactBuilder{}
	return builder
}

// 紧急联系人姓名
//
// 示例值：
func (builder *EmergencyContactBuilder) Name(name *PersonName) *EmergencyContactBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 紧急联系人与本人亲属关系，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)亲属关系（relationship）枚举定义获得
//
// 示例值：
func (builder *EmergencyContactBuilder) Relationship(relationship *Enum) *EmergencyContactBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 紧急联系人电话
//
// 示例值：
func (builder *EmergencyContactBuilder) PhoneIst(phoneIst []*Phone) *EmergencyContactBuilder {
	builder.phoneIst = phoneIst
	builder.phoneIstFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmergencyContactBuilder) CustomFields(customFields []*ObjectFieldData) *EmergencyContactBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 法定姓名
//
// 示例值：张三
func (builder *EmergencyContactBuilder) LegalName(legalName string) *EmergencyContactBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

func (builder *EmergencyContactBuilder) Build() *EmergencyContact {
	req := &EmergencyContact{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.relationshipFlag {
		req.Relationship = builder.relationship
	}
	if builder.phoneIstFlag {
		req.PhoneIst = builder.phoneIst
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	return req
}

type EmployeeDateType struct {
	Date *string `json:"date,omitempty"` // 日期

	DateType *int `json:"date_type,omitempty"` // 日期类型,1=工作日;2=休息日;3=节假日
}

type EmployeeDateTypeBuilder struct {
	date     string // 日期
	dateFlag bool

	dateType     int // 日期类型,1=工作日;2=休息日;3=节假日
	dateTypeFlag bool
}

func NewEmployeeDateTypeBuilder() *EmployeeDateTypeBuilder {
	builder := &EmployeeDateTypeBuilder{}
	return builder
}

// 日期
//
// 示例值：2023-07-18
func (builder *EmployeeDateTypeBuilder) Date(date string) *EmployeeDateTypeBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 日期类型,1=工作日;2=休息日;3=节假日
//
// 示例值：1
func (builder *EmployeeDateTypeBuilder) DateType(dateType int) *EmployeeDateTypeBuilder {
	builder.dateType = dateType
	builder.dateTypeFlag = true
	return builder
}

func (builder *EmployeeDateTypeBuilder) Build() *EmployeeDateType {
	req := &EmployeeDateType{}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.dateTypeFlag {
		req.DateType = &builder.dateType

	}
	return req
}

type EmployeeType struct {
	Id *string `json:"id,omitempty"` // 雇员类型ID

	Name []*I18n `json:"name,omitempty"` // 名称

	DefaultEmployeeType *bool `json:"default_employee_type,omitempty"` // 是否为默认人员类型，每个租户只能定义一个默认人员类型

	Active *bool `json:"active,omitempty"` // 启用

	Code *string `json:"code,omitempty"` // 编码

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmployeeTypeBuilder struct {
	id     string // 雇员类型ID
	idFlag bool

	name     []*I18n // 名称
	nameFlag bool

	defaultEmployeeType     bool // 是否为默认人员类型，每个租户只能定义一个默认人员类型
	defaultEmployeeTypeFlag bool

	active     bool // 启用
	activeFlag bool

	code     string // 编码
	codeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmployeeTypeBuilder() *EmployeeTypeBuilder {
	builder := &EmployeeTypeBuilder{}
	return builder
}

// 雇员类型ID
//
// 示例值：6919732473504990727
func (builder *EmployeeTypeBuilder) Id(id string) *EmployeeTypeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *EmployeeTypeBuilder) Name(name []*I18n) *EmployeeTypeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否为默认人员类型，每个租户只能定义一个默认人员类型
//
// 示例值：true
func (builder *EmployeeTypeBuilder) DefaultEmployeeType(defaultEmployeeType bool) *EmployeeTypeBuilder {
	builder.defaultEmployeeType = defaultEmployeeType
	builder.defaultEmployeeTypeFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *EmployeeTypeBuilder) Active(active bool) *EmployeeTypeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 编码
//
// 示例值：1245
func (builder *EmployeeTypeBuilder) Code(code string) *EmployeeTypeBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmployeeTypeBuilder) CustomFields(customFields []*ObjectFieldData) *EmployeeTypeBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmployeeTypeBuilder) Build() *EmployeeType {
	req := &EmployeeType{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.defaultEmployeeTypeFlag {
		req.DefaultEmployeeType = &builder.defaultEmployeeType

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Employment struct {
	PrehireId *string `json:"prehire_id,omitempty"` // 待入职ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型

	Tenure *string `json:"tenure,omitempty"` // 司龄

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，详细信息可通过【查询单个部门】接口获得

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，详细信息可通过【查询单个职务级别】接口获得

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，详细信息可通过【查询单个地点】接口获得

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID，详细信息可通过【查询单个职务序列】接口获得

	JobId *string `json:"job_id,omitempty"` // 职务 ID，详细信息可通过【查询单个职务】接口获得

	CompanyId *string `json:"company_id,omitempty"` // 法人主体 ID，详细信息可通过【查询单个公司】接口获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，详细信息可通过【查询单个工时制度】接口获得

	Id *string `json:"id,omitempty"` // 雇员ID

	SeniorityDate *string `json:"seniority_date,omitempty"` // 资历起算日期

	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工编号

	EffectiveTime *string `json:"effective_time,omitempty"` // 入职日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”

	EmploymentType *Enum `json:"employment_type,omitempty"` // 雇佣类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)雇佣类型（employment_type）枚举定义获得

	PersonId *string `json:"person_id,omitempty"` // 个人信息 ID，详细信息可通过【查询单个个人信息】接口获得

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长（月份）

	OnProbation *string `json:"on_probation,omitempty"` // 是否在试用期中;- 满足以下任一条件时，该字段值为`"true"`：;  - 预计试用结束日期非空，且实际结束日期为空;  - 预计试用结束日期非空，实际结束日期非空，且当日日期小于等于实际结束日期;- 其余情况下，该字段值为`"false"`；

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期（实际结束日期）

	PrimaryEmployment *bool `json:"primary_employment,omitempty"` // 是否是主雇佣信息

	ConditionWorker *bool `json:"condition_worker,omitempty"` // 是否是外部人员

	EmploymentStatus *Enum `json:"employment_status,omitempty"` // 雇员状态，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)雇员状态（employment_status）枚举定义获得

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	WorkEmailList []*Email `json:"work_email_list,omitempty"` // 工作邮箱列表，只有当邮箱下面所有条件时，才在个人信息页面可见： ;- is_primary = "true";- is_public = "true";- email_usage = "work"

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱

	ReasonForOffboarding *Enum `json:"reason_for_offboarding,omitempty"` // 离职原因，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)离职原因（reason_for_offboarding）枚举定义部分获得

	CostCenterList []*JobDataCostCenter `json:"cost_center_list,omitempty"` // 成本中心id列表

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘应用 ID

	Rehire *Enum `json:"rehire,omitempty"` // 是否离职重聘

	RehireEmploymentId *string `json:"rehire_employment_id,omitempty"` // 历史雇佣信息 ID，可以通过【查询单个雇佣信息】查询详细信息

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型
}

type EmploymentBuilder struct {
	prehireId     string // 待入职ID
	prehireIdFlag bool

	employeeTypeId     string // 人员类型
	employeeTypeIdFlag bool

	tenure     string // 司龄
	tenureFlag bool

	departmentId     string // 部门 ID，详细信息可通过【查询单个部门】接口获得
	departmentIdFlag bool

	jobLevelId     string // 职级 ID，详细信息可通过【查询单个职务级别】接口获得
	jobLevelIdFlag bool

	workLocationId     string // 工作地点 ID，详细信息可通过【查询单个地点】接口获得
	workLocationIdFlag bool

	jobFamilyId     string // 序列 ID，详细信息可通过【查询单个职务序列】接口获得
	jobFamilyIdFlag bool

	jobId     string // 职务 ID，详细信息可通过【查询单个职务】接口获得
	jobIdFlag bool

	companyId     string // 法人主体 ID，详细信息可通过【查询单个公司】接口获得
	companyIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，详细信息可通过【查询单个工时制度】接口获得
	workingHoursTypeIdFlag bool

	id     string // 雇员ID
	idFlag bool

	seniorityDate     string // 资历起算日期
	seniorityDateFlag bool

	employeeNumber     string // 员工编号
	employeeNumberFlag bool

	effectiveTime     string // 入职日期
	effectiveTimeFlag bool

	expirationTime     string // 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
	expirationTimeFlag bool

	employmentType     *Enum // 雇佣类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)雇佣类型（employment_type）枚举定义获得
	employmentTypeFlag bool

	personId     string // 个人信息 ID，详细信息可通过【查询单个个人信息】接口获得
	personIdFlag bool

	probationPeriod     int // 试用期时长（月份）
	probationPeriodFlag bool

	onProbation     string // 是否在试用期中;- 满足以下任一条件时，该字段值为`"true"`：;  - 预计试用结束日期非空，且实际结束日期为空;  - 预计试用结束日期非空，实际结束日期非空，且当日日期小于等于实际结束日期;- 其余情况下，该字段值为`"false"`；
	onProbationFlag bool

	probationEndDate     string // 试用期结束日期（实际结束日期）
	probationEndDateFlag bool

	primaryEmployment     bool // 是否是主雇佣信息
	primaryEmploymentFlag bool

	conditionWorker     bool // 是否是外部人员
	conditionWorkerFlag bool

	employmentStatus     *Enum // 雇员状态，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)雇员状态（employment_status）枚举定义获得
	employmentStatusFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	workEmailList     []*Email // 工作邮箱列表，只有当邮箱下面所有条件时，才在个人信息页面可见： ;- is_primary = "true";- is_public = "true";- email_usage = "work"
	workEmailListFlag bool

	emailAddress     string // 邮箱
	emailAddressFlag bool

	reasonForOffboarding     *Enum // 离职原因，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)离职原因（reason_for_offboarding）枚举定义部分获得
	reasonForOffboardingFlag bool

	costCenterList     []*JobDataCostCenter // 成本中心id列表
	costCenterListFlag bool

	atsApplicationId     string // 招聘应用 ID
	atsApplicationIdFlag bool

	rehire     *Enum // 是否离职重聘
	rehireFlag bool

	rehireEmploymentId     string // 历史雇佣信息 ID，可以通过【查询单个雇佣信息】查询详细信息
	rehireEmploymentIdFlag bool

	serviceCompany     string // 任职公司
	serviceCompanyFlag bool

	compensationType     *Enum // 薪资类型
	compensationTypeFlag bool

	workShift     *Enum // 排班类型
	workShiftFlag bool
}

func NewEmploymentBuilder() *EmploymentBuilder {
	builder := &EmploymentBuilder{}
	return builder
}

// 待入职ID
//
// 示例值：1
func (builder *EmploymentBuilder) PrehireId(prehireId string) *EmploymentBuilder {
	builder.prehireId = prehireId
	builder.prehireIdFlag = true
	return builder
}

// 人员类型
//
// 示例值：1
func (builder *EmploymentBuilder) EmployeeTypeId(employeeTypeId string) *EmploymentBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 司龄
//
// 示例值：1
func (builder *EmploymentBuilder) Tenure(tenure string) *EmploymentBuilder {
	builder.tenure = tenure
	builder.tenureFlag = true
	return builder
}

// 部门 ID，详细信息可通过【查询单个部门】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) DepartmentId(departmentId string) *EmploymentBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职级 ID，详细信息可通过【查询单个职务级别】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) JobLevelId(jobLevelId string) *EmploymentBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 工作地点 ID，详细信息可通过【查询单个地点】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) WorkLocationId(workLocationId string) *EmploymentBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 序列 ID，详细信息可通过【查询单个职务序列】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) JobFamilyId(jobFamilyId string) *EmploymentBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职务 ID，详细信息可通过【查询单个职务】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) JobId(jobId string) *EmploymentBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 法人主体 ID，详细信息可通过【查询单个公司】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) CompanyId(companyId string) *EmploymentBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 工时制度 ID，详细信息可通过【查询单个工时制度】接口获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmploymentBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 雇员ID
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) Id(id string) *EmploymentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 资历起算日期
//
// 示例值：2020-01-01
func (builder *EmploymentBuilder) SeniorityDate(seniorityDate string) *EmploymentBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 员工编号
//
// 示例值：1000000
func (builder *EmploymentBuilder) EmployeeNumber(employeeNumber string) *EmploymentBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 入职日期
//
// 示例值：2020-01-01 00:00:00
func (builder *EmploymentBuilder) EffectiveTime(effectiveTime string) *EmploymentBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
//
// 示例值：2021-01-01 00:00:00
func (builder *EmploymentBuilder) ExpirationTime(expirationTime string) *EmploymentBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 雇佣类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)雇佣类型（employment_type）枚举定义获得
//
// 示例值：
func (builder *EmploymentBuilder) EmploymentType(employmentType *Enum) *EmploymentBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 个人信息 ID，详细信息可通过【查询单个个人信息】接口获得
//
// 示例值：6919733936050406926
func (builder *EmploymentBuilder) PersonId(personId string) *EmploymentBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 试用期时长（月份）
//
// 示例值：9999
func (builder *EmploymentBuilder) ProbationPeriod(probationPeriod int) *EmploymentBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 是否在试用期中;- 满足以下任一条件时，该字段值为`"true"`：;  - 预计试用结束日期非空，且实际结束日期为空;  - 预计试用结束日期非空，实际结束日期非空，且当日日期小于等于实际结束日期;- 其余情况下，该字段值为`"false"`；
//
// 示例值：true
func (builder *EmploymentBuilder) OnProbation(onProbation string) *EmploymentBuilder {
	builder.onProbation = onProbation
	builder.onProbationFlag = true
	return builder
}

// 试用期结束日期（实际结束日期）
//
// 示例值：2022-01-01
func (builder *EmploymentBuilder) ProbationEndDate(probationEndDate string) *EmploymentBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 是否是主雇佣信息
//
// 示例值：true
func (builder *EmploymentBuilder) PrimaryEmployment(primaryEmployment bool) *EmploymentBuilder {
	builder.primaryEmployment = primaryEmployment
	builder.primaryEmploymentFlag = true
	return builder
}

// 是否是外部人员
//
// 示例值：true
func (builder *EmploymentBuilder) ConditionWorker(conditionWorker bool) *EmploymentBuilder {
	builder.conditionWorker = conditionWorker
	builder.conditionWorkerFlag = true
	return builder
}

// 雇员状态，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)雇员状态（employment_status）枚举定义获得
//
// 示例值：
func (builder *EmploymentBuilder) EmploymentStatus(employmentStatus *Enum) *EmploymentBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmploymentBuilder) CustomFields(customFields []*ObjectFieldData) *EmploymentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 工作邮箱列表，只有当邮箱下面所有条件时，才在个人信息页面可见： ;- is_primary = "true";- is_public = "true";- email_usage = "work"
//
// 示例值：
func (builder *EmploymentBuilder) WorkEmailList(workEmailList []*Email) *EmploymentBuilder {
	builder.workEmailList = workEmailList
	builder.workEmailListFlag = true
	return builder
}

// 邮箱
//
// 示例值：test@163.com
func (builder *EmploymentBuilder) EmailAddress(emailAddress string) *EmploymentBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 离职原因，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)离职原因（reason_for_offboarding）枚举定义部分获得
//
// 示例值：
func (builder *EmploymentBuilder) ReasonForOffboarding(reasonForOffboarding *Enum) *EmploymentBuilder {
	builder.reasonForOffboarding = reasonForOffboarding
	builder.reasonForOffboardingFlag = true
	return builder
}

// 成本中心id列表
//
// 示例值：
func (builder *EmploymentBuilder) CostCenterList(costCenterList []*JobDataCostCenter) *EmploymentBuilder {
	builder.costCenterList = costCenterList
	builder.costCenterListFlag = true
	return builder
}

// 招聘应用 ID
//
// 示例值：6838119494196871234
func (builder *EmploymentBuilder) AtsApplicationId(atsApplicationId string) *EmploymentBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 是否离职重聘
//
// 示例值：
func (builder *EmploymentBuilder) Rehire(rehire *Enum) *EmploymentBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 历史雇佣信息 ID，可以通过【查询单个雇佣信息】查询详细信息
//
// 示例值：7174374910734141111
func (builder *EmploymentBuilder) RehireEmploymentId(rehireEmploymentId string) *EmploymentBuilder {
	builder.rehireEmploymentId = rehireEmploymentId
	builder.rehireEmploymentIdFlag = true
	return builder
}

// 任职公司
//
// 示例值：7174374910734141112
func (builder *EmploymentBuilder) ServiceCompany(serviceCompany string) *EmploymentBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 薪资类型
//
// 示例值：
func (builder *EmploymentBuilder) CompensationType(compensationType *Enum) *EmploymentBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 排班类型
//
// 示例值：
func (builder *EmploymentBuilder) WorkShift(workShift *Enum) *EmploymentBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

func (builder *EmploymentBuilder) Build() *Employment {
	req := &Employment{}
	if builder.prehireIdFlag {
		req.PrehireId = &builder.prehireId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.tenureFlag {
		req.Tenure = &builder.tenure

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = builder.employmentType
	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.onProbationFlag {
		req.OnProbation = &builder.onProbation

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.primaryEmploymentFlag {
		req.PrimaryEmployment = &builder.primaryEmployment

	}
	if builder.conditionWorkerFlag {
		req.ConditionWorker = &builder.conditionWorker

	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = builder.employmentStatus
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.workEmailListFlag {
		req.WorkEmailList = builder.workEmailList
	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.reasonForOffboardingFlag {
		req.ReasonForOffboarding = builder.reasonForOffboarding
	}
	if builder.costCenterListFlag {
		req.CostCenterList = builder.costCenterList
	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.rehireFlag {
		req.Rehire = builder.rehire
	}
	if builder.rehireEmploymentIdFlag {
		req.RehireEmploymentId = &builder.rehireEmploymentId

	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	return req
}

type EmploymentCostCenter struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	CostCenter []*CostCenter `json:"cost_center,omitempty"` // 自定义字段
}

type EmploymentCostCenterBuilder struct {
	employmentId     string // 雇员ID
	employmentIdFlag bool

	costCenter     []*CostCenter // 自定义字段
	costCenterFlag bool
}

func NewEmploymentCostCenterBuilder() *EmploymentCostCenterBuilder {
	builder := &EmploymentCostCenterBuilder{}
	return builder
}

// 雇员ID
//
// 示例值：6950635856373745165
func (builder *EmploymentCostCenterBuilder) EmploymentId(employmentId string) *EmploymentCostCenterBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmploymentCostCenterBuilder) CostCenter(costCenter []*CostCenter) *EmploymentCostCenterBuilder {
	builder.costCenter = costCenter
	builder.costCenterFlag = true
	return builder
}

func (builder *EmploymentCostCenterBuilder) Build() *EmploymentCostCenter {
	req := &EmploymentCostCenter{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.costCenterFlag {
		req.CostCenter = builder.costCenter
	}
	return req
}

type EmploymentCreate struct {
	PrehireId *string `json:"prehire_id,omitempty"` // 待入职ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型

	Tenure *string `json:"tenure,omitempty"` // 司龄

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得

	JobFamilyId *string `json:"job_family_id,omitempty"` // 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得

	JobId *string `json:"job_id,omitempty"` // 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得

	CompanyId *string `json:"company_id,omitempty"` // 法人主体 ID，枚举值及详细信息可通过【批量查询公司】接口查询获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得

	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	SeniorityDate *string `json:"seniority_date,omitempty"` // 资历起算日期

	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工编号

	EffectiveTime *string `json:"effective_time,omitempty"` // 入职日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 离职日期

	EmploymentType *Enum `json:"employment_type,omitempty"` // 雇佣类型

	PersonId *string `json:"person_id,omitempty"` // 人员信息，引用Person的ID

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长

	OnProbation *string `json:"on_probation,omitempty"` // 是否在试用期中

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期

	PrimaryEmployment *bool `json:"primary_employment,omitempty"` // 是否是主雇佣信息

	EmploymentStatus *Enum `json:"employment_status,omitempty"` // 雇员状态

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	WorkEmailList []*Email `json:"work_email_list,omitempty"` // 工作邮箱列表，只有当邮箱下面所有条件时，才在个人信息页面可见： ;- is_primary = "true";- is_public = "true";- email_usage = "work"

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱

	ReasonForOffboarding *Enum `json:"reason_for_offboarding,omitempty"` // 离职原因

	CostCenterList []*JobDataCostCenter `json:"cost_center_list,omitempty"` // 成本中心id列表

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘应用 ID

	Rehire *Enum `json:"rehire,omitempty"` // 是否离职重聘

	RehireEmploymentId *string `json:"rehire_employment_id,omitempty"` // 历史雇佣信息 ID
}

type EmploymentCreateBuilder struct {
	prehireId     string // 待入职ID
	prehireIdFlag bool

	employeeTypeId     string // 人员类型
	employeeTypeIdFlag bool

	tenure     string // 司龄
	tenureFlag bool

	departmentId     string // 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得
	departmentIdFlag bool

	jobLevelId     string // 职级 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
	jobLevelIdFlag bool

	workLocationId     string // 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得
	workLocationIdFlag bool

	jobFamilyId     string // 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
	jobFamilyIdFlag bool

	jobId     string // 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得
	jobIdFlag bool

	companyId     string // 法人主体 ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
	companyIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
	workingHoursTypeIdFlag bool

	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	seniorityDate     string // 资历起算日期
	seniorityDateFlag bool

	employeeNumber     string // 员工编号
	employeeNumberFlag bool

	effectiveTime     string // 入职日期
	effectiveTimeFlag bool

	expirationTime     string // 离职日期
	expirationTimeFlag bool

	employmentType     *Enum // 雇佣类型
	employmentTypeFlag bool

	personId     string // 人员信息，引用Person的ID
	personIdFlag bool

	probationPeriod     int // 试用期时长
	probationPeriodFlag bool

	onProbation     string // 是否在试用期中
	onProbationFlag bool

	probationEndDate     string // 试用期结束日期
	probationEndDateFlag bool

	primaryEmployment     bool // 是否是主雇佣信息
	primaryEmploymentFlag bool

	employmentStatus     *Enum // 雇员状态
	employmentStatusFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	workEmailList     []*Email // 工作邮箱列表，只有当邮箱下面所有条件时，才在个人信息页面可见： ;- is_primary = "true";- is_public = "true";- email_usage = "work"
	workEmailListFlag bool

	emailAddress     string // 邮箱
	emailAddressFlag bool

	reasonForOffboarding     *Enum // 离职原因
	reasonForOffboardingFlag bool

	costCenterList     []*JobDataCostCenter // 成本中心id列表
	costCenterListFlag bool

	atsApplicationId     string // 招聘应用 ID
	atsApplicationIdFlag bool

	rehire     *Enum // 是否离职重聘
	rehireFlag bool

	rehireEmploymentId     string // 历史雇佣信息 ID
	rehireEmploymentIdFlag bool
}

func NewEmploymentCreateBuilder() *EmploymentCreateBuilder {
	builder := &EmploymentCreateBuilder{}
	return builder
}

// 待入职ID
//
// 示例值：1
func (builder *EmploymentCreateBuilder) PrehireId(prehireId string) *EmploymentCreateBuilder {
	builder.prehireId = prehireId
	builder.prehireIdFlag = true
	return builder
}

// 人员类型
//
// 示例值：1
func (builder *EmploymentCreateBuilder) EmployeeTypeId(employeeTypeId string) *EmploymentCreateBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 司龄
//
// 示例值：1
func (builder *EmploymentCreateBuilder) Tenure(tenure string) *EmploymentCreateBuilder {
	builder.tenure = tenure
	builder.tenureFlag = true
	return builder
}

// 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) DepartmentId(departmentId string) *EmploymentCreateBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职级 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) JobLevelId(jobLevelId string) *EmploymentCreateBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) WorkLocationId(workLocationId string) *EmploymentCreateBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) JobFamilyId(jobFamilyId string) *EmploymentCreateBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) JobId(jobId string) *EmploymentCreateBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 法人主体 ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) CompanyId(companyId string) *EmploymentCreateBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmploymentCreateBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：6893014062142064135
func (builder *EmploymentCreateBuilder) Id(id string) *EmploymentCreateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 资历起算日期
//
// 示例值：2020-01-01
func (builder *EmploymentCreateBuilder) SeniorityDate(seniorityDate string) *EmploymentCreateBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 员工编号
//
// 示例值：1000000
func (builder *EmploymentCreateBuilder) EmployeeNumber(employeeNumber string) *EmploymentCreateBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 入职日期
//
// 示例值：2020-01-01
func (builder *EmploymentCreateBuilder) EffectiveTime(effectiveTime string) *EmploymentCreateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 离职日期
//
// 示例值：2021-01-01
func (builder *EmploymentCreateBuilder) ExpirationTime(expirationTime string) *EmploymentCreateBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 雇佣类型
//
// 示例值：
func (builder *EmploymentCreateBuilder) EmploymentType(employmentType *Enum) *EmploymentCreateBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 人员信息，引用Person的ID
//
// 示例值：6919733936050406926
func (builder *EmploymentCreateBuilder) PersonId(personId string) *EmploymentCreateBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 试用期时长
//
// 示例值：9999
func (builder *EmploymentCreateBuilder) ProbationPeriod(probationPeriod int) *EmploymentCreateBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 是否在试用期中
//
// 示例值：true
func (builder *EmploymentCreateBuilder) OnProbation(onProbation string) *EmploymentCreateBuilder {
	builder.onProbation = onProbation
	builder.onProbationFlag = true
	return builder
}

// 试用期结束日期
//
// 示例值：2022-01-01
func (builder *EmploymentCreateBuilder) ProbationEndDate(probationEndDate string) *EmploymentCreateBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 是否是主雇佣信息
//
// 示例值：true
func (builder *EmploymentCreateBuilder) PrimaryEmployment(primaryEmployment bool) *EmploymentCreateBuilder {
	builder.primaryEmployment = primaryEmployment
	builder.primaryEmploymentFlag = true
	return builder
}

// 雇员状态
//
// 示例值：
func (builder *EmploymentCreateBuilder) EmploymentStatus(employmentStatus *Enum) *EmploymentCreateBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmploymentCreateBuilder) CustomFields(customFields []*ObjectFieldData) *EmploymentCreateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 工作邮箱列表，只有当邮箱下面所有条件时，才在个人信息页面可见： ;- is_primary = "true";- is_public = "true";- email_usage = "work"
//
// 示例值：
func (builder *EmploymentCreateBuilder) WorkEmailList(workEmailList []*Email) *EmploymentCreateBuilder {
	builder.workEmailList = workEmailList
	builder.workEmailListFlag = true
	return builder
}

// 邮箱
//
// 示例值：test@163.com
func (builder *EmploymentCreateBuilder) EmailAddress(emailAddress string) *EmploymentCreateBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 离职原因
//
// 示例值：
func (builder *EmploymentCreateBuilder) ReasonForOffboarding(reasonForOffboarding *Enum) *EmploymentCreateBuilder {
	builder.reasonForOffboarding = reasonForOffboarding
	builder.reasonForOffboardingFlag = true
	return builder
}

// 成本中心id列表
//
// 示例值：
func (builder *EmploymentCreateBuilder) CostCenterList(costCenterList []*JobDataCostCenter) *EmploymentCreateBuilder {
	builder.costCenterList = costCenterList
	builder.costCenterListFlag = true
	return builder
}

// 招聘应用 ID
//
// 示例值：6838119494196871234
func (builder *EmploymentCreateBuilder) AtsApplicationId(atsApplicationId string) *EmploymentCreateBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 是否离职重聘
//
// 示例值：
func (builder *EmploymentCreateBuilder) Rehire(rehire *Enum) *EmploymentCreateBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 历史雇佣信息 ID
//
// 示例值：7051837122449425964
func (builder *EmploymentCreateBuilder) RehireEmploymentId(rehireEmploymentId string) *EmploymentCreateBuilder {
	builder.rehireEmploymentId = rehireEmploymentId
	builder.rehireEmploymentIdFlag = true
	return builder
}

func (builder *EmploymentCreateBuilder) Build() *EmploymentCreate {
	req := &EmploymentCreate{}
	if builder.prehireIdFlag {
		req.PrehireId = &builder.prehireId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.tenureFlag {
		req.Tenure = &builder.tenure

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = builder.employmentType
	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.onProbationFlag {
		req.OnProbation = &builder.onProbation

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.primaryEmploymentFlag {
		req.PrimaryEmployment = &builder.primaryEmployment

	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = builder.employmentStatus
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.workEmailListFlag {
		req.WorkEmailList = builder.workEmailList
	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.reasonForOffboardingFlag {
		req.ReasonForOffboarding = builder.reasonForOffboarding
	}
	if builder.costCenterListFlag {
		req.CostCenterList = builder.costCenterList
	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.rehireFlag {
		req.Rehire = builder.rehire
	}
	if builder.rehireEmploymentIdFlag {
		req.RehireEmploymentId = &builder.rehireEmploymentId

	}
	return req
}

type EmploymentLeaveBalance struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣信息ID

	EmploymentName []*I18n `json:"employment_name,omitempty"` // 员工姓名

	AsOfDate *string `json:"as_of_date,omitempty"` // 截止日期，即查询截止到某天余额数据的日期

	LeaveBalanceList []*LeaveBalance `json:"leave_balance_list,omitempty"` // 假期余额列表
}

type EmploymentLeaveBalanceBuilder struct {
	employmentId     string // 雇佣信息ID
	employmentIdFlag bool

	employmentName     []*I18n // 员工姓名
	employmentNameFlag bool

	asOfDate     string // 截止日期，即查询截止到某天余额数据的日期
	asOfDateFlag bool

	leaveBalanceList     []*LeaveBalance // 假期余额列表
	leaveBalanceListFlag bool
}

func NewEmploymentLeaveBalanceBuilder() *EmploymentLeaveBalanceBuilder {
	builder := &EmploymentLeaveBalanceBuilder{}
	return builder
}

// 雇佣信息ID
//
// 示例值：4718803945687580505
func (builder *EmploymentLeaveBalanceBuilder) EmploymentId(employmentId string) *EmploymentLeaveBalanceBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 员工姓名
//
// 示例值：
func (builder *EmploymentLeaveBalanceBuilder) EmploymentName(employmentName []*I18n) *EmploymentLeaveBalanceBuilder {
	builder.employmentName = employmentName
	builder.employmentNameFlag = true
	return builder
}

// 截止日期，即查询截止到某天余额数据的日期
//
// 示例值：2022-07-29
func (builder *EmploymentLeaveBalanceBuilder) AsOfDate(asOfDate string) *EmploymentLeaveBalanceBuilder {
	builder.asOfDate = asOfDate
	builder.asOfDateFlag = true
	return builder
}

// 假期余额列表
//
// 示例值：
func (builder *EmploymentLeaveBalanceBuilder) LeaveBalanceList(leaveBalanceList []*LeaveBalance) *EmploymentLeaveBalanceBuilder {
	builder.leaveBalanceList = leaveBalanceList
	builder.leaveBalanceListFlag = true
	return builder
}

func (builder *EmploymentLeaveBalanceBuilder) Build() *EmploymentLeaveBalance {
	req := &EmploymentLeaveBalance{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.employmentNameFlag {
		req.EmploymentName = builder.employmentName
	}
	if builder.asOfDateFlag {
		req.AsOfDate = &builder.asOfDate

	}
	if builder.leaveBalanceListFlag {
		req.LeaveBalanceList = builder.leaveBalanceList
	}
	return req
}

type EntityFieldReq struct {
	EntityKey *string `json:"entity_key,omitempty"` // 实体下的所属属性key，如：id、name

	FieldKey *string `json:"field_key,omitempty"` // 实体的字段Key
}

type EntityFieldReqBuilder struct {
	entityKey     string // 实体下的所属属性key，如：id、name
	entityKeyFlag bool

	fieldKey     string // 实体的字段Key
	fieldKeyFlag bool
}

func NewEntityFieldReqBuilder() *EntityFieldReqBuilder {
	builder := &EntityFieldReqBuilder{}
	return builder
}

// 实体下的所属属性key，如：id、name
//
// 示例值：user
func (builder *EntityFieldReqBuilder) EntityKey(entityKey string) *EntityFieldReqBuilder {
	builder.entityKey = entityKey
	builder.entityKeyFlag = true
	return builder
}

// 实体的字段Key
//
// 示例值：id
func (builder *EntityFieldReqBuilder) FieldKey(fieldKey string) *EntityFieldReqBuilder {
	builder.fieldKey = fieldKey
	builder.fieldKeyFlag = true
	return builder
}

func (builder *EntityFieldReqBuilder) Build() *EntityFieldReq {
	req := &EntityFieldReq{}
	if builder.entityKeyFlag {
		req.EntityKey = &builder.entityKey

	}
	if builder.fieldKeyFlag {
		req.FieldKey = &builder.fieldKey

	}
	return req
}

type EntityFieldResult struct {
	EntityKey *string `json:"entity_key,omitempty"` // 实体key

	FieldKey *string `json:"field_key,omitempty"` // 实体的字段Key

	FieldName *Name `json:"field_name,omitempty"` // 名称信息
}

type EntityFieldResultBuilder struct {
	entityKey     string // 实体key
	entityKeyFlag bool

	fieldKey     string // 实体的字段Key
	fieldKeyFlag bool

	fieldName     *Name // 名称信息
	fieldNameFlag bool
}

func NewEntityFieldResultBuilder() *EntityFieldResultBuilder {
	builder := &EntityFieldResultBuilder{}
	return builder
}

// 实体key
//
// 示例值：user
func (builder *EntityFieldResultBuilder) EntityKey(entityKey string) *EntityFieldResultBuilder {
	builder.entityKey = entityKey
	builder.entityKeyFlag = true
	return builder
}

// 实体的字段Key
//
// 示例值：id
func (builder *EntityFieldResultBuilder) FieldKey(fieldKey string) *EntityFieldResultBuilder {
	builder.fieldKey = fieldKey
	builder.fieldKeyFlag = true
	return builder
}

// 名称信息
//
// 示例值：
func (builder *EntityFieldResultBuilder) FieldName(fieldName *Name) *EntityFieldResultBuilder {
	builder.fieldName = fieldName
	builder.fieldNameFlag = true
	return builder
}

func (builder *EntityFieldResultBuilder) Build() *EntityFieldResult {
	req := &EntityFieldResult{}
	if builder.entityKeyFlag {
		req.EntityKey = &builder.entityKey

	}
	if builder.fieldKeyFlag {
		req.FieldKey = &builder.fieldKey

	}
	if builder.fieldNameFlag {
		req.FieldName = builder.fieldName
	}
	return req
}

type Enum struct {
	EnumName *string `json:"enum_name,omitempty"` // 枚举值

	Display []*I18n `json:"display,omitempty"` // 枚举多语展示
}

type EnumBuilder struct {
	enumName     string // 枚举值
	enumNameFlag bool

	display     []*I18n // 枚举多语展示
	displayFlag bool
}

func NewEnumBuilder() *EnumBuilder {
	builder := &EnumBuilder{}
	return builder
}

// 枚举值
//
// 示例值：type_1
func (builder *EnumBuilder) EnumName(enumName string) *EnumBuilder {
	builder.enumName = enumName
	builder.enumNameFlag = true
	return builder
}

// 枚举多语展示
//
// 示例值：
func (builder *EnumBuilder) Display(display []*I18n) *EnumBuilder {
	builder.display = display
	builder.displayFlag = true
	return builder
}

func (builder *EnumBuilder) Build() *Enum {
	req := &Enum{}
	if builder.enumNameFlag {
		req.EnumName = &builder.enumName

	}
	if builder.displayFlag {
		req.Display = builder.display
	}
	return req
}

type EnumFieldOption struct {
	OptionApiName *string `json:"option_api_name,omitempty"` // 枚举值选项 API Name，即选项的唯一标识

	Active *bool `json:"active,omitempty"` // 是否启用

	Name *Name `json:"name,omitempty"` // 选项名称（需填写至少一个语种）
}

type EnumFieldOptionBuilder struct {
	optionApiName     string // 枚举值选项 API Name，即选项的唯一标识
	optionApiNameFlag bool

	active     bool // 是否启用
	activeFlag bool

	name     *Name // 选项名称（需填写至少一个语种）
	nameFlag bool
}

func NewEnumFieldOptionBuilder() *EnumFieldOptionBuilder {
	builder := &EnumFieldOptionBuilder{}
	return builder
}

// 枚举值选项 API Name，即选项的唯一标识
//
// 示例值：grade_e
func (builder *EnumFieldOptionBuilder) OptionApiName(optionApiName string) *EnumFieldOptionBuilder {
	builder.optionApiName = optionApiName
	builder.optionApiNameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *EnumFieldOptionBuilder) Active(active bool) *EnumFieldOptionBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 选项名称（需填写至少一个语种）
//
// 示例值：
func (builder *EnumFieldOptionBuilder) Name(name *Name) *EnumFieldOptionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *EnumFieldOptionBuilder) Build() *EnumFieldOption {
	req := &EnumFieldOption{}
	if builder.optionApiNameFlag {
		req.OptionApiName = &builder.optionApiName

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type EnumFieldSetting struct {
	EnumFieldOptionList []*CommonSchemaOption `json:"enum_field_option_list,omitempty"` // 选项信息

	IsMultiple *bool `json:"is_multiple,omitempty"` // 是否为多选
}

type EnumFieldSettingBuilder struct {
	enumFieldOptionList     []*CommonSchemaOption // 选项信息
	enumFieldOptionListFlag bool

	isMultiple     bool // 是否为多选
	isMultipleFlag bool
}

func NewEnumFieldSettingBuilder() *EnumFieldSettingBuilder {
	builder := &EnumFieldSettingBuilder{}
	return builder
}

// 选项信息
//
// 示例值：
func (builder *EnumFieldSettingBuilder) EnumFieldOptionList(enumFieldOptionList []*CommonSchemaOption) *EnumFieldSettingBuilder {
	builder.enumFieldOptionList = enumFieldOptionList
	builder.enumFieldOptionListFlag = true
	return builder
}

// 是否为多选
//
// 示例值：false
func (builder *EnumFieldSettingBuilder) IsMultiple(isMultiple bool) *EnumFieldSettingBuilder {
	builder.isMultiple = isMultiple
	builder.isMultipleFlag = true
	return builder
}

func (builder *EnumFieldSettingBuilder) Build() *EnumFieldSetting {
	req := &EnumFieldSetting{}
	if builder.enumFieldOptionListFlag {
		req.EnumFieldOptionList = builder.enumFieldOptionList
	}
	if builder.isMultipleFlag {
		req.IsMultiple = &builder.isMultiple

	}
	return req
}

type File struct {
	Id *string `json:"id,omitempty"` // 上传文件ID
}

type FileBuilder struct {
	id     string // 上传文件ID
	idFlag bool
}

func NewFileBuilder() *FileBuilder {
	builder := &FileBuilder{}
	return builder
}

// 上传文件ID
//
// 示例值：150018109586e8ea745e47ae8feb3722dbe1d03a181336393633393133303431393831343930373235150200
func (builder *FileBuilder) Id(id string) *FileBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *FileBuilder) Build() *File {
	req := &File{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type FilterCondition struct {
	Left *FilterRuleValue `json:"left,omitempty"` // 左值

	Right *FilterRuleValue `json:"right,omitempty"` // 右值

	Operator *int `json:"operator,omitempty"` // 操作符

	RightValueType *int `json:"right_value_type,omitempty"` // 右值类型
}

type FilterConditionBuilder struct {
	left     *FilterRuleValue // 左值
	leftFlag bool

	right     *FilterRuleValue // 右值
	rightFlag bool

	operator     int // 操作符
	operatorFlag bool

	rightValueType     int // 右值类型
	rightValueTypeFlag bool
}

func NewFilterConditionBuilder() *FilterConditionBuilder {
	builder := &FilterConditionBuilder{}
	return builder
}

// 左值
//
// 示例值：
func (builder *FilterConditionBuilder) Left(left *FilterRuleValue) *FilterConditionBuilder {
	builder.left = left
	builder.leftFlag = true
	return builder
}

// 右值
//
// 示例值：
func (builder *FilterConditionBuilder) Right(right *FilterRuleValue) *FilterConditionBuilder {
	builder.right = right
	builder.rightFlag = true
	return builder
}

// 操作符
//
// 示例值：1
func (builder *FilterConditionBuilder) Operator(operator int) *FilterConditionBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 右值类型
//
// 示例值：1
func (builder *FilterConditionBuilder) RightValueType(rightValueType int) *FilterConditionBuilder {
	builder.rightValueType = rightValueType
	builder.rightValueTypeFlag = true
	return builder
}

func (builder *FilterConditionBuilder) Build() *FilterCondition {
	req := &FilterCondition{}
	if builder.leftFlag {
		req.Left = builder.left
	}
	if builder.rightFlag {
		req.Right = builder.right
	}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.rightValueTypeFlag {
		req.RightValueType = &builder.rightValueType

	}
	return req
}

type FilterExpression struct {
	Conditions []*FilterCondition `json:"conditions,omitempty"` // 规则

	Expression *string `json:"expression,omitempty"` // 表达式

	LogicExpression *string `json:"logic_expression,omitempty"` // 表达式
}

type FilterExpressionBuilder struct {
	conditions     []*FilterCondition // 规则
	conditionsFlag bool

	expression     string // 表达式
	expressionFlag bool

	logicExpression     string // 表达式
	logicExpressionFlag bool
}

func NewFilterExpressionBuilder() *FilterExpressionBuilder {
	builder := &FilterExpressionBuilder{}
	return builder
}

// 规则
//
// 示例值：
func (builder *FilterExpressionBuilder) Conditions(conditions []*FilterCondition) *FilterExpressionBuilder {
	builder.conditions = conditions
	builder.conditionsFlag = true
	return builder
}

// 表达式
//
// 示例值：1 and 2
func (builder *FilterExpressionBuilder) Expression(expression string) *FilterExpressionBuilder {
	builder.expression = expression
	builder.expressionFlag = true
	return builder
}

// 表达式
//
// 示例值：1 and 2
func (builder *FilterExpressionBuilder) LogicExpression(logicExpression string) *FilterExpressionBuilder {
	builder.logicExpression = logicExpression
	builder.logicExpressionFlag = true
	return builder
}

func (builder *FilterExpressionBuilder) Build() *FilterExpression {
	req := &FilterExpression{}
	if builder.conditionsFlag {
		req.Conditions = builder.conditions
	}
	if builder.expressionFlag {
		req.Expression = &builder.expression

	}
	if builder.logicExpressionFlag {
		req.LogicExpression = &builder.logicExpression

	}
	return req
}

type FilterRuleValue struct {
	Type *int `json:"type,omitempty"` // 规则值类型

	Value *string `json:"value,omitempty"` // 规则值

	LookupValue *string `json:"lookup_value,omitempty"` // 下钻值

	LookupType *string `json:"lookup_type,omitempty"` // 下钻类型
}

type FilterRuleValueBuilder struct {
	type_    int // 规则值类型
	typeFlag bool

	value     string // 规则值
	valueFlag bool

	lookupValue     string // 下钻值
	lookupValueFlag bool

	lookupType     string // 下钻类型
	lookupTypeFlag bool
}

func NewFilterRuleValueBuilder() *FilterRuleValueBuilder {
	builder := &FilterRuleValueBuilder{}
	return builder
}

// 规则值类型
//
// 示例值：1
func (builder *FilterRuleValueBuilder) Type(type_ int) *FilterRuleValueBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 规则值
//
// 示例值：a
func (builder *FilterRuleValueBuilder) Value(value string) *FilterRuleValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 下钻值
//
// 示例值：1
func (builder *FilterRuleValueBuilder) LookupValue(lookupValue string) *FilterRuleValueBuilder {
	builder.lookupValue = lookupValue
	builder.lookupValueFlag = true
	return builder
}

// 下钻类型
//
// 示例值：user
func (builder *FilterRuleValueBuilder) LookupType(lookupType string) *FilterRuleValueBuilder {
	builder.lookupType = lookupType
	builder.lookupTypeFlag = true
	return builder
}

func (builder *FilterRuleValueBuilder) Build() *FilterRuleValue {
	req := &FilterRuleValue{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.lookupValueFlag {
		req.LookupValue = &builder.lookupValue

	}
	if builder.lookupTypeFlag {
		req.LookupType = &builder.lookupType

	}
	return req
}

type FormFieldVariable struct {
	VariableApiName *string `json:"variable_api_name,omitempty"` // 变量api名称

	VariableName *BpmDataengineI18n `json:"variable_name,omitempty"` // 变量名称的i18n描述

	VariableValue *FormVariableValueInfo `json:"variable_value,omitempty"` // 变量值的对象
}

type FormFieldVariableBuilder struct {
	variableApiName     string // 变量api名称
	variableApiNameFlag bool

	variableName     *BpmDataengineI18n // 变量名称的i18n描述
	variableNameFlag bool

	variableValue     *FormVariableValueInfo // 变量值的对象
	variableValueFlag bool
}

func NewFormFieldVariableBuilder() *FormFieldVariableBuilder {
	builder := &FormFieldVariableBuilder{}
	return builder
}

// 变量api名称
//
// 示例值：
func (builder *FormFieldVariableBuilder) VariableApiName(variableApiName string) *FormFieldVariableBuilder {
	builder.variableApiName = variableApiName
	builder.variableApiNameFlag = true
	return builder
}

// 变量名称的i18n描述
//
// 示例值：
func (builder *FormFieldVariableBuilder) VariableName(variableName *BpmDataengineI18n) *FormFieldVariableBuilder {
	builder.variableName = variableName
	builder.variableNameFlag = true
	return builder
}

// 变量值的对象
//
// 示例值：
func (builder *FormFieldVariableBuilder) VariableValue(variableValue *FormVariableValueInfo) *FormFieldVariableBuilder {
	builder.variableValue = variableValue
	builder.variableValueFlag = true
	return builder
}

func (builder *FormFieldVariableBuilder) Build() *FormFieldVariable {
	req := &FormFieldVariable{}
	if builder.variableApiNameFlag {
		req.VariableApiName = &builder.variableApiName

	}
	if builder.variableNameFlag {
		req.VariableName = builder.variableName
	}
	if builder.variableValueFlag {
		req.VariableValue = builder.variableValue
	}
	return req
}

type FormFieldVariableBoolValue struct {
	Value *bool `json:"value,omitempty"` // 布尔变量的值
}

type FormFieldVariableBoolValueBuilder struct {
	value     bool // 布尔变量的值
	valueFlag bool
}

func NewFormFieldVariableBoolValueBuilder() *FormFieldVariableBoolValueBuilder {
	builder := &FormFieldVariableBoolValueBuilder{}
	return builder
}

// 布尔变量的值
//
// 示例值：true
func (builder *FormFieldVariableBoolValueBuilder) Value(value bool) *FormFieldVariableBoolValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableBoolValueBuilder) Build() *FormFieldVariableBoolValue {
	req := &FormFieldVariableBoolValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormFieldVariableDateValue struct {
	Value *int `json:"value,omitempty"` // 日期变量的值，从1970起的天数
}

type FormFieldVariableDateValueBuilder struct {
	value     int // 日期变量的值，从1970起的天数
	valueFlag bool
}

func NewFormFieldVariableDateValueBuilder() *FormFieldVariableDateValueBuilder {
	builder := &FormFieldVariableDateValueBuilder{}
	return builder
}

// 日期变量的值，从1970起的天数
//
// 示例值：10000
func (builder *FormFieldVariableDateValueBuilder) Value(value int) *FormFieldVariableDateValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableDateValueBuilder) Build() *FormFieldVariableDateValue {
	req := &FormFieldVariableDateValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormFieldVariableDatetimeValue struct {
	Value *int `json:"value,omitempty"` // 毫秒的时间戳

	Zone *string `json:"zone,omitempty"` // 时区
}

type FormFieldVariableDatetimeValueBuilder struct {
	value     int // 毫秒的时间戳
	valueFlag bool

	zone     string // 时区
	zoneFlag bool
}

func NewFormFieldVariableDatetimeValueBuilder() *FormFieldVariableDatetimeValueBuilder {
	builder := &FormFieldVariableDatetimeValueBuilder{}
	return builder
}

// 毫秒的时间戳
//
// 示例值：1670227428803
func (builder *FormFieldVariableDatetimeValueBuilder) Value(value int) *FormFieldVariableDatetimeValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 时区
//
// 示例值：+08:00
func (builder *FormFieldVariableDatetimeValueBuilder) Zone(zone string) *FormFieldVariableDatetimeValueBuilder {
	builder.zone = zone
	builder.zoneFlag = true
	return builder
}

func (builder *FormFieldVariableDatetimeValueBuilder) Build() *FormFieldVariableDatetimeValue {
	req := &FormFieldVariableDatetimeValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.zoneFlag {
		req.Zone = &builder.zone

	}
	return req
}

type FormFieldVariableDepartmentValue struct {
	Value *string `json:"value,omitempty"` // 部门ID
}

type FormFieldVariableDepartmentValueBuilder struct {
	value     string // 部门ID
	valueFlag bool
}

func NewFormFieldVariableDepartmentValueBuilder() *FormFieldVariableDepartmentValueBuilder {
	builder := &FormFieldVariableDepartmentValueBuilder{}
	return builder
}

// 部门ID
//
// 示例值：201933311
func (builder *FormFieldVariableDepartmentValueBuilder) Value(value string) *FormFieldVariableDepartmentValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableDepartmentValueBuilder) Build() *FormFieldVariableDepartmentValue {
	req := &FormFieldVariableDepartmentValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormFieldVariableEmploymentValue struct {
	Value *string `json:"value,omitempty"` // employmentID

	UserId *string `json:"user_id,omitempty"` // 员工ID 如3158117
}

type FormFieldVariableEmploymentValueBuilder struct {
	value     string // employmentID
	valueFlag bool

	userId     string // 员工ID 如3158117
	userIdFlag bool
}

func NewFormFieldVariableEmploymentValueBuilder() *FormFieldVariableEmploymentValueBuilder {
	builder := &FormFieldVariableEmploymentValueBuilder{}
	return builder
}

// employmentID
//
// 示例值：
func (builder *FormFieldVariableEmploymentValueBuilder) Value(value string) *FormFieldVariableEmploymentValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 员工ID 如3158117
//
// 示例值：
func (builder *FormFieldVariableEmploymentValueBuilder) UserId(userId string) *FormFieldVariableEmploymentValueBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

func (builder *FormFieldVariableEmploymentValueBuilder) Build() *FormFieldVariableEmploymentValue {
	req := &FormFieldVariableEmploymentValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	return req
}

type FormFieldVariableEnumValue struct {
	Value *string `json:"value,omitempty"` // 枚举值

	Name *BpmDataengineI18n `json:"name,omitempty"` // 枚举的名称

	Desc *BpmDataengineI18n `json:"desc,omitempty"` // 枚举的描述
}

type FormFieldVariableEnumValueBuilder struct {
	value     string // 枚举值
	valueFlag bool

	name     *BpmDataengineI18n // 枚举的名称
	nameFlag bool

	desc     *BpmDataengineI18n // 枚举的描述
	descFlag bool
}

func NewFormFieldVariableEnumValueBuilder() *FormFieldVariableEnumValueBuilder {
	builder := &FormFieldVariableEnumValueBuilder{}
	return builder
}

// 枚举值
//
// 示例值：enum_value
func (builder *FormFieldVariableEnumValueBuilder) Value(value string) *FormFieldVariableEnumValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 枚举的名称
//
// 示例值：
func (builder *FormFieldVariableEnumValueBuilder) Name(name *BpmDataengineI18n) *FormFieldVariableEnumValueBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 枚举的描述
//
// 示例值：
func (builder *FormFieldVariableEnumValueBuilder) Desc(desc *BpmDataengineI18n) *FormFieldVariableEnumValueBuilder {
	builder.desc = desc
	builder.descFlag = true
	return builder
}

func (builder *FormFieldVariableEnumValueBuilder) Build() *FormFieldVariableEnumValue {
	req := &FormFieldVariableEnumValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descFlag {
		req.Desc = builder.desc
	}
	return req
}

type FormFieldVariableFileValue struct {
	SourceType *int `json:"source_type,omitempty"` // 文件源类型（1BPM; 2主数据）

	FileId *string `json:"file_id,omitempty"` // 文件id

	FileName *string `json:"file_name,omitempty"` // 文件名称

	Length *int `json:"length,omitempty"` // 文件长度

	MimeType *string `json:"mime_type,omitempty"` // mime type
}

type FormFieldVariableFileValueBuilder struct {
	sourceType     int // 文件源类型（1BPM; 2主数据）
	sourceTypeFlag bool

	fileId     string // 文件id
	fileIdFlag bool

	fileName     string // 文件名称
	fileNameFlag bool

	length     int // 文件长度
	lengthFlag bool

	mimeType     string // mime type
	mimeTypeFlag bool
}

func NewFormFieldVariableFileValueBuilder() *FormFieldVariableFileValueBuilder {
	builder := &FormFieldVariableFileValueBuilder{}
	return builder
}

// 文件源类型（1BPM; 2主数据）
//
// 示例值：1
func (builder *FormFieldVariableFileValueBuilder) SourceType(sourceType int) *FormFieldVariableFileValueBuilder {
	builder.sourceType = sourceType
	builder.sourceTypeFlag = true
	return builder
}

// 文件id
//
// 示例值：abc_file_xyz
func (builder *FormFieldVariableFileValueBuilder) FileId(fileId string) *FormFieldVariableFileValueBuilder {
	builder.fileId = fileId
	builder.fileIdFlag = true
	return builder
}

// 文件名称
//
// 示例值：a
func (builder *FormFieldVariableFileValueBuilder) FileName(fileName string) *FormFieldVariableFileValueBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

// 文件长度
//
// 示例值：1024
func (builder *FormFieldVariableFileValueBuilder) Length(length int) *FormFieldVariableFileValueBuilder {
	builder.length = length
	builder.lengthFlag = true
	return builder
}

// mime type
//
// 示例值：text/plain
func (builder *FormFieldVariableFileValueBuilder) MimeType(mimeType string) *FormFieldVariableFileValueBuilder {
	builder.mimeType = mimeType
	builder.mimeTypeFlag = true
	return builder
}

func (builder *FormFieldVariableFileValueBuilder) Build() *FormFieldVariableFileValue {
	req := &FormFieldVariableFileValue{}
	if builder.sourceTypeFlag {
		req.SourceType = &builder.sourceType

	}
	if builder.fileIdFlag {
		req.FileId = &builder.fileId

	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName

	}
	if builder.lengthFlag {
		req.Length = &builder.length

	}
	if builder.mimeTypeFlag {
		req.MimeType = &builder.mimeType

	}
	return req
}

type FormFieldVariableI18nValue struct {
	Value *BpmDataengineI18n `json:"value,omitempty"` // i18n值
}

type FormFieldVariableI18nValueBuilder struct {
	value     *BpmDataengineI18n // i18n值
	valueFlag bool
}

func NewFormFieldVariableI18nValueBuilder() *FormFieldVariableI18nValueBuilder {
	builder := &FormFieldVariableI18nValueBuilder{}
	return builder
}

// i18n值
//
// 示例值：
func (builder *FormFieldVariableI18nValueBuilder) Value(value *BpmDataengineI18n) *FormFieldVariableI18nValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableI18nValueBuilder) Build() *FormFieldVariableI18nValue {
	req := &FormFieldVariableI18nValue{}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type FormFieldVariableListObject struct {
	TextValue *FormFieldVariableTextValue `json:"text_value,omitempty"` // 文本变量对象

	NumberValue *FormFieldVariableNumberValue `json:"number_value,omitempty"` // 数值变量对象

	DateValue *FormFieldVariableDateValue `json:"date_value,omitempty"` // 日期变量对象

	EmploymentValue *FormFieldVariableEmploymentValue `json:"employment_value,omitempty"` // 员工变量对象

	DateTimeValue *FormFieldVariableDatetimeValue `json:"date_time_value,omitempty"` // 日期时间变量对象

	EnumValue *FormFieldVariableEnumValue `json:"enum_value,omitempty"` // 枚举变量对象

	NullValue *FormFieldVariableNullValue `json:"null_value,omitempty"` // 空变量对象

	BoolValue *FormFieldVariableBoolValue `json:"bool_value,omitempty"` // 布尔变量对象

	DepartmentValue *FormFieldVariableDepartmentValue `json:"department_value,omitempty"` // 部门变量对象

	FileValue *FormFieldVariableFileValue `json:"file_value,omitempty"` // 文件变量对象

	I18nValue *FormFieldVariableI18nValue `json:"i18n_value,omitempty"` // i18n变量对象

	ObjectValue *FormFieldVariableObjectValue `json:"object_value,omitempty"` // 对象变量

	RecordValue *FormFieldVariableRecordValue `json:"record_value,omitempty"` // 记录对象
}

type FormFieldVariableListObjectBuilder struct {
	textValue     *FormFieldVariableTextValue // 文本变量对象
	textValueFlag bool

	numberValue     *FormFieldVariableNumberValue // 数值变量对象
	numberValueFlag bool

	dateValue     *FormFieldVariableDateValue // 日期变量对象
	dateValueFlag bool

	employmentValue     *FormFieldVariableEmploymentValue // 员工变量对象
	employmentValueFlag bool

	dateTimeValue     *FormFieldVariableDatetimeValue // 日期时间变量对象
	dateTimeValueFlag bool

	enumValue     *FormFieldVariableEnumValue // 枚举变量对象
	enumValueFlag bool

	nullValue     *FormFieldVariableNullValue // 空变量对象
	nullValueFlag bool

	boolValue     *FormFieldVariableBoolValue // 布尔变量对象
	boolValueFlag bool

	departmentValue     *FormFieldVariableDepartmentValue // 部门变量对象
	departmentValueFlag bool

	fileValue     *FormFieldVariableFileValue // 文件变量对象
	fileValueFlag bool

	i18nValue     *FormFieldVariableI18nValue // i18n变量对象
	i18nValueFlag bool

	objectValue     *FormFieldVariableObjectValue // 对象变量
	objectValueFlag bool

	recordValue     *FormFieldVariableRecordValue // 记录对象
	recordValueFlag bool
}

func NewFormFieldVariableListObjectBuilder() *FormFieldVariableListObjectBuilder {
	builder := &FormFieldVariableListObjectBuilder{}
	return builder
}

// 文本变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) TextValue(textValue *FormFieldVariableTextValue) *FormFieldVariableListObjectBuilder {
	builder.textValue = textValue
	builder.textValueFlag = true
	return builder
}

// 数值变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) NumberValue(numberValue *FormFieldVariableNumberValue) *FormFieldVariableListObjectBuilder {
	builder.numberValue = numberValue
	builder.numberValueFlag = true
	return builder
}

// 日期变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) DateValue(dateValue *FormFieldVariableDateValue) *FormFieldVariableListObjectBuilder {
	builder.dateValue = dateValue
	builder.dateValueFlag = true
	return builder
}

// 员工变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) EmploymentValue(employmentValue *FormFieldVariableEmploymentValue) *FormFieldVariableListObjectBuilder {
	builder.employmentValue = employmentValue
	builder.employmentValueFlag = true
	return builder
}

// 日期时间变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) DateTimeValue(dateTimeValue *FormFieldVariableDatetimeValue) *FormFieldVariableListObjectBuilder {
	builder.dateTimeValue = dateTimeValue
	builder.dateTimeValueFlag = true
	return builder
}

// 枚举变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) EnumValue(enumValue *FormFieldVariableEnumValue) *FormFieldVariableListObjectBuilder {
	builder.enumValue = enumValue
	builder.enumValueFlag = true
	return builder
}

// 空变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) NullValue(nullValue *FormFieldVariableNullValue) *FormFieldVariableListObjectBuilder {
	builder.nullValue = nullValue
	builder.nullValueFlag = true
	return builder
}

// 布尔变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) BoolValue(boolValue *FormFieldVariableBoolValue) *FormFieldVariableListObjectBuilder {
	builder.boolValue = boolValue
	builder.boolValueFlag = true
	return builder
}

// 部门变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) DepartmentValue(departmentValue *FormFieldVariableDepartmentValue) *FormFieldVariableListObjectBuilder {
	builder.departmentValue = departmentValue
	builder.departmentValueFlag = true
	return builder
}

// 文件变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) FileValue(fileValue *FormFieldVariableFileValue) *FormFieldVariableListObjectBuilder {
	builder.fileValue = fileValue
	builder.fileValueFlag = true
	return builder
}

// i18n变量对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) I18nValue(i18nValue *FormFieldVariableI18nValue) *FormFieldVariableListObjectBuilder {
	builder.i18nValue = i18nValue
	builder.i18nValueFlag = true
	return builder
}

// 对象变量
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) ObjectValue(objectValue *FormFieldVariableObjectValue) *FormFieldVariableListObjectBuilder {
	builder.objectValue = objectValue
	builder.objectValueFlag = true
	return builder
}

// 记录对象
//
// 示例值：
func (builder *FormFieldVariableListObjectBuilder) RecordValue(recordValue *FormFieldVariableRecordValue) *FormFieldVariableListObjectBuilder {
	builder.recordValue = recordValue
	builder.recordValueFlag = true
	return builder
}

func (builder *FormFieldVariableListObjectBuilder) Build() *FormFieldVariableListObject {
	req := &FormFieldVariableListObject{}
	if builder.textValueFlag {
		req.TextValue = builder.textValue
	}
	if builder.numberValueFlag {
		req.NumberValue = builder.numberValue
	}
	if builder.dateValueFlag {
		req.DateValue = builder.dateValue
	}
	if builder.employmentValueFlag {
		req.EmploymentValue = builder.employmentValue
	}
	if builder.dateTimeValueFlag {
		req.DateTimeValue = builder.dateTimeValue
	}
	if builder.enumValueFlag {
		req.EnumValue = builder.enumValue
	}
	if builder.nullValueFlag {
		req.NullValue = builder.nullValue
	}
	if builder.boolValueFlag {
		req.BoolValue = builder.boolValue
	}
	if builder.departmentValueFlag {
		req.DepartmentValue = builder.departmentValue
	}
	if builder.fileValueFlag {
		req.FileValue = builder.fileValue
	}
	if builder.i18nValueFlag {
		req.I18nValue = builder.i18nValue
	}
	if builder.objectValueFlag {
		req.ObjectValue = builder.objectValue
	}
	if builder.recordValueFlag {
		req.RecordValue = builder.recordValue
	}
	return req
}

type FormFieldVariableListValue struct {
	Values []*FormFieldVariableListObject `json:"values,omitempty"` // 列表值
}

type FormFieldVariableListValueBuilder struct {
	values     []*FormFieldVariableListObject // 列表值
	valuesFlag bool
}

func NewFormFieldVariableListValueBuilder() *FormFieldVariableListValueBuilder {
	builder := &FormFieldVariableListValueBuilder{}
	return builder
}

// 列表值
//
// 示例值：
func (builder *FormFieldVariableListValueBuilder) Values(values []*FormFieldVariableListObject) *FormFieldVariableListValueBuilder {
	builder.values = values
	builder.valuesFlag = true
	return builder
}

func (builder *FormFieldVariableListValueBuilder) Build() *FormFieldVariableListValue {
	req := &FormFieldVariableListValue{}
	if builder.valuesFlag {
		req.Values = builder.values
	}
	return req
}

type FormFieldVariableNullValue struct {
}

type FormFieldVariableNullValueBuilder struct {
}

func NewFormFieldVariableNullValueBuilder() *FormFieldVariableNullValueBuilder {
	builder := &FormFieldVariableNullValueBuilder{}
	return builder
}

func (builder *FormFieldVariableNullValueBuilder) Build() *FormFieldVariableNullValue {
	req := &FormFieldVariableNullValue{}
	return req
}

type FormFieldVariableNumberValue struct {
	Value *string `json:"value,omitempty"` // 数值类型变量的值
}

type FormFieldVariableNumberValueBuilder struct {
	value     string // 数值类型变量的值
	valueFlag bool
}

func NewFormFieldVariableNumberValueBuilder() *FormFieldVariableNumberValueBuilder {
	builder := &FormFieldVariableNumberValueBuilder{}
	return builder
}

// 数值类型变量的值
//
// 示例值：
func (builder *FormFieldVariableNumberValueBuilder) Value(value string) *FormFieldVariableNumberValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableNumberValueBuilder) Build() *FormFieldVariableNumberValue {
	req := &FormFieldVariableNumberValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormFieldVariableObjectValue struct {
	Value *string `json:"value,omitempty"` // 对象ID

	WkApiName *string `json:"wk_api_name,omitempty"` // 主数据apiName
}

type FormFieldVariableObjectValueBuilder struct {
	value     string // 对象ID
	valueFlag bool

	wkApiName     string // 主数据apiName
	wkApiNameFlag bool
}

func NewFormFieldVariableObjectValueBuilder() *FormFieldVariableObjectValueBuilder {
	builder := &FormFieldVariableObjectValueBuilder{}
	return builder
}

// 对象ID
//
// 示例值：203948191
func (builder *FormFieldVariableObjectValueBuilder) Value(value string) *FormFieldVariableObjectValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 主数据apiName
//
// 示例值：object1
func (builder *FormFieldVariableObjectValueBuilder) WkApiName(wkApiName string) *FormFieldVariableObjectValueBuilder {
	builder.wkApiName = wkApiName
	builder.wkApiNameFlag = true
	return builder
}

func (builder *FormFieldVariableObjectValueBuilder) Build() *FormFieldVariableObjectValue {
	req := &FormFieldVariableObjectValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.wkApiNameFlag {
		req.WkApiName = &builder.wkApiName

	}
	return req
}

type FormFieldVariableRecordValue struct {
	Values *FormFieldVariableRecordValueExample `json:"values,omitempty"` // 注意：这个值是一个map，key是变量唯一标识，value是变量值（平台限制，没法录入Map类型，这里用object示意一下）
}

type FormFieldVariableRecordValueBuilder struct {
	values     *FormFieldVariableRecordValueExample // 注意：这个值是一个map，key是变量唯一标识，value是变量值（平台限制，没法录入Map类型，这里用object示意一下）
	valuesFlag bool
}

func NewFormFieldVariableRecordValueBuilder() *FormFieldVariableRecordValueBuilder {
	builder := &FormFieldVariableRecordValueBuilder{}
	return builder
}

// 注意：这个值是一个map，key是变量唯一标识，value是变量值（平台限制，没法录入Map类型，这里用object示意一下）
//
// 示例值：
func (builder *FormFieldVariableRecordValueBuilder) Values(values *FormFieldVariableRecordValueExample) *FormFieldVariableRecordValueBuilder {
	builder.values = values
	builder.valuesFlag = true
	return builder
}

func (builder *FormFieldVariableRecordValueBuilder) Build() *FormFieldVariableRecordValue {
	req := &FormFieldVariableRecordValue{}
	if builder.valuesFlag {
		req.Values = builder.values
	}
	return req
}

type FormFieldVariableRecordValueExample struct {
	CountryRegion *FormVariableValueInfoExample `json:"country_region,omitempty"` // 这个属性名称是map的key的示例，属性值是map的value的示例，值和外层的variable_value是的一样的结构。
}

type FormFieldVariableRecordValueExampleBuilder struct {
	countryRegion     *FormVariableValueInfoExample // 这个属性名称是map的key的示例，属性值是map的value的示例，值和外层的variable_value是的一样的结构。
	countryRegionFlag bool
}

func NewFormFieldVariableRecordValueExampleBuilder() *FormFieldVariableRecordValueExampleBuilder {
	builder := &FormFieldVariableRecordValueExampleBuilder{}
	return builder
}

// 这个属性名称是map的key的示例，属性值是map的value的示例，值和外层的variable_value是的一样的结构。
//
// 示例值：
func (builder *FormFieldVariableRecordValueExampleBuilder) CountryRegion(countryRegion *FormVariableValueInfoExample) *FormFieldVariableRecordValueExampleBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

func (builder *FormFieldVariableRecordValueExampleBuilder) Build() *FormFieldVariableRecordValueExample {
	req := &FormFieldVariableRecordValueExample{}
	if builder.countryRegionFlag {
		req.CountryRegion = builder.countryRegion
	}
	return req
}

type FormFieldVariableTextValue struct {
	Value *string `json:"value,omitempty"` // 文本类型变量的值
}

type FormFieldVariableTextValueBuilder struct {
	value     string // 文本类型变量的值
	valueFlag bool
}

func NewFormFieldVariableTextValueBuilder() *FormFieldVariableTextValueBuilder {
	builder := &FormFieldVariableTextValueBuilder{}
	return builder
}

// 文本类型变量的值
//
// 示例值：
func (builder *FormFieldVariableTextValueBuilder) Value(value string) *FormFieldVariableTextValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableTextValueBuilder) Build() *FormFieldVariableTextValue {
	req := &FormFieldVariableTextValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormVariableData struct {
	FieldVariableValues []*FormFieldVariable `json:"field_variable_values,omitempty"` // 表单字段变量对象
}

type FormVariableDataBuilder struct {
	fieldVariableValues     []*FormFieldVariable // 表单字段变量对象
	fieldVariableValuesFlag bool
}

func NewFormVariableDataBuilder() *FormVariableDataBuilder {
	builder := &FormVariableDataBuilder{}
	return builder
}

// 表单字段变量对象
//
// 示例值：
func (builder *FormVariableDataBuilder) FieldVariableValues(fieldVariableValues []*FormFieldVariable) *FormVariableDataBuilder {
	builder.fieldVariableValues = fieldVariableValues
	builder.fieldVariableValuesFlag = true
	return builder
}

func (builder *FormVariableDataBuilder) Build() *FormVariableData {
	req := &FormVariableData{}
	if builder.fieldVariableValuesFlag {
		req.FieldVariableValues = builder.fieldVariableValues
	}
	return req
}

type FormVariableValueInfo struct {
	TextValue *FormFieldVariableTextValue `json:"text_value,omitempty"` // 文本变量对象

	NumberValue *FormFieldVariableNumberValue `json:"number_value,omitempty"` // 数值变量对象

	DateValue *FormFieldVariableDateValue `json:"date_value,omitempty"` // 日期变量对象

	EmploymentValue *FormFieldVariableEmploymentValue `json:"employment_value,omitempty"` // 员工变量对象

	DateTimeValue *FormFieldVariableDatetimeValue `json:"date_time_value,omitempty"` // 日期时间变量对象

	EnumValue *FormFieldVariableEnumValue `json:"enum_value,omitempty"` // 枚举变量对象

	NullValue *FormFieldVariableNullValue `json:"null_value,omitempty"` // 空变量对象

	BoolValue *FormFieldVariableBoolValue `json:"bool_value,omitempty"` // 布尔变量对象

	DepartmentValue *FormFieldVariableDepartmentValue `json:"department_value,omitempty"` // 部门变量对象

	FileValue *FormFieldVariableFileValue `json:"file_value,omitempty"` // 文件变量对象

	I18nValue *FormFieldVariableI18nValue `json:"i18n_value,omitempty"` // i18n变量对象

	ObjectValue *FormFieldVariableObjectValue `json:"object_value,omitempty"` // 对象变量

	ListValue *FormFieldVariableListValue `json:"list_value,omitempty"` // 列表对象

	RecordValue *FormFieldVariableRecordValue `json:"record_value,omitempty"` // 记录对象
}

type FormVariableValueInfoBuilder struct {
	textValue     *FormFieldVariableTextValue // 文本变量对象
	textValueFlag bool

	numberValue     *FormFieldVariableNumberValue // 数值变量对象
	numberValueFlag bool

	dateValue     *FormFieldVariableDateValue // 日期变量对象
	dateValueFlag bool

	employmentValue     *FormFieldVariableEmploymentValue // 员工变量对象
	employmentValueFlag bool

	dateTimeValue     *FormFieldVariableDatetimeValue // 日期时间变量对象
	dateTimeValueFlag bool

	enumValue     *FormFieldVariableEnumValue // 枚举变量对象
	enumValueFlag bool

	nullValue     *FormFieldVariableNullValue // 空变量对象
	nullValueFlag bool

	boolValue     *FormFieldVariableBoolValue // 布尔变量对象
	boolValueFlag bool

	departmentValue     *FormFieldVariableDepartmentValue // 部门变量对象
	departmentValueFlag bool

	fileValue     *FormFieldVariableFileValue // 文件变量对象
	fileValueFlag bool

	i18nValue     *FormFieldVariableI18nValue // i18n变量对象
	i18nValueFlag bool

	objectValue     *FormFieldVariableObjectValue // 对象变量
	objectValueFlag bool

	listValue     *FormFieldVariableListValue // 列表对象
	listValueFlag bool

	recordValue     *FormFieldVariableRecordValue // 记录对象
	recordValueFlag bool
}

func NewFormVariableValueInfoBuilder() *FormVariableValueInfoBuilder {
	builder := &FormVariableValueInfoBuilder{}
	return builder
}

// 文本变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) TextValue(textValue *FormFieldVariableTextValue) *FormVariableValueInfoBuilder {
	builder.textValue = textValue
	builder.textValueFlag = true
	return builder
}

// 数值变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) NumberValue(numberValue *FormFieldVariableNumberValue) *FormVariableValueInfoBuilder {
	builder.numberValue = numberValue
	builder.numberValueFlag = true
	return builder
}

// 日期变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) DateValue(dateValue *FormFieldVariableDateValue) *FormVariableValueInfoBuilder {
	builder.dateValue = dateValue
	builder.dateValueFlag = true
	return builder
}

// 员工变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) EmploymentValue(employmentValue *FormFieldVariableEmploymentValue) *FormVariableValueInfoBuilder {
	builder.employmentValue = employmentValue
	builder.employmentValueFlag = true
	return builder
}

// 日期时间变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) DateTimeValue(dateTimeValue *FormFieldVariableDatetimeValue) *FormVariableValueInfoBuilder {
	builder.dateTimeValue = dateTimeValue
	builder.dateTimeValueFlag = true
	return builder
}

// 枚举变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) EnumValue(enumValue *FormFieldVariableEnumValue) *FormVariableValueInfoBuilder {
	builder.enumValue = enumValue
	builder.enumValueFlag = true
	return builder
}

// 空变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) NullValue(nullValue *FormFieldVariableNullValue) *FormVariableValueInfoBuilder {
	builder.nullValue = nullValue
	builder.nullValueFlag = true
	return builder
}

// 布尔变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) BoolValue(boolValue *FormFieldVariableBoolValue) *FormVariableValueInfoBuilder {
	builder.boolValue = boolValue
	builder.boolValueFlag = true
	return builder
}

// 部门变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) DepartmentValue(departmentValue *FormFieldVariableDepartmentValue) *FormVariableValueInfoBuilder {
	builder.departmentValue = departmentValue
	builder.departmentValueFlag = true
	return builder
}

// 文件变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) FileValue(fileValue *FormFieldVariableFileValue) *FormVariableValueInfoBuilder {
	builder.fileValue = fileValue
	builder.fileValueFlag = true
	return builder
}

// i18n变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) I18nValue(i18nValue *FormFieldVariableI18nValue) *FormVariableValueInfoBuilder {
	builder.i18nValue = i18nValue
	builder.i18nValueFlag = true
	return builder
}

// 对象变量
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) ObjectValue(objectValue *FormFieldVariableObjectValue) *FormVariableValueInfoBuilder {
	builder.objectValue = objectValue
	builder.objectValueFlag = true
	return builder
}

// 列表对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) ListValue(listValue *FormFieldVariableListValue) *FormVariableValueInfoBuilder {
	builder.listValue = listValue
	builder.listValueFlag = true
	return builder
}

// 记录对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) RecordValue(recordValue *FormFieldVariableRecordValue) *FormVariableValueInfoBuilder {
	builder.recordValue = recordValue
	builder.recordValueFlag = true
	return builder
}

func (builder *FormVariableValueInfoBuilder) Build() *FormVariableValueInfo {
	req := &FormVariableValueInfo{}
	if builder.textValueFlag {
		req.TextValue = builder.textValue
	}
	if builder.numberValueFlag {
		req.NumberValue = builder.numberValue
	}
	if builder.dateValueFlag {
		req.DateValue = builder.dateValue
	}
	if builder.employmentValueFlag {
		req.EmploymentValue = builder.employmentValue
	}
	if builder.dateTimeValueFlag {
		req.DateTimeValue = builder.dateTimeValue
	}
	if builder.enumValueFlag {
		req.EnumValue = builder.enumValue
	}
	if builder.nullValueFlag {
		req.NullValue = builder.nullValue
	}
	if builder.boolValueFlag {
		req.BoolValue = builder.boolValue
	}
	if builder.departmentValueFlag {
		req.DepartmentValue = builder.departmentValue
	}
	if builder.fileValueFlag {
		req.FileValue = builder.fileValue
	}
	if builder.i18nValueFlag {
		req.I18nValue = builder.i18nValue
	}
	if builder.objectValueFlag {
		req.ObjectValue = builder.objectValue
	}
	if builder.listValueFlag {
		req.ListValue = builder.listValue
	}
	if builder.recordValueFlag {
		req.RecordValue = builder.recordValue
	}
	return req
}

type FormVariableValueInfoExample struct {
	ObjectValue *FormFieldVariableObjectValue `json:"object_value,omitempty"` // 示例的国家地区变量对象
}

type FormVariableValueInfoExampleBuilder struct {
	objectValue     *FormFieldVariableObjectValue // 示例的国家地区变量对象
	objectValueFlag bool
}

func NewFormVariableValueInfoExampleBuilder() *FormVariableValueInfoExampleBuilder {
	builder := &FormVariableValueInfoExampleBuilder{}
	return builder
}

// 示例的国家地区变量对象
//
// 示例值：
func (builder *FormVariableValueInfoExampleBuilder) ObjectValue(objectValue *FormFieldVariableObjectValue) *FormVariableValueInfoExampleBuilder {
	builder.objectValue = objectValue
	builder.objectValueFlag = true
	return builder
}

func (builder *FormVariableValueInfoExampleBuilder) Build() *FormVariableValueInfoExample {
	req := &FormVariableValueInfoExample{}
	if builder.objectValueFlag {
		req.ObjectValue = builder.objectValue
	}
	return req
}

type HiberarchyCommon struct {
	ParentId *string `json:"parent_id,omitempty"` // 上级组织 ID

	Name []*I18n `json:"name,omitempty"` // 名称

	Type *Enum `json:"type,omitempty"` // 组织类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)组织类型（organization_type）枚举定义部分获得

	Active *bool `json:"active,omitempty"` // 是否启用

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	Code *string `json:"code,omitempty"` // 编码

	Description []*I18n `json:"description,omitempty"` // 描述

	TreeOrder *string `json:"tree_order,omitempty"` // 树形排序，代表同层级的部门排序序号

	ListOrder *string `json:"list_order,omitempty"` // 列表排序，代表所有部门的混排序号

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type HiberarchyCommonBuilder struct {
	parentId     string // 上级组织 ID
	parentIdFlag bool

	name     []*I18n // 名称
	nameFlag bool

	type_    *Enum // 组织类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)组织类型（organization_type）枚举定义部分获得
	typeFlag bool

	active     bool // 是否启用
	activeFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	code     string // 编码
	codeFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	treeOrder     string // 树形排序，代表同层级的部门排序序号
	treeOrderFlag bool

	listOrder     string // 列表排序，代表所有部门的混排序号
	listOrderFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewHiberarchyCommonBuilder() *HiberarchyCommonBuilder {
	builder := &HiberarchyCommonBuilder{}
	return builder
}

// 上级组织 ID
//
// 示例值：4719168654814483759
func (builder *HiberarchyCommonBuilder) ParentId(parentId string) *HiberarchyCommonBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *HiberarchyCommonBuilder) Name(name []*I18n) *HiberarchyCommonBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 组织类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)组织类型（organization_type）枚举定义部分获得
//
// 示例值：
func (builder *HiberarchyCommonBuilder) Type(type_ *Enum) *HiberarchyCommonBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *HiberarchyCommonBuilder) Active(active bool) *HiberarchyCommonBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *HiberarchyCommonBuilder) EffectiveTime(effectiveTime string) *HiberarchyCommonBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *HiberarchyCommonBuilder) ExpirationTime(expirationTime string) *HiberarchyCommonBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 编码
//
// 示例值：12456
func (builder *HiberarchyCommonBuilder) Code(code string) *HiberarchyCommonBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *HiberarchyCommonBuilder) Description(description []*I18n) *HiberarchyCommonBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 树形排序，代表同层级的部门排序序号
//
// 示例值：001000
func (builder *HiberarchyCommonBuilder) TreeOrder(treeOrder string) *HiberarchyCommonBuilder {
	builder.treeOrder = treeOrder
	builder.treeOrderFlag = true
	return builder
}

// 列表排序，代表所有部门的混排序号
//
// 示例值：001000-001000
func (builder *HiberarchyCommonBuilder) ListOrder(listOrder string) *HiberarchyCommonBuilder {
	builder.listOrder = listOrder
	builder.listOrderFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *HiberarchyCommonBuilder) CustomFields(customFields []*ObjectFieldData) *HiberarchyCommonBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *HiberarchyCommonBuilder) Build() *HiberarchyCommon {
	req := &HiberarchyCommon{}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.typeFlag {
		req.Type = builder.type_
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.treeOrderFlag {
		req.TreeOrder = &builder.treeOrder

	}
	if builder.listOrderFlag {
		req.ListOrder = &builder.listOrder

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Hrbp struct {
	EmploymentIdList []string `json:"employment_id_list,omitempty"` // HRBP/属地 BP 的雇员ID ：;;对于 HRBP 而言，若入参的部门没有找到对应的 HRBP，将向上找寻，即向其上级部门取对应的 HRBP，且同一部门可能有多个 HRBP；;;对于 属地 BP 而言，若入参的部门和地点没有找到对应的属地 BP，将优先拿地点向上找寻，即向其上级地点取对应的属地 BP

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID
}

type HrbpBuilder struct {
	employmentIdList     []string // HRBP/属地 BP 的雇员ID ：;;对于 HRBP 而言，若入参的部门没有找到对应的 HRBP，将向上找寻，即向其上级部门取对应的 HRBP，且同一部门可能有多个 HRBP；;;对于 属地 BP 而言，若入参的部门和地点没有找到对应的属地 BP，将优先拿地点向上找寻，即向其上级地点取对应的属地 BP
	employmentIdListFlag bool

	departmentId     string // 部门 ID
	departmentIdFlag bool

	workLocationId     string // 工作地点 ID
	workLocationIdFlag bool
}

func NewHrbpBuilder() *HrbpBuilder {
	builder := &HrbpBuilder{}
	return builder
}

// HRBP/属地 BP 的雇员ID ：;;对于 HRBP 而言，若入参的部门没有找到对应的 HRBP，将向上找寻，即向其上级部门取对应的 HRBP，且同一部门可能有多个 HRBP；;;对于 属地 BP 而言，若入参的部门和地点没有找到对应的属地 BP，将优先拿地点向上找寻，即向其上级地点取对应的属地 BP
//
// 示例值：
func (builder *HrbpBuilder) EmploymentIdList(employmentIdList []string) *HrbpBuilder {
	builder.employmentIdList = employmentIdList
	builder.employmentIdListFlag = true
	return builder
}

// 部门 ID
//
// 示例值：7063072995761456670
func (builder *HrbpBuilder) DepartmentId(departmentId string) *HrbpBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 工作地点 ID
//
// 示例值：6892687221355185677
func (builder *HrbpBuilder) WorkLocationId(workLocationId string) *HrbpBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

func (builder *HrbpBuilder) Build() *Hrbp {
	req := &Hrbp{}
	if builder.employmentIdListFlag {
		req.EmploymentIdList = builder.employmentIdList
	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	return req
}

type I18n struct {
	Lang *string `json:"lang,omitempty"` // 名称信息的语言

	Value *string `json:"value,omitempty"` // 名称信息的内容
}

type I18nBuilder struct {
	lang     string // 名称信息的语言
	langFlag bool

	value     string // 名称信息的内容
	valueFlag bool
}

func NewI18nBuilder() *I18nBuilder {
	builder := &I18nBuilder{}
	return builder
}

// 名称信息的语言
//
// 示例值：zh-CN
func (builder *I18nBuilder) Lang(lang string) *I18nBuilder {
	builder.lang = lang
	builder.langFlag = true
	return builder
}

// 名称信息的内容
//
// 示例值：张三
func (builder *I18nBuilder) Value(value string) *I18nBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *I18nBuilder) Build() *I18n {
	req := &I18n{}
	if builder.langFlag {
		req.Lang = &builder.lang

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type IdInfo struct {
	Id *string `json:"id,omitempty"` // 传入的 ID

	TargetId *string `json:"target_id,omitempty"` // 目标 ID 值
}

type IdInfoBuilder struct {
	id     string // 传入的 ID
	idFlag bool

	targetId     string // 目标 ID 值
	targetIdFlag bool
}

func NewIdInfoBuilder() *IdInfoBuilder {
	builder := &IdInfoBuilder{}
	return builder
}

// 传入的 ID
//
// 示例值：7224321696097404460
func (builder *IdInfoBuilder) Id(id string) *IdInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 目标 ID 值
//
// 示例值：7224321696097404461
func (builder *IdInfoBuilder) TargetId(targetId string) *IdInfoBuilder {
	builder.targetId = targetId
	builder.targetIdFlag = true
	return builder
}

func (builder *IdInfoBuilder) Build() *IdInfo {
	req := &IdInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.targetIdFlag {
		req.TargetId = &builder.targetId

	}
	return req
}

type ImageFieldSetting struct {
	ImageType *int `json:"image_type,omitempty"` // 图片类型枚举，具体如下：;1. Avatar 头像;2. BadgePhoto 工卡照片;3. Logo 标志

	DisplayStyle *int `json:"display_style,omitempty"` // 显示样式枚举，具体如下：;1. SquareImage 方形;2. RoundImage  圆形
}

type ImageFieldSettingBuilder struct {
	imageType     int // 图片类型枚举，具体如下：;1. Avatar 头像;2. BadgePhoto 工卡照片;3. Logo 标志
	imageTypeFlag bool

	displayStyle     int // 显示样式枚举，具体如下：;1. SquareImage 方形;2. RoundImage  圆形
	displayStyleFlag bool
}

func NewImageFieldSettingBuilder() *ImageFieldSettingBuilder {
	builder := &ImageFieldSettingBuilder{}
	return builder
}

// 图片类型枚举，具体如下：;1. Avatar 头像;2. BadgePhoto 工卡照片;3. Logo 标志
//
// 示例值：1
func (builder *ImageFieldSettingBuilder) ImageType(imageType int) *ImageFieldSettingBuilder {
	builder.imageType = imageType
	builder.imageTypeFlag = true
	return builder
}

// 显示样式枚举，具体如下：;1. SquareImage 方形;2. RoundImage  圆形
//
// 示例值：1
func (builder *ImageFieldSettingBuilder) DisplayStyle(displayStyle int) *ImageFieldSettingBuilder {
	builder.displayStyle = displayStyle
	builder.displayStyleFlag = true
	return builder
}

func (builder *ImageFieldSettingBuilder) Build() *ImageFieldSetting {
	req := &ImageFieldSetting{}
	if builder.imageTypeFlag {
		req.ImageType = &builder.imageType

	}
	if builder.displayStyleFlag {
		req.DisplayStyle = &builder.displayStyle

	}
	return req
}

type Job struct {
	Id *string `json:"id,omitempty"` // 职务 ID

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	Description []*I18n `json:"description,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 是否启用

	JobTitle []*I18n `json:"job_title,omitempty"` // 职务头衔

	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID

	JobFamilyIdList []string `json:"job_family_id_list,omitempty"` // 职务序列 ID 列表，枚举值及详细信息可通过【批量查询职务序列】接口查询获得

	JobLevelIdList []string `json:"job_level_id_list,omitempty"` // 职务级别 ID 列表，枚举值及详细信息可通过【批量查询职务级别】接口查询获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type JobBuilder struct {
	id     string // 职务 ID
	idFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	active     bool // 是否启用
	activeFlag bool

	jobTitle     []*I18n // 职务头衔
	jobTitleFlag bool

	pathwayId     string // 通道ID
	pathwayIdFlag bool

	jobFamilyIdList     []string // 职务序列 ID 列表，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
	jobFamilyIdListFlag bool

	jobLevelIdList     []string // 职务级别 ID 列表，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
	jobLevelIdListFlag bool

	workingHoursTypeId     string // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
	workingHoursTypeIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewJobBuilder() *JobBuilder {
	builder := &JobBuilder{}
	return builder
}

// 职务 ID
//
// 示例值：4698040628992333549
func (builder *JobBuilder) Id(id string) *JobBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 编码
//
// 示例值：JP422119
func (builder *JobBuilder) Code(code string) *JobBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobBuilder) Name(name []*I18n) *JobBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobBuilder) Description(description []*I18n) *JobBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *JobBuilder) Active(active bool) *JobBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 职务头衔
//
// 示例值：
func (builder *JobBuilder) JobTitle(jobTitle []*I18n) *JobBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// 通道ID
//
// 示例值：4719519211875096301
func (builder *JobBuilder) PathwayId(pathwayId string) *JobBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 职务序列 ID 列表，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
//
// 示例值：7373183781
func (builder *JobBuilder) JobFamilyIdList(jobFamilyIdList []string) *JobBuilder {
	builder.jobFamilyIdList = jobFamilyIdList
	builder.jobFamilyIdListFlag = true
	return builder
}

// 职务级别 ID 列表，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
//
// 示例值：316316317
func (builder *JobBuilder) JobLevelIdList(jobLevelIdList []string) *JobBuilder {
	builder.jobLevelIdList = jobLevelIdList
	builder.jobLevelIdListFlag = true
	return builder
}

// 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobBuilder) WorkingHoursTypeId(workingHoursTypeId string) *JobBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01 00:00:00
func (builder *JobBuilder) EffectiveTime(effectiveTime string) *JobBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2021-01-01 00:00:00
func (builder *JobBuilder) ExpirationTime(expirationTime string) *JobBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobBuilder) CustomFields(customFields []*ObjectFieldData) *JobBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *JobBuilder) Build() *Job {
	req := &Job{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.jobTitleFlag {
		req.JobTitle = builder.jobTitle
	}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	if builder.jobFamilyIdListFlag {
		req.JobFamilyIdList = builder.jobFamilyIdList
	}
	if builder.jobLevelIdListFlag {
		req.JobLevelIdList = builder.jobLevelIdList
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type JobCategory struct {
	Id *string `json:"id,omitempty"` // id
}

type JobCategoryBuilder struct {
	id     string // id
	idFlag bool
}

func NewJobCategoryBuilder() *JobCategoryBuilder {
	builder := &JobCategoryBuilder{}
	return builder
}

// id
//
// 示例值：
func (builder *JobCategoryBuilder) Id(id string) *JobCategoryBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *JobCategoryBuilder) Build() *JobCategory {
	req := &JobCategory{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type JobChange struct {
	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	Status *int `json:"status,omitempty"` // 异动状态

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因唯一标识

	ProcessId *string `json:"process_id,omitempty"` // 异动发起后审批流程 id

	EffectiveDate *string `json:"effective_date,omitempty"` // 异动生效日期

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间

	TransferInfo *TransferInfo `json:"transfer_info,omitempty"` // 异动详细信息
}

type JobChangeBuilder struct {
	jobChangeId     string // 异动记录 id
	jobChangeIdFlag bool

	employmentId     string // 雇员 id
	employmentIdFlag bool

	status     int // 异动状态
	statusFlag bool

	transferTypeUniqueIdentifier     string // 异动类型唯一标识
	transferTypeUniqueIdentifierFlag bool

	transferReasonUniqueIdentifier     string // 异动原因唯一标识
	transferReasonUniqueIdentifierFlag bool

	processId     string // 异动发起后审批流程 id
	processIdFlag bool

	effectiveDate     string // 异动生效日期
	effectiveDateFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool

	transferInfo     *TransferInfo // 异动详细信息
	transferInfoFlag bool
}

func NewJobChangeBuilder() *JobChangeBuilder {
	builder := &JobChangeBuilder{}
	return builder
}

// 异动记录 id
//
// 示例值：6991776076699549697
func (builder *JobChangeBuilder) JobChangeId(jobChangeId string) *JobChangeBuilder {
	builder.jobChangeId = jobChangeId
	builder.jobChangeIdFlag = true
	return builder
}

// 雇员 id
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *JobChangeBuilder) EmploymentId(employmentId string) *JobChangeBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 异动状态
//
// 示例值：4
func (builder *JobChangeBuilder) Status(status int) *JobChangeBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 异动类型唯一标识
//
// 示例值：direct_leader_change
func (builder *JobChangeBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *JobChangeBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动原因唯一标识
//
// 示例值：involuntary_transfer
func (builder *JobChangeBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier string) *JobChangeBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 异动发起后审批流程 id
//
// 示例值：6991776078461142564
func (builder *JobChangeBuilder) ProcessId(processId string) *JobChangeBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 异动生效日期
//
// 示例值：2022-03-01
func (builder *JobChangeBuilder) EffectiveDate(effectiveDate string) *JobChangeBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 创建时间
//
// 示例值：1627899724000
func (builder *JobChangeBuilder) CreatedTime(createdTime string) *JobChangeBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：1647434443000
func (builder *JobChangeBuilder) UpdatedTime(updatedTime string) *JobChangeBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

// 异动详细信息
//
// 示例值：
func (builder *JobChangeBuilder) TransferInfo(transferInfo *TransferInfo) *JobChangeBuilder {
	builder.transferInfo = transferInfo
	builder.transferInfoFlag = true
	return builder
}

func (builder *JobChangeBuilder) Build() *JobChange {
	req := &JobChange{}
	if builder.jobChangeIdFlag {
		req.JobChangeId = &builder.jobChangeId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier

	}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = &builder.transferReasonUniqueIdentifier

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	if builder.transferInfoFlag {
		req.TransferInfo = builder.transferInfo
	}
	return req
}

type JobData struct {
	Id *string `json:"id,omitempty"` // 任职信息 ID

	VersionId *string `json:"version_id,omitempty"` // 任职记录版本 ID

	JobLevelId *string `json:"job_level_id,omitempty"` // 职务级别 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID，枚举值及详细信息可通过【批量查询人员类型】接口查询获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得

	JobId *string `json:"job_id,omitempty"` // 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得

	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期（实际结束日期）

	PrimaryJobData *bool `json:"primary_job_data,omitempty"` // 是否为主任职

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	JobFamilyId *string `json:"job_family_id,omitempty"` // 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得

	AssignmentStartReason *Enum `json:"assignment_start_reason,omitempty"` // 任职原因，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)任职原因（assignment_start_reason）枚举定义部分获得

	ProbationExpectedEndDate *string `json:"probation_expected_end_date,omitempty"` // 预计试用期结束日期

	ProbationOutcome *Enum `json:"probation_outcome,omitempty"` // 试用期结果，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)试用期结果（probation_outcome）枚举定义部分获得

	WeeklyWorkingHours *int `json:"weekly_working_hours,omitempty"` // 周工作时长

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 实线主管的任职记录ID

	DottedLineManagerIdList []string `json:"dotted_line_manager_id_list,omitempty"` // 虚线主管的任职记录ID

	SecondDirectManagerId *string `json:"second_direct_manager_id,omitempty"` // 第二实线主管的任职记录ID

	CostCenterRate []*SupportCostCenterItem `json:"cost_center_rate,omitempty"` // 成本中心分摊信息

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长v2

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID，枚举值及详细信息可通过【查询单个岗位】接口查询获得

	PathwayId *string `json:"pathway_id,omitempty"` // 通道 ID

	JobDataReason *Enum `json:"job_data_reason,omitempty"` // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name = "job_data";  - custom_api_name = "job_data_reason"
}

type JobDataBuilder struct {
	id     string // 任职信息 ID
	idFlag bool

	versionId     string // 任职记录版本 ID
	versionIdFlag bool

	jobLevelId     string // 职务级别 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
	jobLevelIdFlag bool

	jobGradeId     string // 职等ID
	jobGradeIdFlag bool

	employeeTypeId     string // 人员类型 ID，枚举值及详细信息可通过【批量查询人员类型】接口查询获得
	employeeTypeIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
	workingHoursTypeIdFlag bool

	workLocationId     string // 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得
	workLocationIdFlag bool

	departmentId     string // 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得
	departmentIdFlag bool

	jobId     string // 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得
	jobIdFlag bool

	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationEndDate     string // 试用期结束日期（实际结束日期）
	probationEndDateFlag bool

	primaryJobData     bool // 是否为主任职
	primaryJobDataFlag bool

	employmentId     string // 雇佣 ID
	employmentIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	jobFamilyId     string // 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
	jobFamilyIdFlag bool

	assignmentStartReason     *Enum // 任职原因，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)任职原因（assignment_start_reason）枚举定义部分获得
	assignmentStartReasonFlag bool

	probationExpectedEndDate     string // 预计试用期结束日期
	probationExpectedEndDateFlag bool

	probationOutcome     *Enum // 试用期结果，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)试用期结果（probation_outcome）枚举定义部分获得
	probationOutcomeFlag bool

	weeklyWorkingHours     int // 周工作时长
	weeklyWorkingHoursFlag bool

	directManagerId     string // 实线主管的任职记录ID
	directManagerIdFlag bool

	dottedLineManagerIdList     []string // 虚线主管的任职记录ID
	dottedLineManagerIdListFlag bool

	secondDirectManagerId     string // 第二实线主管的任职记录ID
	secondDirectManagerIdFlag bool

	costCenterRate     []*SupportCostCenterItem // 成本中心分摊信息
	costCenterRateFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长v2
	weeklyWorkingHoursV2Flag bool

	workShift     *Enum // 排班类型
	workShiftFlag bool

	compensationType     *Enum // 薪资类型
	compensationTypeFlag bool

	serviceCompany     string // 任职公司
	serviceCompanyFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool

	positionId     string // 岗位 ID，枚举值及详细信息可通过【查询单个岗位】接口查询获得
	positionIdFlag bool

	pathwayId     string // 通道 ID
	pathwayIdFlag bool

	jobDataReason     *Enum // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name = "job_data";  - custom_api_name = "job_data_reason"
	jobDataReasonFlag bool
}

func NewJobDataBuilder() *JobDataBuilder {
	builder := &JobDataBuilder{}
	return builder
}

// 任职信息 ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) Id(id string) *JobDataBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 任职记录版本 ID
//
// 示例值：6890452208593372697
func (builder *JobDataBuilder) VersionId(versionId string) *JobDataBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 职务级别 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobLevelId(jobLevelId string) *JobDataBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobGradeId(jobGradeId string) *JobDataBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 人员类型 ID，枚举值及详细信息可通过【批量查询人员类型】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) EmployeeTypeId(employeeTypeId string) *JobDataBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) WorkingHoursTypeId(workingHoursTypeId string) *JobDataBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) WorkLocationId(workLocationId string) *JobDataBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) DepartmentId(departmentId string) *JobDataBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobId(jobId string) *JobDataBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 试用期开始日期
//
// 示例值：2018-03-16
func (builder *JobDataBuilder) ProbationStartDate(probationStartDate string) *JobDataBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期结束日期（实际结束日期）
//
// 示例值：2019-05-24
func (builder *JobDataBuilder) ProbationEndDate(probationEndDate string) *JobDataBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 是否为主任职
//
// 示例值：true
func (builder *JobDataBuilder) PrimaryJobData(primaryJobData bool) *JobDataBuilder {
	builder.primaryJobData = primaryJobData
	builder.primaryJobDataFlag = true
	return builder
}

// 雇佣 ID
//
// 示例值：6893014062142064135
func (builder *JobDataBuilder) EmploymentId(employmentId string) *JobDataBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *JobDataBuilder) EffectiveTime(effectiveTime string) *JobDataBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *JobDataBuilder) ExpirationTime(expirationTime string) *JobDataBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
//
// 示例值：1245678
func (builder *JobDataBuilder) JobFamilyId(jobFamilyId string) *JobDataBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 任职原因，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)任职原因（assignment_start_reason）枚举定义部分获得
//
// 示例值：onboarding
func (builder *JobDataBuilder) AssignmentStartReason(assignmentStartReason *Enum) *JobDataBuilder {
	builder.assignmentStartReason = assignmentStartReason
	builder.assignmentStartReasonFlag = true
	return builder
}

// 预计试用期结束日期
//
// 示例值：2006-01-02
func (builder *JobDataBuilder) ProbationExpectedEndDate(probationExpectedEndDate string) *JobDataBuilder {
	builder.probationExpectedEndDate = probationExpectedEndDate
	builder.probationExpectedEndDateFlag = true
	return builder
}

// 试用期结果，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)试用期结果（probation_outcome）枚举定义部分获得
//
// 示例值：passed
func (builder *JobDataBuilder) ProbationOutcome(probationOutcome *Enum) *JobDataBuilder {
	builder.probationOutcome = probationOutcome
	builder.probationOutcomeFlag = true
	return builder
}

// 周工作时长
//
// 示例值：30
func (builder *JobDataBuilder) WeeklyWorkingHours(weeklyWorkingHours int) *JobDataBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 实线主管的任职记录ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) DirectManagerId(directManagerId string) *JobDataBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线主管的任职记录ID
//
// 示例值：["6971723901730686501"]
func (builder *JobDataBuilder) DottedLineManagerIdList(dottedLineManagerIdList []string) *JobDataBuilder {
	builder.dottedLineManagerIdList = dottedLineManagerIdList
	builder.dottedLineManagerIdListFlag = true
	return builder
}

// 第二实线主管的任职记录ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) SecondDirectManagerId(secondDirectManagerId string) *JobDataBuilder {
	builder.secondDirectManagerId = secondDirectManagerId
	builder.secondDirectManagerIdFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *JobDataBuilder) CostCenterRate(costCenterRate []*SupportCostCenterItem) *JobDataBuilder {
	builder.costCenterRate = costCenterRate
	builder.costCenterRateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobDataBuilder) CustomFields(customFields []*ObjectFieldData) *JobDataBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 周工作时长v2
//
// 示例值：37.5
func (builder *JobDataBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *JobDataBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 排班类型
//
// 示例值：
func (builder *JobDataBuilder) WorkShift(workShift *Enum) *JobDataBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 薪资类型
//
// 示例值：
func (builder *JobDataBuilder) CompensationType(compensationType *Enum) *JobDataBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 任职公司
//
// 示例值：6890452208593372680
func (builder *JobDataBuilder) ServiceCompany(serviceCompany string) *JobDataBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6890452208593372680
func (builder *JobDataBuilder) EmployeeSubtypeId(employeeSubtypeId string) *JobDataBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// 岗位 ID，枚举值及详细信息可通过【查询单个岗位】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) PositionId(positionId string) *JobDataBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 通道 ID
//
// 示例值：6890452208593372671
func (builder *JobDataBuilder) PathwayId(pathwayId string) *JobDataBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name = "job_data";  - custom_api_name = "job_data_reason"
//
// 示例值：
func (builder *JobDataBuilder) JobDataReason(jobDataReason *Enum) *JobDataBuilder {
	builder.jobDataReason = jobDataReason
	builder.jobDataReasonFlag = true
	return builder
}

func (builder *JobDataBuilder) Build() *JobData {
	req := &JobData{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.primaryJobDataFlag {
		req.PrimaryJobData = &builder.primaryJobData

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.assignmentStartReasonFlag {
		req.AssignmentStartReason = builder.assignmentStartReason
	}
	if builder.probationExpectedEndDateFlag {
		req.ProbationExpectedEndDate = &builder.probationExpectedEndDate

	}
	if builder.probationOutcomeFlag {
		req.ProbationOutcome = builder.probationOutcome
	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdListFlag {
		req.DottedLineManagerIdList = builder.dottedLineManagerIdList
	}
	if builder.secondDirectManagerIdFlag {
		req.SecondDirectManagerId = &builder.secondDirectManagerId

	}
	if builder.costCenterRateFlag {
		req.CostCenterRate = builder.costCenterRate
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	if builder.jobDataReasonFlag {
		req.JobDataReason = builder.jobDataReason
	}
	return req
}

type JobDataCostCenter struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心id，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息

	Rate *int `json:"rate,omitempty"` // 分摊比例

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type JobDataCostCenterBuilder struct {
	costCenterId     string // 成本中心id，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
	costCenterIdFlag bool

	rate     int // 分摊比例
	rateFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewJobDataCostCenterBuilder() *JobDataCostCenterBuilder {
	builder := &JobDataCostCenterBuilder{}
	return builder
}

// 成本中心id，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
//
// 示例值：6950635856373745165
func (builder *JobDataCostCenterBuilder) CostCenterId(costCenterId string) *JobDataCostCenterBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 分摊比例
//
// 示例值：100
func (builder *JobDataCostCenterBuilder) Rate(rate int) *JobDataCostCenterBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobDataCostCenterBuilder) CustomFields(customFields []*ObjectFieldData) *JobDataCostCenterBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *JobDataCostCenterBuilder) Build() *JobDataCostCenter {
	req := &JobDataCostCenter{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type JobFamily struct {
	Id *string `json:"id,omitempty"` // 职务序列 ID

	Name []*I18n `json:"name,omitempty"` // 名称

	Active *bool `json:"active,omitempty"` // 是否启用

	Selectable *bool `json:"selectable,omitempty"` // 可选

	ParentId *string `json:"parent_id,omitempty"` // 上级职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得

	PathwayIds []string `json:"pathway_ids,omitempty"` // 通道ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	Code *string `json:"code,omitempty"` // 编码

	Description []*I18n `json:"description,omitempty"` // 描述

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type JobFamilyBuilder struct {
	id     string // 职务序列 ID
	idFlag bool

	name     []*I18n // 名称
	nameFlag bool

	active     bool // 是否启用
	activeFlag bool

	selectable     bool // 可选
	selectableFlag bool

	parentId     string // 上级职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
	parentIdFlag bool

	pathwayIds     []string // 通道ID
	pathwayIdsFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	code     string // 编码
	codeFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewJobFamilyBuilder() *JobFamilyBuilder {
	builder := &JobFamilyBuilder{}
	return builder
}

// 职务序列 ID
//
// 示例值：4698019107896524633
func (builder *JobFamilyBuilder) Id(id string) *JobFamilyBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobFamilyBuilder) Name(name []*I18n) *JobFamilyBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *JobFamilyBuilder) Active(active bool) *JobFamilyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 可选
//
// 示例值：true
func (builder *JobFamilyBuilder) Selectable(selectable bool) *JobFamilyBuilder {
	builder.selectable = selectable
	builder.selectableFlag = true
	return builder
}

// 上级职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
//
// 示例值：4698020757495316313
func (builder *JobFamilyBuilder) ParentId(parentId string) *JobFamilyBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 通道ID
//
// 示例值：
func (builder *JobFamilyBuilder) PathwayIds(pathwayIds []string) *JobFamilyBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *JobFamilyBuilder) EffectiveTime(effectiveTime string) *JobFamilyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *JobFamilyBuilder) ExpirationTime(expirationTime string) *JobFamilyBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 编码
//
// 示例值：123456
func (builder *JobFamilyBuilder) Code(code string) *JobFamilyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobFamilyBuilder) Description(description []*I18n) *JobFamilyBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobFamilyBuilder) CustomFields(customFields []*ObjectFieldData) *JobFamilyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *JobFamilyBuilder) Build() *JobFamily {
	req := &JobFamily{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.selectableFlag {
		req.Selectable = &builder.selectable

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type JobLevel struct {
	Id *string `json:"id,omitempty"` // 职务级别 ID

	LevelOrder *int `json:"level_order,omitempty"` // 职级数值

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	Description []*I18n `json:"description,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 是否启用

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	JobGrade []string `json:"job_grade,omitempty"` // 职等 ID 列表

	PathwayIds []string `json:"pathway_ids,omitempty"` // 通道 ID 列表
}

type JobLevelBuilder struct {
	id     string // 职务级别 ID
	idFlag bool

	levelOrder     int // 职级数值
	levelOrderFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	active     bool // 是否启用
	activeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	jobGrade     []string // 职等 ID 列表
	jobGradeFlag bool

	pathwayIds     []string // 通道 ID 列表
	pathwayIdsFlag bool
}

func NewJobLevelBuilder() *JobLevelBuilder {
	builder := &JobLevelBuilder{}
	return builder
}

// 职务级别 ID
//
// 示例值：4692446793125560154
func (builder *JobLevelBuilder) Id(id string) *JobLevelBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 职级数值
//
// 示例值：9999
func (builder *JobLevelBuilder) LevelOrder(levelOrder int) *JobLevelBuilder {
	builder.levelOrder = levelOrder
	builder.levelOrderFlag = true
	return builder
}

// 编码
//
// 示例值：VQzo/BSonp8l6PmcZ+VlDhkd2595LMkhyBAGX6HAlCY=
func (builder *JobLevelBuilder) Code(code string) *JobLevelBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobLevelBuilder) Name(name []*I18n) *JobLevelBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobLevelBuilder) Description(description []*I18n) *JobLevelBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *JobLevelBuilder) Active(active bool) *JobLevelBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobLevelBuilder) CustomFields(customFields []*ObjectFieldData) *JobLevelBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 职等 ID 列表
//
// 示例值：
func (builder *JobLevelBuilder) JobGrade(jobGrade []string) *JobLevelBuilder {
	builder.jobGrade = jobGrade
	builder.jobGradeFlag = true
	return builder
}

// 通道 ID 列表
//
// 示例值：
func (builder *JobLevelBuilder) PathwayIds(pathwayIds []string) *JobLevelBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

func (builder *JobLevelBuilder) Build() *JobLevel {
	req := &JobLevel{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.levelOrderFlag {
		req.LevelOrder = &builder.levelOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.jobGradeFlag {
		req.JobGrade = builder.jobGrade
	}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	return req
}

type LeaveBalance struct {
	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	LeaveTypeName []*I18n `json:"leave_type_name,omitempty"` // 假期类型名称

	HistoricalCyclesLeft *string `json:"historical_cycles_left,omitempty"` // 结转的历史周期授予时长

	ThisCycleTotal *string `json:"this_cycle_total,omitempty"` // 本周期授予时长

	ThisCycleTaken *string `json:"this_cycle_taken,omitempty"` // 本周期已休时长

	LeaveBalance *string `json:"leave_balance,omitempty"` // 假期余额

	LeaveDurationUnit *int `json:"leave_duration_unit,omitempty"` // 假期时长单位;;可选值有：;;- 1: 天;;- 2: 小时

	HistoryCycleAccrual *string `json:"history_cycle_accrual,omitempty"` // 历史结转发放

	BalanceInCurrentCycle *string `json:"balance_in_current_cycle,omitempty"` // 当前周期余额

	Taken *string `json:"taken,omitempty"` // 已休时长

	TakenHistoryCycle *string `json:"taken_history_cycle,omitempty"` // 历史周期已休时长

	OffboardingBalance *string `json:"offboarding_balance,omitempty"` // 余额（离职折算）

	TakenCurrentDate *string `json:"taken_current_date,omitempty"` // 已休时长（截止当日）

	OffboardingGranted *string `json:"offboarding_granted,omitempty"` // 本周期授予时长（离职折算）

	LeaveBalanceExcludingUnderApproval *string `json:"leave_balance_excluding_under_approval,omitempty"` // 假期余额（不包含审批中）

	LeaveQuantityUnderApproval *string `json:"leave_quantity_under_approval,omitempty"` // 审批中额度
}

type LeaveBalanceBuilder struct {
	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	leaveTypeName     []*I18n // 假期类型名称
	leaveTypeNameFlag bool

	historicalCyclesLeft     string // 结转的历史周期授予时长
	historicalCyclesLeftFlag bool

	thisCycleTotal     string // 本周期授予时长
	thisCycleTotalFlag bool

	thisCycleTaken     string // 本周期已休时长
	thisCycleTakenFlag bool

	leaveBalance     string // 假期余额
	leaveBalanceFlag bool

	leaveDurationUnit     int // 假期时长单位;;可选值有：;;- 1: 天;;- 2: 小时
	leaveDurationUnitFlag bool

	historyCycleAccrual     string // 历史结转发放
	historyCycleAccrualFlag bool

	balanceInCurrentCycle     string // 当前周期余额
	balanceInCurrentCycleFlag bool

	taken     string // 已休时长
	takenFlag bool

	takenHistoryCycle     string // 历史周期已休时长
	takenHistoryCycleFlag bool

	offboardingBalance     string // 余额（离职折算）
	offboardingBalanceFlag bool

	takenCurrentDate     string // 已休时长（截止当日）
	takenCurrentDateFlag bool

	offboardingGranted     string // 本周期授予时长（离职折算）
	offboardingGrantedFlag bool

	leaveBalanceExcludingUnderApproval     string // 假期余额（不包含审批中）
	leaveBalanceExcludingUnderApprovalFlag bool

	leaveQuantityUnderApproval     string // 审批中额度
	leaveQuantityUnderApprovalFlag bool
}

func NewLeaveBalanceBuilder() *LeaveBalanceBuilder {
	builder := &LeaveBalanceBuilder{}
	return builder
}

// 假期类型ID
//
// 示例值：4718803945687580505
func (builder *LeaveBalanceBuilder) LeaveTypeId(leaveTypeId string) *LeaveBalanceBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 假期类型名称
//
// 示例值：
func (builder *LeaveBalanceBuilder) LeaveTypeName(leaveTypeName []*I18n) *LeaveBalanceBuilder {
	builder.leaveTypeName = leaveTypeName
	builder.leaveTypeNameFlag = true
	return builder
}

// 结转的历史周期授予时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) HistoricalCyclesLeft(historicalCyclesLeft string) *LeaveBalanceBuilder {
	builder.historicalCyclesLeft = historicalCyclesLeft
	builder.historicalCyclesLeftFlag = true
	return builder
}

// 本周期授予时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) ThisCycleTotal(thisCycleTotal string) *LeaveBalanceBuilder {
	builder.thisCycleTotal = thisCycleTotal
	builder.thisCycleTotalFlag = true
	return builder
}

// 本周期已休时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) ThisCycleTaken(thisCycleTaken string) *LeaveBalanceBuilder {
	builder.thisCycleTaken = thisCycleTaken
	builder.thisCycleTakenFlag = true
	return builder
}

// 假期余额
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveBalance(leaveBalance string) *LeaveBalanceBuilder {
	builder.leaveBalance = leaveBalance
	builder.leaveBalanceFlag = true
	return builder
}

// 假期时长单位;;可选值有：;;- 1: 天;;- 2: 小时
//
// 示例值：1
func (builder *LeaveBalanceBuilder) LeaveDurationUnit(leaveDurationUnit int) *LeaveBalanceBuilder {
	builder.leaveDurationUnit = leaveDurationUnit
	builder.leaveDurationUnitFlag = true
	return builder
}

// 历史结转发放
//
// 示例值：0
func (builder *LeaveBalanceBuilder) HistoryCycleAccrual(historyCycleAccrual string) *LeaveBalanceBuilder {
	builder.historyCycleAccrual = historyCycleAccrual
	builder.historyCycleAccrualFlag = true
	return builder
}

// 当前周期余额
//
// 示例值：0
func (builder *LeaveBalanceBuilder) BalanceInCurrentCycle(balanceInCurrentCycle string) *LeaveBalanceBuilder {
	builder.balanceInCurrentCycle = balanceInCurrentCycle
	builder.balanceInCurrentCycleFlag = true
	return builder
}

// 已休时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) Taken(taken string) *LeaveBalanceBuilder {
	builder.taken = taken
	builder.takenFlag = true
	return builder
}

// 历史周期已休时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) TakenHistoryCycle(takenHistoryCycle string) *LeaveBalanceBuilder {
	builder.takenHistoryCycle = takenHistoryCycle
	builder.takenHistoryCycleFlag = true
	return builder
}

// 余额（离职折算）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) OffboardingBalance(offboardingBalance string) *LeaveBalanceBuilder {
	builder.offboardingBalance = offboardingBalance
	builder.offboardingBalanceFlag = true
	return builder
}

// 已休时长（截止当日）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) TakenCurrentDate(takenCurrentDate string) *LeaveBalanceBuilder {
	builder.takenCurrentDate = takenCurrentDate
	builder.takenCurrentDateFlag = true
	return builder
}

// 本周期授予时长（离职折算）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) OffboardingGranted(offboardingGranted string) *LeaveBalanceBuilder {
	builder.offboardingGranted = offboardingGranted
	builder.offboardingGrantedFlag = true
	return builder
}

// 假期余额（不包含审批中）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveBalanceExcludingUnderApproval(leaveBalanceExcludingUnderApproval string) *LeaveBalanceBuilder {
	builder.leaveBalanceExcludingUnderApproval = leaveBalanceExcludingUnderApproval
	builder.leaveBalanceExcludingUnderApprovalFlag = true
	return builder
}

// 审批中额度
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveQuantityUnderApproval(leaveQuantityUnderApproval string) *LeaveBalanceBuilder {
	builder.leaveQuantityUnderApproval = leaveQuantityUnderApproval
	builder.leaveQuantityUnderApprovalFlag = true
	return builder
}

func (builder *LeaveBalanceBuilder) Build() *LeaveBalance {
	req := &LeaveBalance{}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.leaveTypeNameFlag {
		req.LeaveTypeName = builder.leaveTypeName
	}
	if builder.historicalCyclesLeftFlag {
		req.HistoricalCyclesLeft = &builder.historicalCyclesLeft

	}
	if builder.thisCycleTotalFlag {
		req.ThisCycleTotal = &builder.thisCycleTotal

	}
	if builder.thisCycleTakenFlag {
		req.ThisCycleTaken = &builder.thisCycleTaken

	}
	if builder.leaveBalanceFlag {
		req.LeaveBalance = &builder.leaveBalance

	}
	if builder.leaveDurationUnitFlag {
		req.LeaveDurationUnit = &builder.leaveDurationUnit

	}
	if builder.historyCycleAccrualFlag {
		req.HistoryCycleAccrual = &builder.historyCycleAccrual

	}
	if builder.balanceInCurrentCycleFlag {
		req.BalanceInCurrentCycle = &builder.balanceInCurrentCycle

	}
	if builder.takenFlag {
		req.Taken = &builder.taken

	}
	if builder.takenHistoryCycleFlag {
		req.TakenHistoryCycle = &builder.takenHistoryCycle

	}
	if builder.offboardingBalanceFlag {
		req.OffboardingBalance = &builder.offboardingBalance

	}
	if builder.takenCurrentDateFlag {
		req.TakenCurrentDate = &builder.takenCurrentDate

	}
	if builder.offboardingGrantedFlag {
		req.OffboardingGranted = &builder.offboardingGranted

	}
	if builder.leaveBalanceExcludingUnderApprovalFlag {
		req.LeaveBalanceExcludingUnderApproval = &builder.leaveBalanceExcludingUnderApproval

	}
	if builder.leaveQuantityUnderApprovalFlag {
		req.LeaveQuantityUnderApproval = &builder.leaveQuantityUnderApproval

	}
	return req
}

type LeaveDuration struct {
	Duration *string `json:"duration,omitempty"` // 休假时长

	Unit *string `json:"unit,omitempty"` // 休假时长单位

	DurationPerDay *string `json:"duration_per_day,omitempty"` // 每日休假时长
}

type LeaveDurationBuilder struct {
	duration     string // 休假时长
	durationFlag bool

	unit     string // 休假时长单位
	unitFlag bool

	durationPerDay     string // 每日休假时长
	durationPerDayFlag bool
}

func NewLeaveDurationBuilder() *LeaveDurationBuilder {
	builder := &LeaveDurationBuilder{}
	return builder
}

// 休假时长
//
// 示例值：1
func (builder *LeaveDurationBuilder) Duration(duration string) *LeaveDurationBuilder {
	builder.duration = duration
	builder.durationFlag = true
	return builder
}

// 休假时长单位
//
// 示例值：hour
func (builder *LeaveDurationBuilder) Unit(unit string) *LeaveDurationBuilder {
	builder.unit = unit
	builder.unitFlag = true
	return builder
}

// 每日休假时长
//
// 示例值：1
func (builder *LeaveDurationBuilder) DurationPerDay(durationPerDay string) *LeaveDurationBuilder {
	builder.durationPerDay = durationPerDay
	builder.durationPerDayFlag = true
	return builder
}

func (builder *LeaveDurationBuilder) Build() *LeaveDuration {
	req := &LeaveDuration{}
	if builder.durationFlag {
		req.Duration = &builder.duration

	}
	if builder.unitFlag {
		req.Unit = &builder.unit

	}
	if builder.durationPerDayFlag {
		req.DurationPerDay = &builder.durationPerDay

	}
	return req
}

type LeaveExtendItem struct {
	Key *string `json:"key,omitempty"` // 扩展字段的键

	Value *string `json:"value,omitempty"` // 扩展字段的值
}

type LeaveExtendItemBuilder struct {
	key     string // 扩展字段的键
	keyFlag bool

	value     string // 扩展字段的值
	valueFlag bool
}

func NewLeaveExtendItemBuilder() *LeaveExtendItemBuilder {
	builder := &LeaveExtendItemBuilder{}
	return builder
}

// 扩展字段的键
//
// 示例值：SampleKey
func (builder *LeaveExtendItemBuilder) Key(key string) *LeaveExtendItemBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 扩展字段的值
//
// 示例值：SampleValue
func (builder *LeaveExtendItemBuilder) Value(value string) *LeaveExtendItemBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *LeaveExtendItemBuilder) Build() *LeaveExtendItem {
	req := &LeaveExtendItem{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type LeaveGrantingRecord struct {
	Id *string `json:"id,omitempty"` // 假期授予记录 ID

	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型 ID

	GrantingQuantity *string `json:"granting_quantity,omitempty"` // 授予数量

	GrantingUnit *int `json:"granting_unit,omitempty"` // 授予时长单位;;可选值有：;- 1: 天;- 2: 小时

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间（根据休假规则自动计算）

	GrantedBy *int `json:"granted_by,omitempty"` // 授予来源;;可选值有：;- 1: 系统授予;- 2: 手动授予;- 3: 外部系统授予

	Reason []*I18n `json:"reason,omitempty"` // 授予原因

	CreatedAt *string `json:"created_at,omitempty"` // 授予记录的创建时间

	CreatedBy *string `json:"created_by,omitempty"` // 授予记录的创建人，值为创建人的员工 ID

	UpdatedAt *string `json:"updated_at,omitempty"` // 授予记录的更新时间

	UpdatedBy *string `json:"updated_by,omitempty"` // 授予记录的更新人，值为更新人的员工 ID

	SectionType *int `json:"section_type,omitempty"` // 是否参与折算
}

type LeaveGrantingRecordBuilder struct {
	id     string // 假期授予记录 ID
	idFlag bool

	employmentId     string // 员工 ID
	employmentIdFlag bool

	leaveTypeId     string // 假期类型 ID
	leaveTypeIdFlag bool

	grantingQuantity     string // 授予数量
	grantingQuantityFlag bool

	grantingUnit     int // 授予时长单位;;可选值有：;- 1: 天;- 2: 小时
	grantingUnitFlag bool

	effectiveDate     string // 生效时间
	effectiveDateFlag bool

	expirationDate     string // 失效时间（根据休假规则自动计算）
	expirationDateFlag bool

	grantedBy     int // 授予来源;;可选值有：;- 1: 系统授予;- 2: 手动授予;- 3: 外部系统授予
	grantedByFlag bool

	reason     []*I18n // 授予原因
	reasonFlag bool

	createdAt     string // 授予记录的创建时间
	createdAtFlag bool

	createdBy     string // 授予记录的创建人，值为创建人的员工 ID
	createdByFlag bool

	updatedAt     string // 授予记录的更新时间
	updatedAtFlag bool

	updatedBy     string // 授予记录的更新人，值为更新人的员工 ID
	updatedByFlag bool

	sectionType     int // 是否参与折算
	sectionTypeFlag bool
}

func NewLeaveGrantingRecordBuilder() *LeaveGrantingRecordBuilder {
	builder := &LeaveGrantingRecordBuilder{}
	return builder
}

// 假期授予记录 ID
//
// 示例值：6893014062142064135
func (builder *LeaveGrantingRecordBuilder) Id(id string) *LeaveGrantingRecordBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 员工 ID
//
// 示例值：6893014062142064135
func (builder *LeaveGrantingRecordBuilder) EmploymentId(employmentId string) *LeaveGrantingRecordBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 假期类型 ID
//
// 示例值：6893014062142064135
func (builder *LeaveGrantingRecordBuilder) LeaveTypeId(leaveTypeId string) *LeaveGrantingRecordBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 授予数量
//
// 示例值：0.5
func (builder *LeaveGrantingRecordBuilder) GrantingQuantity(grantingQuantity string) *LeaveGrantingRecordBuilder {
	builder.grantingQuantity = grantingQuantity
	builder.grantingQuantityFlag = true
	return builder
}

// 授予时长单位;;可选值有：;- 1: 天;- 2: 小时
//
// 示例值：1
func (builder *LeaveGrantingRecordBuilder) GrantingUnit(grantingUnit int) *LeaveGrantingRecordBuilder {
	builder.grantingUnit = grantingUnit
	builder.grantingUnitFlag = true
	return builder
}

// 生效时间
//
// 示例值：2022-01-01
func (builder *LeaveGrantingRecordBuilder) EffectiveDate(effectiveDate string) *LeaveGrantingRecordBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间（根据休假规则自动计算）
//
// 示例值：2022-01-01
func (builder *LeaveGrantingRecordBuilder) ExpirationDate(expirationDate string) *LeaveGrantingRecordBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 授予来源;;可选值有：;- 1: 系统授予;- 2: 手动授予;- 3: 外部系统授予
//
// 示例值：3
func (builder *LeaveGrantingRecordBuilder) GrantedBy(grantedBy int) *LeaveGrantingRecordBuilder {
	builder.grantedBy = grantedBy
	builder.grantedByFlag = true
	return builder
}

// 授予原因
//
// 示例值：
func (builder *LeaveGrantingRecordBuilder) Reason(reason []*I18n) *LeaveGrantingRecordBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 授予记录的创建时间
//
// 示例值：1608725989000
func (builder *LeaveGrantingRecordBuilder) CreatedAt(createdAt string) *LeaveGrantingRecordBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 授予记录的创建人，值为创建人的员工 ID
//
// 示例值：646465654545
func (builder *LeaveGrantingRecordBuilder) CreatedBy(createdBy string) *LeaveGrantingRecordBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 授予记录的更新时间
//
// 示例值：1608725989000
func (builder *LeaveGrantingRecordBuilder) UpdatedAt(updatedAt string) *LeaveGrantingRecordBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 授予记录的更新人，值为更新人的员工 ID
//
// 示例值：646465654545
func (builder *LeaveGrantingRecordBuilder) UpdatedBy(updatedBy string) *LeaveGrantingRecordBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 是否参与折算
//
// 示例值：1
func (builder *LeaveGrantingRecordBuilder) SectionType(sectionType int) *LeaveGrantingRecordBuilder {
	builder.sectionType = sectionType
	builder.sectionTypeFlag = true
	return builder
}

func (builder *LeaveGrantingRecordBuilder) Build() *LeaveGrantingRecord {
	req := &LeaveGrantingRecord{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.grantingQuantityFlag {
		req.GrantingQuantity = &builder.grantingQuantity

	}
	if builder.grantingUnitFlag {
		req.GrantingUnit = &builder.grantingUnit

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.grantedByFlag {
		req.GrantedBy = &builder.grantedBy

	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.sectionTypeFlag {
		req.SectionType = &builder.sectionType

	}
	return req
}

type LeaveProcessInfo struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程id

	ProcessStatus *string `json:"process_status,omitempty"` // 流程状态

	ProcessApplyTime *string `json:"process_apply_time,omitempty"` // 流程发起时间
}

type LeaveProcessInfoBuilder struct {
	processId     string // 流程id
	processIdFlag bool

	processStatus     string // 流程状态
	processStatusFlag bool

	processApplyTime     string // 流程发起时间
	processApplyTimeFlag bool
}

func NewLeaveProcessInfoBuilder() *LeaveProcessInfoBuilder {
	builder := &LeaveProcessInfoBuilder{}
	return builder
}

// 流程id
//
// 示例值：4718803945687580505
func (builder *LeaveProcessInfoBuilder) ProcessId(processId string) *LeaveProcessInfoBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 流程状态
//
// 示例值：passed
func (builder *LeaveProcessInfoBuilder) ProcessStatus(processStatus string) *LeaveProcessInfoBuilder {
	builder.processStatus = processStatus
	builder.processStatusFlag = true
	return builder
}

// 流程发起时间
//
// 示例值：2024-01-01 00:00:00
func (builder *LeaveProcessInfoBuilder) ProcessApplyTime(processApplyTime string) *LeaveProcessInfoBuilder {
	builder.processApplyTime = processApplyTime
	builder.processApplyTimeFlag = true
	return builder
}

func (builder *LeaveProcessInfoBuilder) Build() *LeaveProcessInfo {
	req := &LeaveProcessInfo{}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.processStatusFlag {
		req.ProcessStatus = &builder.processStatus

	}
	if builder.processApplyTimeFlag {
		req.ProcessApplyTime = &builder.processApplyTime

	}
	return req
}

type LeaveRequest struct {
	LeaveRequestId *string `json:"leave_request_id,omitempty"` // 请假记录ID

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣信息ID

	EmploymentName []*I18n `json:"employment_name,omitempty"` // 员工姓名

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	LeaveTypeName []*I18n `json:"leave_type_name,omitempty"` // 假期类型名称

	StartTime *string `json:"start_time,omitempty"` // 假期开始时间，格式可能为：;; - 字符串日期：如 "2022-09-09";; - 字符串日期加 morning/afternoon：如 "2022-09-09 morning""

	EndTime *string `json:"end_time,omitempty"` // 假期结束时间，格式可能为：;; - 字符串日期：如 "2022-09-09";; - 字符串日期加 morning/afternoon：如 "2022-09-09 morning""

	LeaveDuration *string `json:"leave_duration,omitempty"` // 假期时长

	LeaveDurationUnit *int `json:"leave_duration_unit,omitempty"` // 假期时长单位;;可选值有：;;- 1: 天;;- 2: 小时

	LeaveRequestStatus *int `json:"leave_request_status,omitempty"` // 请假记录的状态;;可选值有：;;- 1：已通过;;- 2：审批中;;- 3：审批中（更正）;- 4：审批中（取消休假）;- 5：审批中（返岗）;- 6：已返岗;- 7：已拒绝;- 8：已取消;- 9：已撤回

	GrantSource *string `json:"grant_source,omitempty"` // 数据来源;;可选值有：;;- "manual"：手动创建;;- "system"：系统创建"

	ReturnTime *string `json:"return_time,omitempty"` // 返岗时间

	SubmittedAt *string `json:"submitted_at,omitempty"` // 发起时间

	SubmittedBy *string `json:"submitted_by,omitempty"` // 发起人

	Notes *string `json:"notes,omitempty"` // 备注

	ApprovalDate *string `json:"approval_date,omitempty"` // 审批通过日期

	IsDeducted *bool `json:"is_deducted,omitempty"` // 是否带薪

	Details []*LeaveRequestDetail `json:"details,omitempty"` // 请假详情

	LeaveTypeCode *string `json:"leave_type_code,omitempty"` // 假期类型枚举

	ActualEndDate *string `json:"actual_end_date,omitempty"` // 实际结束日期

	EstimatedEndDate *string `json:"estimated_end_date,omitempty"` // 预估结束日期

	TimeZone *string `json:"time_zone,omitempty"` // 时区

	DataSource *int `json:"data_source,omitempty"` // 请假记录数据来源

	LeaveProcessId []string `json:"leave_process_id,omitempty"` // 请假申请流程ID

	LeaveCorrectProcessId []string `json:"leave_correct_process_id,omitempty"` // 请假更正流程ID

	LeaveCancelProcessId []string `json:"leave_cancel_process_id,omitempty"` // 请假取消流程ID

	LeaveReturnProcessId []string `json:"leave_return_process_id,omitempty"` // 请假返岗流程ID

	WdPaidType *int `json:"wd_paid_type,omitempty"` // workDay算薪类型

	LeaveCorrectProcessInfo []*LeaveProcessInfo `json:"leave_correct_process_info,omitempty"` // 请假更正流程信息

	WorkdayExtendInfos []*LeaveExtendItem `json:"workday_extend_infos,omitempty"` // workday扩展字段信息
}

type LeaveRequestBuilder struct {
	leaveRequestId     string // 请假记录ID
	leaveRequestIdFlag bool

	employmentId     string // 雇佣信息ID
	employmentIdFlag bool

	employmentName     []*I18n // 员工姓名
	employmentNameFlag bool

	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	leaveTypeName     []*I18n // 假期类型名称
	leaveTypeNameFlag bool

	startTime     string // 假期开始时间，格式可能为：;; - 字符串日期：如 "2022-09-09";; - 字符串日期加 morning/afternoon：如 "2022-09-09 morning""
	startTimeFlag bool

	endTime     string // 假期结束时间，格式可能为：;; - 字符串日期：如 "2022-09-09";; - 字符串日期加 morning/afternoon：如 "2022-09-09 morning""
	endTimeFlag bool

	leaveDuration     string // 假期时长
	leaveDurationFlag bool

	leaveDurationUnit     int // 假期时长单位;;可选值有：;;- 1: 天;;- 2: 小时
	leaveDurationUnitFlag bool

	leaveRequestStatus     int // 请假记录的状态;;可选值有：;;- 1：已通过;;- 2：审批中;;- 3：审批中（更正）;- 4：审批中（取消休假）;- 5：审批中（返岗）;- 6：已返岗;- 7：已拒绝;- 8：已取消;- 9：已撤回
	leaveRequestStatusFlag bool

	grantSource     string // 数据来源;;可选值有：;;- "manual"：手动创建;;- "system"：系统创建"
	grantSourceFlag bool

	returnTime     string // 返岗时间
	returnTimeFlag bool

	submittedAt     string // 发起时间
	submittedAtFlag bool

	submittedBy     string // 发起人
	submittedByFlag bool

	notes     string // 备注
	notesFlag bool

	approvalDate     string // 审批通过日期
	approvalDateFlag bool

	isDeducted     bool // 是否带薪
	isDeductedFlag bool

	details     []*LeaveRequestDetail // 请假详情
	detailsFlag bool

	leaveTypeCode     string // 假期类型枚举
	leaveTypeCodeFlag bool

	actualEndDate     string // 实际结束日期
	actualEndDateFlag bool

	estimatedEndDate     string // 预估结束日期
	estimatedEndDateFlag bool

	timeZone     string // 时区
	timeZoneFlag bool

	dataSource     int // 请假记录数据来源
	dataSourceFlag bool

	leaveProcessId     []string // 请假申请流程ID
	leaveProcessIdFlag bool

	leaveCorrectProcessId     []string // 请假更正流程ID
	leaveCorrectProcessIdFlag bool

	leaveCancelProcessId     []string // 请假取消流程ID
	leaveCancelProcessIdFlag bool

	leaveReturnProcessId     []string // 请假返岗流程ID
	leaveReturnProcessIdFlag bool

	wdPaidType     int // workDay算薪类型
	wdPaidTypeFlag bool

	leaveCorrectProcessInfo     []*LeaveProcessInfo // 请假更正流程信息
	leaveCorrectProcessInfoFlag bool

	workdayExtendInfos     []*LeaveExtendItem // workday扩展字段信息
	workdayExtendInfosFlag bool
}

func NewLeaveRequestBuilder() *LeaveRequestBuilder {
	builder := &LeaveRequestBuilder{}
	return builder
}

// 请假记录ID
//
// 示例值：4718803945687580505
func (builder *LeaveRequestBuilder) LeaveRequestId(leaveRequestId string) *LeaveRequestBuilder {
	builder.leaveRequestId = leaveRequestId
	builder.leaveRequestIdFlag = true
	return builder
}

// 雇佣信息ID
//
// 示例值：4718803945687580505
func (builder *LeaveRequestBuilder) EmploymentId(employmentId string) *LeaveRequestBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 员工姓名
//
// 示例值：
func (builder *LeaveRequestBuilder) EmploymentName(employmentName []*I18n) *LeaveRequestBuilder {
	builder.employmentName = employmentName
	builder.employmentNameFlag = true
	return builder
}

// 假期类型ID
//
// 示例值：0
func (builder *LeaveRequestBuilder) LeaveTypeId(leaveTypeId string) *LeaveRequestBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 假期类型名称
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveTypeName(leaveTypeName []*I18n) *LeaveRequestBuilder {
	builder.leaveTypeName = leaveTypeName
	builder.leaveTypeNameFlag = true
	return builder
}

// 假期开始时间，格式可能为：;; - 字符串日期：如 "2022-09-09";; - 字符串日期加 morning/afternoon：如 "2022-09-09 morning""
//
// 示例值：2022-07-06 morning
func (builder *LeaveRequestBuilder) StartTime(startTime string) *LeaveRequestBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 假期结束时间，格式可能为：;; - 字符串日期：如 "2022-09-09";; - 字符串日期加 morning/afternoon：如 "2022-09-09 morning""
//
// 示例值：2023-01-05
func (builder *LeaveRequestBuilder) EndTime(endTime string) *LeaveRequestBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 假期时长
//
// 示例值：2
func (builder *LeaveRequestBuilder) LeaveDuration(leaveDuration string) *LeaveRequestBuilder {
	builder.leaveDuration = leaveDuration
	builder.leaveDurationFlag = true
	return builder
}

// 假期时长单位;;可选值有：;;- 1: 天;;- 2: 小时
//
// 示例值：2
func (builder *LeaveRequestBuilder) LeaveDurationUnit(leaveDurationUnit int) *LeaveRequestBuilder {
	builder.leaveDurationUnit = leaveDurationUnit
	builder.leaveDurationUnitFlag = true
	return builder
}

// 请假记录的状态;;可选值有：;;- 1：已通过;;- 2：审批中;;- 3：审批中（更正）;- 4：审批中（取消休假）;- 5：审批中（返岗）;- 6：已返岗;- 7：已拒绝;- 8：已取消;- 9：已撤回
//
// 示例值：2
func (builder *LeaveRequestBuilder) LeaveRequestStatus(leaveRequestStatus int) *LeaveRequestBuilder {
	builder.leaveRequestStatus = leaveRequestStatus
	builder.leaveRequestStatusFlag = true
	return builder
}

// 数据来源;;可选值有：;;- "manual"：手动创建;;- "system"：系统创建"
//
// 示例值：manual
func (builder *LeaveRequestBuilder) GrantSource(grantSource string) *LeaveRequestBuilder {
	builder.grantSource = grantSource
	builder.grantSourceFlag = true
	return builder
}

// 返岗时间
//
// 示例值：1662134400
func (builder *LeaveRequestBuilder) ReturnTime(returnTime string) *LeaveRequestBuilder {
	builder.returnTime = returnTime
	builder.returnTimeFlag = true
	return builder
}

// 发起时间
//
// 示例值：1659080476
func (builder *LeaveRequestBuilder) SubmittedAt(submittedAt string) *LeaveRequestBuilder {
	builder.submittedAt = submittedAt
	builder.submittedAtFlag = true
	return builder
}

// 发起人
//
// 示例值：7109664941775241244
func (builder *LeaveRequestBuilder) SubmittedBy(submittedBy string) *LeaveRequestBuilder {
	builder.submittedBy = submittedBy
	builder.submittedByFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *LeaveRequestBuilder) Notes(notes string) *LeaveRequestBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 审批通过日期
//
// 示例值：2022-09-09
func (builder *LeaveRequestBuilder) ApprovalDate(approvalDate string) *LeaveRequestBuilder {
	builder.approvalDate = approvalDate
	builder.approvalDateFlag = true
	return builder
}

// 是否带薪
//
// 示例值：false
func (builder *LeaveRequestBuilder) IsDeducted(isDeducted bool) *LeaveRequestBuilder {
	builder.isDeducted = isDeducted
	builder.isDeductedFlag = true
	return builder
}

// 请假详情
//
// 示例值：
func (builder *LeaveRequestBuilder) Details(details []*LeaveRequestDetail) *LeaveRequestBuilder {
	builder.details = details
	builder.detailsFlag = true
	return builder
}

// 假期类型枚举
//
// 示例值：Annual Leave
func (builder *LeaveRequestBuilder) LeaveTypeCode(leaveTypeCode string) *LeaveRequestBuilder {
	builder.leaveTypeCode = leaveTypeCode
	builder.leaveTypeCodeFlag = true
	return builder
}

// 实际结束日期
//
// 示例值：2022-08-02
func (builder *LeaveRequestBuilder) ActualEndDate(actualEndDate string) *LeaveRequestBuilder {
	builder.actualEndDate = actualEndDate
	builder.actualEndDateFlag = true
	return builder
}

// 预估结束日期
//
// 示例值：2022-08-02
func (builder *LeaveRequestBuilder) EstimatedEndDate(estimatedEndDate string) *LeaveRequestBuilder {
	builder.estimatedEndDate = estimatedEndDate
	builder.estimatedEndDateFlag = true
	return builder
}

// 时区
//
// 示例值：Asia/Shanghai
func (builder *LeaveRequestBuilder) TimeZone(timeZone string) *LeaveRequestBuilder {
	builder.timeZone = timeZone
	builder.timeZoneFlag = true
	return builder
}

// 请假记录数据来源
//
// 示例值：1
func (builder *LeaveRequestBuilder) DataSource(dataSource int) *LeaveRequestBuilder {
	builder.dataSource = dataSource
	builder.dataSourceFlag = true
	return builder
}

// 请假申请流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveProcessId(leaveProcessId []string) *LeaveRequestBuilder {
	builder.leaveProcessId = leaveProcessId
	builder.leaveProcessIdFlag = true
	return builder
}

// 请假更正流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveCorrectProcessId(leaveCorrectProcessId []string) *LeaveRequestBuilder {
	builder.leaveCorrectProcessId = leaveCorrectProcessId
	builder.leaveCorrectProcessIdFlag = true
	return builder
}

// 请假取消流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveCancelProcessId(leaveCancelProcessId []string) *LeaveRequestBuilder {
	builder.leaveCancelProcessId = leaveCancelProcessId
	builder.leaveCancelProcessIdFlag = true
	return builder
}

// 请假返岗流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveReturnProcessId(leaveReturnProcessId []string) *LeaveRequestBuilder {
	builder.leaveReturnProcessId = leaveReturnProcessId
	builder.leaveReturnProcessIdFlag = true
	return builder
}

// workDay算薪类型
//
// 示例值：1
func (builder *LeaveRequestBuilder) WdPaidType(wdPaidType int) *LeaveRequestBuilder {
	builder.wdPaidType = wdPaidType
	builder.wdPaidTypeFlag = true
	return builder
}

// 请假更正流程信息
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveCorrectProcessInfo(leaveCorrectProcessInfo []*LeaveProcessInfo) *LeaveRequestBuilder {
	builder.leaveCorrectProcessInfo = leaveCorrectProcessInfo
	builder.leaveCorrectProcessInfoFlag = true
	return builder
}

// workday扩展字段信息
//
// 示例值：
func (builder *LeaveRequestBuilder) WorkdayExtendInfos(workdayExtendInfos []*LeaveExtendItem) *LeaveRequestBuilder {
	builder.workdayExtendInfos = workdayExtendInfos
	builder.workdayExtendInfosFlag = true
	return builder
}

func (builder *LeaveRequestBuilder) Build() *LeaveRequest {
	req := &LeaveRequest{}
	if builder.leaveRequestIdFlag {
		req.LeaveRequestId = &builder.leaveRequestId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.employmentNameFlag {
		req.EmploymentName = builder.employmentName
	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.leaveTypeNameFlag {
		req.LeaveTypeName = builder.leaveTypeName
	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.leaveDurationFlag {
		req.LeaveDuration = &builder.leaveDuration

	}
	if builder.leaveDurationUnitFlag {
		req.LeaveDurationUnit = &builder.leaveDurationUnit

	}
	if builder.leaveRequestStatusFlag {
		req.LeaveRequestStatus = &builder.leaveRequestStatus

	}
	if builder.grantSourceFlag {
		req.GrantSource = &builder.grantSource

	}
	if builder.returnTimeFlag {
		req.ReturnTime = &builder.returnTime

	}
	if builder.submittedAtFlag {
		req.SubmittedAt = &builder.submittedAt

	}
	if builder.submittedByFlag {
		req.SubmittedBy = &builder.submittedBy

	}
	if builder.notesFlag {
		req.Notes = &builder.notes

	}
	if builder.approvalDateFlag {
		req.ApprovalDate = &builder.approvalDate

	}
	if builder.isDeductedFlag {
		req.IsDeducted = &builder.isDeducted

	}
	if builder.detailsFlag {
		req.Details = builder.details
	}
	if builder.leaveTypeCodeFlag {
		req.LeaveTypeCode = &builder.leaveTypeCode

	}
	if builder.actualEndDateFlag {
		req.ActualEndDate = &builder.actualEndDate

	}
	if builder.estimatedEndDateFlag {
		req.EstimatedEndDate = &builder.estimatedEndDate

	}
	if builder.timeZoneFlag {
		req.TimeZone = &builder.timeZone

	}
	if builder.dataSourceFlag {
		req.DataSource = &builder.dataSource

	}
	if builder.leaveProcessIdFlag {
		req.LeaveProcessId = builder.leaveProcessId
	}
	if builder.leaveCorrectProcessIdFlag {
		req.LeaveCorrectProcessId = builder.leaveCorrectProcessId
	}
	if builder.leaveCancelProcessIdFlag {
		req.LeaveCancelProcessId = builder.leaveCancelProcessId
	}
	if builder.leaveReturnProcessIdFlag {
		req.LeaveReturnProcessId = builder.leaveReturnProcessId
	}
	if builder.wdPaidTypeFlag {
		req.WdPaidType = &builder.wdPaidType

	}
	if builder.leaveCorrectProcessInfoFlag {
		req.LeaveCorrectProcessInfo = builder.leaveCorrectProcessInfo
	}
	if builder.workdayExtendInfosFlag {
		req.WorkdayExtendInfos = builder.workdayExtendInfos
	}
	return req
}

type LeaveRequestCreated struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	StartTime *LeaveTime `json:"start_time,omitempty"` // 请假开始时间

	EndTime *LeaveTime `json:"end_time,omitempty"` // 请假结束时间

	TimeZone *string `json:"time_zone,omitempty"` // 时区

	DailyLeaveMode *string `json:"daily_leave_mode,omitempty"` // 每日休假方式

	ArriveLateMinutes *int `json:"arrive_late_minutes,omitempty"` // 上班晚到时长（分钟）

	LeaveEarlyMinutes *int `json:"leave_early_minutes,omitempty"` // 下班早走时长（分钟）

	Notes *string `json:"notes,omitempty"` // 备注

	DateOfMarriageCertificate *string `json:"date_of_marriage_certificate,omitempty"` // 领证日期

	ProvidePremaritalExaminationMaterials *bool `json:"provide_premarital_examination_materials,omitempty"` // 是否可提供婚前检查材料

	IsCoupleLiveApart *bool `json:"is_couple_live_apart,omitempty"` // 是否夫妻两地分居

	DifficultyGivingBirth *bool `json:"difficulty_giving_birth,omitempty"` // 是否难产

	PregnantMonths *int `json:"pregnant_months,omitempty"` // 怀孕月数

	DueDate *string `json:"due_date,omitempty"` // 预产期

	ChildDateOfBirth *string `json:"child_date_of_birth,omitempty"` // 子女出生日期

	NumberOfNewborns *int `json:"number_of_newborns,omitempty"` // 新生儿数量

	ApplicableScenarios *string `json:"applicable_scenarios,omitempty"` // 申请场景
}

type LeaveRequestCreatedBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	startTime     *LeaveTime // 请假开始时间
	startTimeFlag bool

	endTime     *LeaveTime // 请假结束时间
	endTimeFlag bool

	timeZone     string // 时区
	timeZoneFlag bool

	dailyLeaveMode     string // 每日休假方式
	dailyLeaveModeFlag bool

	arriveLateMinutes     int // 上班晚到时长（分钟）
	arriveLateMinutesFlag bool

	leaveEarlyMinutes     int // 下班早走时长（分钟）
	leaveEarlyMinutesFlag bool

	notes     string // 备注
	notesFlag bool

	dateOfMarriageCertificate     string // 领证日期
	dateOfMarriageCertificateFlag bool

	providePremaritalExaminationMaterials     bool // 是否可提供婚前检查材料
	providePremaritalExaminationMaterialsFlag bool

	isCoupleLiveApart     bool // 是否夫妻两地分居
	isCoupleLiveApartFlag bool

	difficultyGivingBirth     bool // 是否难产
	difficultyGivingBirthFlag bool

	pregnantMonths     int // 怀孕月数
	pregnantMonthsFlag bool

	dueDate     string // 预产期
	dueDateFlag bool

	childDateOfBirth     string // 子女出生日期
	childDateOfBirthFlag bool

	numberOfNewborns     int // 新生儿数量
	numberOfNewbornsFlag bool

	applicableScenarios     string // 申请场景
	applicableScenariosFlag bool
}

func NewLeaveRequestCreatedBuilder() *LeaveRequestCreatedBuilder {
	builder := &LeaveRequestCreatedBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7442604019808519724
func (builder *LeaveRequestCreatedBuilder) EmploymentId(employmentId string) *LeaveRequestCreatedBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 假期类型ID
//
// 示例值：7444819921379313196
func (builder *LeaveRequestCreatedBuilder) LeaveTypeId(leaveTypeId string) *LeaveRequestCreatedBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 请假开始时间
//
// 示例值：
func (builder *LeaveRequestCreatedBuilder) StartTime(startTime *LeaveTime) *LeaveRequestCreatedBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 请假结束时间
//
// 示例值：
func (builder *LeaveRequestCreatedBuilder) EndTime(endTime *LeaveTime) *LeaveRequestCreatedBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 时区
//
// 示例值：Asia/Shanghai
func (builder *LeaveRequestCreatedBuilder) TimeZone(timeZone string) *LeaveRequestCreatedBuilder {
	builder.timeZone = timeZone
	builder.timeZoneFlag = true
	return builder
}

// 每日休假方式
//
// 示例值：arrive_late:上班晚到, leave_early:上班晚到, arrive_late_and_leave_early:上班晚到 + 下班早走
func (builder *LeaveRequestCreatedBuilder) DailyLeaveMode(dailyLeaveMode string) *LeaveRequestCreatedBuilder {
	builder.dailyLeaveMode = dailyLeaveMode
	builder.dailyLeaveModeFlag = true
	return builder
}

// 上班晚到时长（分钟）
//
// 示例值：10
func (builder *LeaveRequestCreatedBuilder) ArriveLateMinutes(arriveLateMinutes int) *LeaveRequestCreatedBuilder {
	builder.arriveLateMinutes = arriveLateMinutes
	builder.arriveLateMinutesFlag = true
	return builder
}

// 下班早走时长（分钟）
//
// 示例值：10
func (builder *LeaveRequestCreatedBuilder) LeaveEarlyMinutes(leaveEarlyMinutes int) *LeaveRequestCreatedBuilder {
	builder.leaveEarlyMinutes = leaveEarlyMinutes
	builder.leaveEarlyMinutesFlag = true
	return builder
}

// 备注
//
// 示例值：休息
func (builder *LeaveRequestCreatedBuilder) Notes(notes string) *LeaveRequestCreatedBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 领证日期
//
// 示例值：2023-11-07
func (builder *LeaveRequestCreatedBuilder) DateOfMarriageCertificate(dateOfMarriageCertificate string) *LeaveRequestCreatedBuilder {
	builder.dateOfMarriageCertificate = dateOfMarriageCertificate
	builder.dateOfMarriageCertificateFlag = true
	return builder
}

// 是否可提供婚前检查材料
//
// 示例值：fasle
func (builder *LeaveRequestCreatedBuilder) ProvidePremaritalExaminationMaterials(providePremaritalExaminationMaterials bool) *LeaveRequestCreatedBuilder {
	builder.providePremaritalExaminationMaterials = providePremaritalExaminationMaterials
	builder.providePremaritalExaminationMaterialsFlag = true
	return builder
}

// 是否夫妻两地分居
//
// 示例值：false
func (builder *LeaveRequestCreatedBuilder) IsCoupleLiveApart(isCoupleLiveApart bool) *LeaveRequestCreatedBuilder {
	builder.isCoupleLiveApart = isCoupleLiveApart
	builder.isCoupleLiveApartFlag = true
	return builder
}

// 是否难产
//
// 示例值：false
func (builder *LeaveRequestCreatedBuilder) DifficultyGivingBirth(difficultyGivingBirth bool) *LeaveRequestCreatedBuilder {
	builder.difficultyGivingBirth = difficultyGivingBirth
	builder.difficultyGivingBirthFlag = true
	return builder
}

// 怀孕月数
//
// 示例值：10
func (builder *LeaveRequestCreatedBuilder) PregnantMonths(pregnantMonths int) *LeaveRequestCreatedBuilder {
	builder.pregnantMonths = pregnantMonths
	builder.pregnantMonthsFlag = true
	return builder
}

// 预产期
//
// 示例值：2023-11-07
func (builder *LeaveRequestCreatedBuilder) DueDate(dueDate string) *LeaveRequestCreatedBuilder {
	builder.dueDate = dueDate
	builder.dueDateFlag = true
	return builder
}

// 子女出生日期
//
// 示例值：2023-11-07
func (builder *LeaveRequestCreatedBuilder) ChildDateOfBirth(childDateOfBirth string) *LeaveRequestCreatedBuilder {
	builder.childDateOfBirth = childDateOfBirth
	builder.childDateOfBirthFlag = true
	return builder
}

// 新生儿数量
//
// 示例值：1
func (builder *LeaveRequestCreatedBuilder) NumberOfNewborns(numberOfNewborns int) *LeaveRequestCreatedBuilder {
	builder.numberOfNewborns = numberOfNewborns
	builder.numberOfNewbornsFlag = true
	return builder
}

// 申请场景
//
// 示例值：父母/配偶父母患病需陪护:parent_accompany, 配偶患病需陪护:spouse_accompany, 子女患病需陪护:child_accompany
func (builder *LeaveRequestCreatedBuilder) ApplicableScenarios(applicableScenarios string) *LeaveRequestCreatedBuilder {
	builder.applicableScenarios = applicableScenarios
	builder.applicableScenariosFlag = true
	return builder
}

func (builder *LeaveRequestCreatedBuilder) Build() *LeaveRequestCreated {
	req := &LeaveRequestCreated{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.startTimeFlag {
		req.StartTime = builder.startTime
	}
	if builder.endTimeFlag {
		req.EndTime = builder.endTime
	}
	if builder.timeZoneFlag {
		req.TimeZone = &builder.timeZone

	}
	if builder.dailyLeaveModeFlag {
		req.DailyLeaveMode = &builder.dailyLeaveMode

	}
	if builder.arriveLateMinutesFlag {
		req.ArriveLateMinutes = &builder.arriveLateMinutes

	}
	if builder.leaveEarlyMinutesFlag {
		req.LeaveEarlyMinutes = &builder.leaveEarlyMinutes

	}
	if builder.notesFlag {
		req.Notes = &builder.notes

	}
	if builder.dateOfMarriageCertificateFlag {
		req.DateOfMarriageCertificate = &builder.dateOfMarriageCertificate

	}
	if builder.providePremaritalExaminationMaterialsFlag {
		req.ProvidePremaritalExaminationMaterials = &builder.providePremaritalExaminationMaterials

	}
	if builder.isCoupleLiveApartFlag {
		req.IsCoupleLiveApart = &builder.isCoupleLiveApart

	}
	if builder.difficultyGivingBirthFlag {
		req.DifficultyGivingBirth = &builder.difficultyGivingBirth

	}
	if builder.pregnantMonthsFlag {
		req.PregnantMonths = &builder.pregnantMonths

	}
	if builder.dueDateFlag {
		req.DueDate = &builder.dueDate

	}
	if builder.childDateOfBirthFlag {
		req.ChildDateOfBirth = &builder.childDateOfBirth

	}
	if builder.numberOfNewbornsFlag {
		req.NumberOfNewborns = &builder.numberOfNewborns

	}
	if builder.applicableScenariosFlag {
		req.ApplicableScenarios = &builder.applicableScenarios

	}
	return req
}

type LeaveRequestCreatedErrorMessage struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	StartTime *string `json:"start_time,omitempty"` // 请假开始时间

	EndTime *string `json:"end_time,omitempty"` // 请假结束时间

	Code *int `json:"code,omitempty"` // 错误码

	Msg *string `json:"msg,omitempty"` // 错误信息
}

type LeaveRequestCreatedErrorMessageBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	startTime     string // 请假开始时间
	startTimeFlag bool

	endTime     string // 请假结束时间
	endTimeFlag bool

	code     int // 错误码
	codeFlag bool

	msg     string // 错误信息
	msgFlag bool
}

func NewLeaveRequestCreatedErrorMessageBuilder() *LeaveRequestCreatedErrorMessageBuilder {
	builder := &LeaveRequestCreatedErrorMessageBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7402162852704831020
func (builder *LeaveRequestCreatedErrorMessageBuilder) EmploymentId(employmentId string) *LeaveRequestCreatedErrorMessageBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 假期类型ID
//
// 示例值：7437402643576571436
func (builder *LeaveRequestCreatedErrorMessageBuilder) LeaveTypeId(leaveTypeId string) *LeaveRequestCreatedErrorMessageBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 请假开始时间
//
// 示例值：2024-11-01
func (builder *LeaveRequestCreatedErrorMessageBuilder) StartTime(startTime string) *LeaveRequestCreatedErrorMessageBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 请假结束时间
//
// 示例值：2024-11-01
func (builder *LeaveRequestCreatedErrorMessageBuilder) EndTime(endTime string) *LeaveRequestCreatedErrorMessageBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 错误码
//
// 示例值：0
func (builder *LeaveRequestCreatedErrorMessageBuilder) Code(code int) *LeaveRequestCreatedErrorMessageBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 错误信息
//
// 示例值：成功
func (builder *LeaveRequestCreatedErrorMessageBuilder) Msg(msg string) *LeaveRequestCreatedErrorMessageBuilder {
	builder.msg = msg
	builder.msgFlag = true
	return builder
}

func (builder *LeaveRequestCreatedErrorMessageBuilder) Build() *LeaveRequestCreatedErrorMessage {
	req := &LeaveRequestCreatedErrorMessage{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.msgFlag {
		req.Msg = &builder.msg

	}
	return req
}

type LeaveRequestCreatedResult struct {
	ErrorMessages []*LeaveRequestCreatedErrorMessage `json:"error_messages,omitempty"` // 请假记录创建错误信息

	LeaveRequestResults []*LeaveRequest `json:"leave_request_results,omitempty"` // 请假记录列表
}

type LeaveRequestCreatedResultBuilder struct {
	errorMessages     []*LeaveRequestCreatedErrorMessage // 请假记录创建错误信息
	errorMessagesFlag bool

	leaveRequestResults     []*LeaveRequest // 请假记录列表
	leaveRequestResultsFlag bool
}

func NewLeaveRequestCreatedResultBuilder() *LeaveRequestCreatedResultBuilder {
	builder := &LeaveRequestCreatedResultBuilder{}
	return builder
}

// 请假记录创建错误信息
//
// 示例值：
func (builder *LeaveRequestCreatedResultBuilder) ErrorMessages(errorMessages []*LeaveRequestCreatedErrorMessage) *LeaveRequestCreatedResultBuilder {
	builder.errorMessages = errorMessages
	builder.errorMessagesFlag = true
	return builder
}

// 请假记录列表
//
// 示例值：
func (builder *LeaveRequestCreatedResultBuilder) LeaveRequestResults(leaveRequestResults []*LeaveRequest) *LeaveRequestCreatedResultBuilder {
	builder.leaveRequestResults = leaveRequestResults
	builder.leaveRequestResultsFlag = true
	return builder
}

func (builder *LeaveRequestCreatedResultBuilder) Build() *LeaveRequestCreatedResult {
	req := &LeaveRequestCreatedResult{}
	if builder.errorMessagesFlag {
		req.ErrorMessages = builder.errorMessages
	}
	if builder.leaveRequestResultsFlag {
		req.LeaveRequestResults = builder.leaveRequestResults
	}
	return req
}

type LeaveRequestDetail struct {
	LeaveRequestId *string `json:"leave_request_id,omitempty"` // 请假记录id

	LeaveDate *string `json:"leave_date,omitempty"` // 假期发生日期

	LeaveDuration *string `json:"leave_duration,omitempty"` // 假期时长

	LeaveDurationUnit *int `json:"leave_duration_unit,omitempty"` // 假期时长单位，1：天，2：小时

	PaidType *int `json:"paid_type,omitempty"` // 是否影响算薪，1：不参与算薪计算, 非对应的日期类型或者无对应的假期计划，2：影响算薪，3：不影响算薪
}

type LeaveRequestDetailBuilder struct {
	leaveRequestId     string // 请假记录id
	leaveRequestIdFlag bool

	leaveDate     string // 假期发生日期
	leaveDateFlag bool

	leaveDuration     string // 假期时长
	leaveDurationFlag bool

	leaveDurationUnit     int // 假期时长单位，1：天，2：小时
	leaveDurationUnitFlag bool

	paidType     int // 是否影响算薪，1：不参与算薪计算, 非对应的日期类型或者无对应的假期计划，2：影响算薪，3：不影响算薪
	paidTypeFlag bool
}

func NewLeaveRequestDetailBuilder() *LeaveRequestDetailBuilder {
	builder := &LeaveRequestDetailBuilder{}
	return builder
}

// 请假记录id
//
// 示例值：4718803945687580505
func (builder *LeaveRequestDetailBuilder) LeaveRequestId(leaveRequestId string) *LeaveRequestDetailBuilder {
	builder.leaveRequestId = leaveRequestId
	builder.leaveRequestIdFlag = true
	return builder
}

// 假期发生日期
//
// 示例值：2022-07-07
func (builder *LeaveRequestDetailBuilder) LeaveDate(leaveDate string) *LeaveRequestDetailBuilder {
	builder.leaveDate = leaveDate
	builder.leaveDateFlag = true
	return builder
}

// 假期时长
//
// 示例值：1
func (builder *LeaveRequestDetailBuilder) LeaveDuration(leaveDuration string) *LeaveRequestDetailBuilder {
	builder.leaveDuration = leaveDuration
	builder.leaveDurationFlag = true
	return builder
}

// 假期时长单位，1：天，2：小时
//
// 示例值：1
func (builder *LeaveRequestDetailBuilder) LeaveDurationUnit(leaveDurationUnit int) *LeaveRequestDetailBuilder {
	builder.leaveDurationUnit = leaveDurationUnit
	builder.leaveDurationUnitFlag = true
	return builder
}

// 是否影响算薪，1：不参与算薪计算, 非对应的日期类型或者无对应的假期计划，2：影响算薪，3：不影响算薪
//
// 示例值：1
func (builder *LeaveRequestDetailBuilder) PaidType(paidType int) *LeaveRequestDetailBuilder {
	builder.paidType = paidType
	builder.paidTypeFlag = true
	return builder
}

func (builder *LeaveRequestDetailBuilder) Build() *LeaveRequestDetail {
	req := &LeaveRequestDetail{}
	if builder.leaveRequestIdFlag {
		req.LeaveRequestId = &builder.leaveRequestId

	}
	if builder.leaveDateFlag {
		req.LeaveDate = &builder.leaveDate

	}
	if builder.leaveDurationFlag {
		req.LeaveDuration = &builder.leaveDuration

	}
	if builder.leaveDurationUnitFlag {
		req.LeaveDurationUnit = &builder.leaveDurationUnit

	}
	if builder.paidTypeFlag {
		req.PaidType = &builder.paidType

	}
	return req
}

type LeaveSubtype struct {
	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期子类ID

	LeaveTypeName []*I18n `json:"leave_type_name,omitempty"` // 假期子类名称
}

type LeaveSubtypeBuilder struct {
	leaveTypeId     string // 假期子类ID
	leaveTypeIdFlag bool

	leaveTypeName     []*I18n // 假期子类名称
	leaveTypeNameFlag bool
}

func NewLeaveSubtypeBuilder() *LeaveSubtypeBuilder {
	builder := &LeaveSubtypeBuilder{}
	return builder
}

// 假期子类ID
//
// 示例值：4718803945687580505
func (builder *LeaveSubtypeBuilder) LeaveTypeId(leaveTypeId string) *LeaveSubtypeBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 假期子类名称
//
// 示例值：
func (builder *LeaveSubtypeBuilder) LeaveTypeName(leaveTypeName []*I18n) *LeaveSubtypeBuilder {
	builder.leaveTypeName = leaveTypeName
	builder.leaveTypeNameFlag = true
	return builder
}

func (builder *LeaveSubtypeBuilder) Build() *LeaveSubtype {
	req := &LeaveSubtype{}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.leaveTypeNameFlag {
		req.LeaveTypeName = builder.leaveTypeName
	}
	return req
}

type LeaveTime struct {
	Date *string `json:"date,omitempty"` // 日期

	Time *string `json:"time,omitempty"` // 时间

	HalfDay *string `json:"half_day,omitempty"` // morning:上午, afternoon:下午
}

type LeaveTimeBuilder struct {
	date     string // 日期
	dateFlag bool

	time     string // 时间
	timeFlag bool

	halfDay     string // morning:上午, afternoon:下午
	halfDayFlag bool
}

func NewLeaveTimeBuilder() *LeaveTimeBuilder {
	builder := &LeaveTimeBuilder{}
	return builder
}

// 日期
//
// 示例值：2006-01-02
func (builder *LeaveTimeBuilder) Date(date string) *LeaveTimeBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 时间
//
// 示例值：12:00
func (builder *LeaveTimeBuilder) Time(time string) *LeaveTimeBuilder {
	builder.time = time
	builder.timeFlag = true
	return builder
}

// morning:上午, afternoon:下午
//
// 示例值：morning
func (builder *LeaveTimeBuilder) HalfDay(halfDay string) *LeaveTimeBuilder {
	builder.halfDay = halfDay
	builder.halfDayFlag = true
	return builder
}

func (builder *LeaveTimeBuilder) Build() *LeaveTime {
	req := &LeaveTime{}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.timeFlag {
		req.Time = &builder.time

	}
	if builder.halfDayFlag {
		req.HalfDay = &builder.halfDay

	}
	return req
}

type LeaveType struct {
	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	LeaveTypeName []*I18n `json:"leave_type_name,omitempty"` // 假期类型名称

	Status *int `json:"status,omitempty"` // 假期类型状态;;可选值有：;;- 1：已启用;;- 2：已停用

	LeaveSubtypeList []*LeaveSubtype `json:"leave_subtype_list,omitempty"` // 假期子类列表

	CreatedAt *string `json:"created_at,omitempty"` // 假期类型的创建时间

	CreatedBy *string `json:"created_by,omitempty"` // 假期类型的创建人，值为创建人的员工 ID

	UpdatedAt *string `json:"updated_at,omitempty"` // 假期类型的更新时间

	UpdatedBy *string `json:"updated_by,omitempty"` // 假期类型的更新人，值为更新人的员工 ID
}

type LeaveTypeBuilder struct {
	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	leaveTypeName     []*I18n // 假期类型名称
	leaveTypeNameFlag bool

	status     int // 假期类型状态;;可选值有：;;- 1：已启用;;- 2：已停用
	statusFlag bool

	leaveSubtypeList     []*LeaveSubtype // 假期子类列表
	leaveSubtypeListFlag bool

	createdAt     string // 假期类型的创建时间
	createdAtFlag bool

	createdBy     string // 假期类型的创建人，值为创建人的员工 ID
	createdByFlag bool

	updatedAt     string // 假期类型的更新时间
	updatedAtFlag bool

	updatedBy     string // 假期类型的更新人，值为更新人的员工 ID
	updatedByFlag bool
}

func NewLeaveTypeBuilder() *LeaveTypeBuilder {
	builder := &LeaveTypeBuilder{}
	return builder
}

// 假期类型ID
//
// 示例值：4718803945687580505
func (builder *LeaveTypeBuilder) LeaveTypeId(leaveTypeId string) *LeaveTypeBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 假期类型名称
//
// 示例值：
func (builder *LeaveTypeBuilder) LeaveTypeName(leaveTypeName []*I18n) *LeaveTypeBuilder {
	builder.leaveTypeName = leaveTypeName
	builder.leaveTypeNameFlag = true
	return builder
}

// 假期类型状态;;可选值有：;;- 1：已启用;;- 2：已停用
//
// 示例值：2
func (builder *LeaveTypeBuilder) Status(status int) *LeaveTypeBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 假期子类列表
//
// 示例值：
func (builder *LeaveTypeBuilder) LeaveSubtypeList(leaveSubtypeList []*LeaveSubtype) *LeaveTypeBuilder {
	builder.leaveSubtypeList = leaveSubtypeList
	builder.leaveSubtypeListFlag = true
	return builder
}

// 假期类型的创建时间
//
// 示例值：1658730384
func (builder *LeaveTypeBuilder) CreatedAt(createdAt string) *LeaveTypeBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 假期类型的创建人，值为创建人的员工 ID
//
// 示例值：7104164629974646786
func (builder *LeaveTypeBuilder) CreatedBy(createdBy string) *LeaveTypeBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 假期类型的更新时间
//
// 示例值：1658996995
func (builder *LeaveTypeBuilder) UpdatedAt(updatedAt string) *LeaveTypeBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 假期类型的更新人，值为更新人的员工 ID
//
// 示例值：7112112899636854812
func (builder *LeaveTypeBuilder) UpdatedBy(updatedBy string) *LeaveTypeBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

func (builder *LeaveTypeBuilder) Build() *LeaveType {
	req := &LeaveType{}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.leaveTypeNameFlag {
		req.LeaveTypeName = builder.leaveTypeName
	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.leaveSubtypeListFlag {
		req.LeaveSubtypeList = builder.leaveSubtypeList
	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	return req
}

type Location struct {
	Id *string `json:"id,omitempty"` // 地点 ID

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 层级关系，内层字段见实体

	LocationUsageList []*Enum `json:"location_usage_list,omitempty"` // 地点用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)地点用途（location_usage）枚举定义部分获得

	Address []*Address `json:"address,omitempty"` // 地址

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，枚举值可通过【批量查询工时制度】接口获取

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	Locale *Enum `json:"locale,omitempty"` // 区域设置，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)区域设置（locale）枚举定义部分获得

	TimeZoneId *string `json:"time_zone_id,omitempty"` // 时区

	DisplayLanguageId *string `json:"display_language_id,omitempty"` // 默认显示语言
}

type LocationBuilder struct {
	id     string // 地点 ID
	idFlag bool

	hiberarchyCommon     *HiberarchyCommon // 层级关系，内层字段见实体
	hiberarchyCommonFlag bool

	locationUsageList     []*Enum // 地点用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)地点用途（location_usage）枚举定义部分获得
	locationUsageListFlag bool

	address     []*Address // 地址
	addressFlag bool

	workingHoursTypeId     string // 工时制度 ID，枚举值可通过【批量查询工时制度】接口获取
	workingHoursTypeIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	locale     *Enum // 区域设置，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)区域设置（locale）枚举定义部分获得
	localeFlag bool

	timeZoneId     string // 时区
	timeZoneIdFlag bool

	displayLanguageId     string // 默认显示语言
	displayLanguageIdFlag bool
}

func NewLocationBuilder() *LocationBuilder {
	builder := &LocationBuilder{}
	return builder
}

// 地点 ID
//
// 示例值：4718803945687580505
func (builder *LocationBuilder) Id(id string) *LocationBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 层级关系，内层字段见实体
//
// 示例值：
func (builder *LocationBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *LocationBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 地点用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)地点用途（location_usage）枚举定义部分获得
//
// 示例值：
func (builder *LocationBuilder) LocationUsageList(locationUsageList []*Enum) *LocationBuilder {
	builder.locationUsageList = locationUsageList
	builder.locationUsageListFlag = true
	return builder
}

// 地址
//
// 示例值：
func (builder *LocationBuilder) Address(address []*Address) *LocationBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 工时制度 ID，枚举值可通过【批量查询工时制度】接口获取
//
// 示例值：4690238309151997779
func (builder *LocationBuilder) WorkingHoursTypeId(workingHoursTypeId string) *LocationBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *LocationBuilder) EffectiveTime(effectiveTime string) *LocationBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *LocationBuilder) ExpirationTime(expirationTime string) *LocationBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *LocationBuilder) CustomFields(customFields []*ObjectFieldData) *LocationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 区域设置，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)区域设置（locale）枚举定义部分获得
//
// 示例值：zh_cn
func (builder *LocationBuilder) Locale(locale *Enum) *LocationBuilder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 时区
//
// 示例值：123456789
func (builder *LocationBuilder) TimeZoneId(timeZoneId string) *LocationBuilder {
	builder.timeZoneId = timeZoneId
	builder.timeZoneIdFlag = true
	return builder
}

// 默认显示语言
//
// 示例值：123456789
func (builder *LocationBuilder) DisplayLanguageId(displayLanguageId string) *LocationBuilder {
	builder.displayLanguageId = displayLanguageId
	builder.displayLanguageIdFlag = true
	return builder
}

func (builder *LocationBuilder) Build() *Location {
	req := &Location{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.locationUsageListFlag {
		req.LocationUsageList = builder.locationUsageList
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.localeFlag {
		req.Locale = builder.locale
	}
	if builder.timeZoneIdFlag {
		req.TimeZoneId = &builder.timeZoneId

	}
	if builder.displayLanguageIdFlag {
		req.DisplayLanguageId = &builder.displayLanguageId

	}
	return req
}

type LookupFieldSetting struct {
	LookupObjApiName *string `json:"lookup_obj_api_name,omitempty"` // 查找字段指向对象的 API name。例如人员单选、人员多选字段均指向 employment 系统对象，而自定义分组字段指向用户创建的自定义对象。可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口传入此属性，以获取自定义分组中的字段。

	IsMultiple *bool `json:"is_multiple,omitempty"` // 是否为多值。例如人员单选字段此属性为 false，而人员多选字段此属性为 true。
}

type LookupFieldSettingBuilder struct {
	lookupObjApiName     string // 查找字段指向对象的 API name。例如人员单选、人员多选字段均指向 employment 系统对象，而自定义分组字段指向用户创建的自定义对象。可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口传入此属性，以获取自定义分组中的字段。
	lookupObjApiNameFlag bool

	isMultiple     bool // 是否为多值。例如人员单选字段此属性为 false，而人员多选字段此属性为 true。
	isMultipleFlag bool
}

func NewLookupFieldSettingBuilder() *LookupFieldSettingBuilder {
	builder := &LookupFieldSettingBuilder{}
	return builder
}

// 查找字段指向对象的 API name。例如人员单选、人员多选字段均指向 employment 系统对象，而自定义分组字段指向用户创建的自定义对象。可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口传入此属性，以获取自定义分组中的字段。
//
// 示例值：employment
func (builder *LookupFieldSettingBuilder) LookupObjApiName(lookupObjApiName string) *LookupFieldSettingBuilder {
	builder.lookupObjApiName = lookupObjApiName
	builder.lookupObjApiNameFlag = true
	return builder
}

// 是否为多值。例如人员单选字段此属性为 false，而人员多选字段此属性为 true。
//
// 示例值：false
func (builder *LookupFieldSettingBuilder) IsMultiple(isMultiple bool) *LookupFieldSettingBuilder {
	builder.isMultiple = isMultiple
	builder.isMultipleFlag = true
	return builder
}

func (builder *LookupFieldSettingBuilder) Build() *LookupFieldSetting {
	req := &LookupFieldSetting{}
	if builder.lookupObjApiNameFlag {
		req.LookupObjApiName = &builder.lookupObjApiName

	}
	if builder.isMultipleFlag {
		req.IsMultiple = &builder.isMultiple

	}
	return req
}

type ManageRelation struct {
	SubordinateDepartmentId *string `json:"subordinate_department_id,omitempty"` // 下级所在部门

	SubordinateEmployeeId *string `json:"subordinate_employee_id,omitempty"` // 下级员工

	ManagerType *Enum `json:"manager_type,omitempty"` // 汇报关系（实现汇报，虚线汇报，第二汇报线...）

	ReportModeType *Enum `json:"report_mode_type,omitempty"` // 汇报线类型 (按人汇报，按部门汇报...)

	SuperiorEmployeeId *string `json:"superior_employee_id,omitempty"` // 上级员工

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间
}

type ManageRelationBuilder struct {
	subordinateDepartmentId     string // 下级所在部门
	subordinateDepartmentIdFlag bool

	subordinateEmployeeId     string // 下级员工
	subordinateEmployeeIdFlag bool

	managerType     *Enum // 汇报关系（实现汇报，虚线汇报，第二汇报线...）
	managerTypeFlag bool

	reportModeType     *Enum // 汇报线类型 (按人汇报，按部门汇报...)
	reportModeTypeFlag bool

	superiorEmployeeId     string // 上级员工
	superiorEmployeeIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool
}

func NewManageRelationBuilder() *ManageRelationBuilder {
	builder := &ManageRelationBuilder{}
	return builder
}

// 下级所在部门
//
// 示例值：4719456877659520852
func (builder *ManageRelationBuilder) SubordinateDepartmentId(subordinateDepartmentId string) *ManageRelationBuilder {
	builder.subordinateDepartmentId = subordinateDepartmentId
	builder.subordinateDepartmentIdFlag = true
	return builder
}

// 下级员工
//
// 示例值：6893010737371809287
func (builder *ManageRelationBuilder) SubordinateEmployeeId(subordinateEmployeeId string) *ManageRelationBuilder {
	builder.subordinateEmployeeId = subordinateEmployeeId
	builder.subordinateEmployeeIdFlag = true
	return builder
}

// 汇报关系（实现汇报，虚线汇报，第二汇报线...）
//
// 示例值：
func (builder *ManageRelationBuilder) ManagerType(managerType *Enum) *ManageRelationBuilder {
	builder.managerType = managerType
	builder.managerTypeFlag = true
	return builder
}

// 汇报线类型 (按人汇报，按部门汇报...)
//
// 示例值：
func (builder *ManageRelationBuilder) ReportModeType(reportModeType *Enum) *ManageRelationBuilder {
	builder.reportModeType = reportModeType
	builder.reportModeTypeFlag = true
	return builder
}

// 上级员工
//
// 示例值：6893013626584565256
func (builder *ManageRelationBuilder) SuperiorEmployeeId(superiorEmployeeId string) *ManageRelationBuilder {
	builder.superiorEmployeeId = superiorEmployeeId
	builder.superiorEmployeeIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2021-06-06 00:00:00
func (builder *ManageRelationBuilder) EffectiveTime(effectiveTime string) *ManageRelationBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

func (builder *ManageRelationBuilder) Build() *ManageRelation {
	req := &ManageRelation{}
	if builder.subordinateDepartmentIdFlag {
		req.SubordinateDepartmentId = &builder.subordinateDepartmentId

	}
	if builder.subordinateEmployeeIdFlag {
		req.SubordinateEmployeeId = &builder.subordinateEmployeeId

	}
	if builder.managerTypeFlag {
		req.ManagerType = builder.managerType
	}
	if builder.reportModeTypeFlag {
		req.ReportModeType = builder.reportModeType
	}
	if builder.superiorEmployeeIdFlag {
		req.SuperiorEmployeeId = &builder.superiorEmployeeId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	return req
}

type ManagementScope struct {
	ManagementDimension *string `json:"management_dimension,omitempty"` // 管理维度;;可选值有：;;- department：部门;- work_location：工作地点;- company：公司;- social_security_location：社保城市

	ObjId *string `json:"obj_id,omitempty"` // 被授权部门/工作地点/公司/社保城市 ID
}

type ManagementScopeBuilder struct {
	managementDimension     string // 管理维度;;可选值有：;;- department：部门;- work_location：工作地点;- company：公司;- social_security_location：社保城市
	managementDimensionFlag bool

	objId     string // 被授权部门/工作地点/公司/社保城市 ID
	objIdFlag bool
}

func NewManagementScopeBuilder() *ManagementScopeBuilder {
	builder := &ManagementScopeBuilder{}
	return builder
}

// 管理维度;;可选值有：;;- department：部门;- work_location：工作地点;- company：公司;- social_security_location：社保城市
//
// 示例值：department
func (builder *ManagementScopeBuilder) ManagementDimension(managementDimension string) *ManagementScopeBuilder {
	builder.managementDimension = managementDimension
	builder.managementDimensionFlag = true
	return builder
}

// 被授权部门/工作地点/公司/社保城市 ID
//
// 示例值：7023318326176777742
func (builder *ManagementScopeBuilder) ObjId(objId string) *ManagementScopeBuilder {
	builder.objId = objId
	builder.objIdFlag = true
	return builder
}

func (builder *ManagementScopeBuilder) Build() *ManagementScope {
	req := &ManagementScope{}
	if builder.managementDimensionFlag {
		req.ManagementDimension = &builder.managementDimension

	}
	if builder.objIdFlag {
		req.ObjId = &builder.objId

	}
	return req
}

type Name struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文

	EnUs *string `json:"en_us,omitempty"` // 英文
}

type NameBuilder struct {
	zhCn     string // 中文
	zhCnFlag bool

	enUs     string // 英文
	enUsFlag bool
}

func NewNameBuilder() *NameBuilder {
	builder := &NameBuilder{}
	return builder
}

// 中文
//
// 示例值：cn
func (builder *NameBuilder) ZhCn(zhCn string) *NameBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文
//
// 示例值：en
func (builder *NameBuilder) EnUs(enUs string) *NameBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *NameBuilder) Build() *Name {
	req := &Name{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type NationalId struct {
	NationalIdTypeId *string `json:"national_id_type_id,omitempty"` // 国家证件类型，枚举值可通过【批量查询国家证件类型】接口获取

	NationalIdNumber *string `json:"national_id_number,omitempty"` // 证件号码

	IssueDate *string `json:"issue_date,omitempty"` // 证件签发日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 证件到期日期

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	IssuedBy *string `json:"issued_by,omitempty"` // 证件签发机构

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type NationalIdBuilder struct {
	nationalIdTypeId     string // 国家证件类型，枚举值可通过【批量查询国家证件类型】接口获取
	nationalIdTypeIdFlag bool

	nationalIdNumber     string // 证件号码
	nationalIdNumberFlag bool

	issueDate     string // 证件签发日期
	issueDateFlag bool

	expirationDate     string // 证件到期日期
	expirationDateFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	issuedBy     string // 证件签发机构
	issuedByFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewNationalIdBuilder() *NationalIdBuilder {
	builder := &NationalIdBuilder{}
	return builder
}

// 国家证件类型，枚举值可通过【批量查询国家证件类型】接口获取
//
// 示例值：6863330041896371725
func (builder *NationalIdBuilder) NationalIdTypeId(nationalIdTypeId string) *NationalIdBuilder {
	builder.nationalIdTypeId = nationalIdTypeId
	builder.nationalIdTypeIdFlag = true
	return builder
}

// 证件号码
//
// 示例值：1231131333
func (builder *NationalIdBuilder) NationalIdNumber(nationalIdNumber string) *NationalIdBuilder {
	builder.nationalIdNumber = nationalIdNumber
	builder.nationalIdNumberFlag = true
	return builder
}

// 证件签发日期
//
// 示例值：2020-04-01
func (builder *NationalIdBuilder) IssueDate(issueDate string) *NationalIdBuilder {
	builder.issueDate = issueDate
	builder.issueDateFlag = true
	return builder
}

// 证件到期日期
//
// 示例值：2020-05-21
func (builder *NationalIdBuilder) ExpirationDate(expirationDate string) *NationalIdBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *NationalIdBuilder) CountryRegionId(countryRegionId string) *NationalIdBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 证件签发机构
//
// 示例值：北京市公安局
func (builder *NationalIdBuilder) IssuedBy(issuedBy string) *NationalIdBuilder {
	builder.issuedBy = issuedBy
	builder.issuedByFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *NationalIdBuilder) CustomFields(customFields []*ObjectFieldData) *NationalIdBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *NationalIdBuilder) Build() *NationalId {
	req := &NationalId{}
	if builder.nationalIdTypeIdFlag {
		req.NationalIdTypeId = &builder.nationalIdTypeId

	}
	if builder.nationalIdNumberFlag {
		req.NationalIdNumber = &builder.nationalIdNumber

	}
	if builder.issueDateFlag {
		req.IssueDate = &builder.issueDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.issuedByFlag {
		req.IssuedBy = &builder.issuedBy

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type NationalIdType struct {
	Id *string `json:"id,omitempty"` // 证件类型 ID

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	Name []*I18n `json:"name,omitempty"` // 名称

	Active *bool `json:"active,omitempty"` // 是否启用

	ValidationRule *string `json:"validation_rule,omitempty"` // 校验规则

	ValidationRuleDescription []*I18n `json:"validation_rule_description,omitempty"` // 校验规则描述

	Code *string `json:"code,omitempty"` // 编码

	IdentificationType *Enum `json:"identification_type,omitempty"` // 证件类型

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type NationalIdTypeBuilder struct {
	id     string // 证件类型 ID
	idFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	name     []*I18n // 名称
	nameFlag bool

	active     bool // 是否启用
	activeFlag bool

	validationRule     string // 校验规则
	validationRuleFlag bool

	validationRuleDescription     []*I18n // 校验规则描述
	validationRuleDescriptionFlag bool

	code     string // 编码
	codeFlag bool

	identificationType     *Enum // 证件类型
	identificationTypeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewNationalIdTypeBuilder() *NationalIdTypeBuilder {
	builder := &NationalIdTypeBuilder{}
	return builder
}

// 证件类型 ID
//
// 示例值：6888198886960137735
func (builder *NationalIdTypeBuilder) Id(id string) *NationalIdTypeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995747139225096
func (builder *NationalIdTypeBuilder) CountryRegionId(countryRegionId string) *NationalIdTypeBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *NationalIdTypeBuilder) Name(name []*I18n) *NationalIdTypeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *NationalIdTypeBuilder) Active(active bool) *NationalIdTypeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 校验规则
//
// 示例值：^\d{9}$
func (builder *NationalIdTypeBuilder) ValidationRule(validationRule string) *NationalIdTypeBuilder {
	builder.validationRule = validationRule
	builder.validationRuleFlag = true
	return builder
}

// 校验规则描述
//
// 示例值：
func (builder *NationalIdTypeBuilder) ValidationRuleDescription(validationRuleDescription []*I18n) *NationalIdTypeBuilder {
	builder.validationRuleDescription = validationRuleDescription
	builder.validationRuleDescriptionFlag = true
	return builder
}

// 编码
//
// 示例值：AUS-TFN
func (builder *NationalIdTypeBuilder) Code(code string) *NationalIdTypeBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 证件类型
//
// 示例值：
func (builder *NationalIdTypeBuilder) IdentificationType(identificationType *Enum) *NationalIdTypeBuilder {
	builder.identificationType = identificationType
	builder.identificationTypeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *NationalIdTypeBuilder) CustomFields(customFields []*ObjectFieldData) *NationalIdTypeBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *NationalIdTypeBuilder) Build() *NationalIdType {
	req := &NationalIdType{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.validationRuleFlag {
		req.ValidationRule = &builder.validationRule

	}
	if builder.validationRuleDescriptionFlag {
		req.ValidationRuleDescription = builder.validationRuleDescription
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.identificationTypeFlag {
		req.IdentificationType = builder.identificationType
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type NumberFieldSetting struct {
	NumberFieldType *int `json:"number_field_type,omitempty"` // 数字类型，含以下枚举值：;1. Percent 百分比;2. Integer 整数;3. Value 数值（浮点数）;4. Money 金额（浮点数）

	DecimalPlaces *int `json:"decimal_places,omitempty"` // 小数部分位数（浮点数整数部分和小数部分分别最大30位）

	RoundType *int `json:"round_type,omitempty"` // 四舍五入规则，含以下枚举值：;;0. Round 四舍五入;1. Ceil 向上舍入;2. Floor 向下舍入

	DecimalTotalPlaces *int `json:"decimal_total_places,omitempty"` // 整数+小数总位数
}

type NumberFieldSettingBuilder struct {
	numberFieldType     int // 数字类型，含以下枚举值：;1. Percent 百分比;2. Integer 整数;3. Value 数值（浮点数）;4. Money 金额（浮点数）
	numberFieldTypeFlag bool

	decimalPlaces     int // 小数部分位数（浮点数整数部分和小数部分分别最大30位）
	decimalPlacesFlag bool

	roundType     int // 四舍五入规则，含以下枚举值：;;0. Round 四舍五入;1. Ceil 向上舍入;2. Floor 向下舍入
	roundTypeFlag bool

	decimalTotalPlaces     int // 整数+小数总位数
	decimalTotalPlacesFlag bool
}

func NewNumberFieldSettingBuilder() *NumberFieldSettingBuilder {
	builder := &NumberFieldSettingBuilder{}
	return builder
}

// 数字类型，含以下枚举值：;1. Percent 百分比;2. Integer 整数;3. Value 数值（浮点数）;4. Money 金额（浮点数）
//
// 示例值：1
func (builder *NumberFieldSettingBuilder) NumberFieldType(numberFieldType int) *NumberFieldSettingBuilder {
	builder.numberFieldType = numberFieldType
	builder.numberFieldTypeFlag = true
	return builder
}

// 小数部分位数（浮点数整数部分和小数部分分别最大30位）
//
// 示例值：1
func (builder *NumberFieldSettingBuilder) DecimalPlaces(decimalPlaces int) *NumberFieldSettingBuilder {
	builder.decimalPlaces = decimalPlaces
	builder.decimalPlacesFlag = true
	return builder
}

// 四舍五入规则，含以下枚举值：;;0. Round 四舍五入;1. Ceil 向上舍入;2. Floor 向下舍入
//
// 示例值：1
func (builder *NumberFieldSettingBuilder) RoundType(roundType int) *NumberFieldSettingBuilder {
	builder.roundType = roundType
	builder.roundTypeFlag = true
	return builder
}

// 整数+小数总位数
//
// 示例值：1
func (builder *NumberFieldSettingBuilder) DecimalTotalPlaces(decimalTotalPlaces int) *NumberFieldSettingBuilder {
	builder.decimalTotalPlaces = decimalTotalPlaces
	builder.decimalTotalPlacesFlag = true
	return builder
}

func (builder *NumberFieldSettingBuilder) Build() *NumberFieldSetting {
	req := &NumberFieldSetting{}
	if builder.numberFieldTypeFlag {
		req.NumberFieldType = &builder.numberFieldType

	}
	if builder.decimalPlacesFlag {
		req.DecimalPlaces = &builder.decimalPlaces

	}
	if builder.roundTypeFlag {
		req.RoundType = &builder.roundType

	}
	if builder.decimalTotalPlacesFlag {
		req.DecimalTotalPlaces = &builder.decimalTotalPlaces

	}
	return req
}

type Object struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 对象的唯一标识

	Name *Name `json:"name,omitempty"` // 对象名称

	IsOpen *bool `json:"is_open,omitempty"` // 是否启用;;True 为已启用;;False 为未启用

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，秒级时间戳

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间，秒级时间戳
}

type ObjectBuilder struct {
	objectApiName     string // 对象的唯一标识
	objectApiNameFlag bool

	name     *Name // 对象名称
	nameFlag bool

	isOpen     bool // 是否启用;;True 为已启用;;False 为未启用
	isOpenFlag bool

	createTime     string // 创建时间，秒级时间戳
	createTimeFlag bool

	updateTime     string // 更新时间，秒级时间戳
	updateTimeFlag bool
}

func NewObjectBuilder() *ObjectBuilder {
	builder := &ObjectBuilder{}
	return builder
}

// 对象的唯一标识
//
// 示例值：offboarding_info
func (builder *ObjectBuilder) ObjectApiName(objectApiName string) *ObjectBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 对象名称
//
// 示例值：
func (builder *ObjectBuilder) Name(name *Name) *ObjectBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用;;True 为已启用;;False 为未启用
//
// 示例值：false
func (builder *ObjectBuilder) IsOpen(isOpen bool) *ObjectBuilder {
	builder.isOpen = isOpen
	builder.isOpenFlag = true
	return builder
}

// 创建时间，秒级时间戳
//
// 示例值：1644992809
func (builder *ObjectBuilder) CreateTime(createTime string) *ObjectBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间，秒级时间戳
//
// 示例值：1644992809
func (builder *ObjectBuilder) UpdateTime(updateTime string) *ObjectBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

func (builder *ObjectBuilder) Build() *Object {
	req := &Object{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.isOpenFlag {
		req.IsOpen = &builder.isOpen

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	return req
}

type ObjectData struct {
	ObjectName *string `json:"object_name,omitempty"` // 自定义实体名称

	Id *string `json:"id,omitempty"` // 自定义实体ID

	FieldList []*ObjectFieldData `json:"field_list,omitempty"` // 自定义实体字段
}

type ObjectDataBuilder struct {
	objectName     string // 自定义实体名称
	objectNameFlag bool

	id     string // 自定义实体ID
	idFlag bool

	fieldList     []*ObjectFieldData // 自定义实体字段
	fieldListFlag bool
}

func NewObjectDataBuilder() *ObjectDataBuilder {
	builder := &ObjectDataBuilder{}
	return builder
}

// 自定义实体名称
//
// 示例值：custom_location
func (builder *ObjectDataBuilder) ObjectName(objectName string) *ObjectDataBuilder {
	builder.objectName = objectName
	builder.objectNameFlag = true
	return builder
}

// 自定义实体ID
//
// 示例值：6862995757234914824
func (builder *ObjectDataBuilder) Id(id string) *ObjectDataBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 自定义实体字段
//
// 示例值：
func (builder *ObjectDataBuilder) FieldList(fieldList []*ObjectFieldData) *ObjectDataBuilder {
	builder.fieldList = fieldList
	builder.fieldListFlag = true
	return builder
}

func (builder *ObjectDataBuilder) Build() *ObjectData {
	req := &ObjectData{}
	if builder.objectNameFlag {
		req.ObjectName = &builder.objectName

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.fieldListFlag {
		req.FieldList = builder.fieldList
	}
	return req
}

type ObjectFieldData struct {
	FieldName *string `json:"field_name,omitempty"` // 字段名

	Value *string `json:"value,omitempty"` // 字段值，是json转义后的字符串，根据元数据定义不同，字段格式不同(如123, 123.23, "true", [\"id1\",\"id2\"], "2006-01-02 15:04:05")
}

type ObjectFieldDataBuilder struct {
	fieldName     string // 字段名
	fieldNameFlag bool

	value     string // 字段值，是json转义后的字符串，根据元数据定义不同，字段格式不同(如123, 123.23, "true", [\"id1\",\"id2\"], "2006-01-02 15:04:05")
	valueFlag bool
}

func NewObjectFieldDataBuilder() *ObjectFieldDataBuilder {
	builder := &ObjectFieldDataBuilder{}
	return builder
}

// 字段名
//
// 示例值：name
func (builder *ObjectFieldDataBuilder) FieldName(fieldName string) *ObjectFieldDataBuilder {
	builder.fieldName = fieldName
	builder.fieldNameFlag = true
	return builder
}

// 字段值，是json转义后的字符串，根据元数据定义不同，字段格式不同(如123, 123.23, "true", [\"id1\",\"id2\"], "2006-01-02 15:04:05")
//
// 示例值：\"Sandy\"
func (builder *ObjectFieldDataBuilder) Value(value string) *ObjectFieldDataBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *ObjectFieldDataBuilder) Build() *ObjectFieldData {
	req := &ObjectFieldData{}
	if builder.fieldNameFlag {
		req.FieldName = &builder.fieldName

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type Offboarding struct {
	InitiatingType *string `json:"initiating_type,omitempty"` // 离职发起类型，包括：

	Status *string `json:"status,omitempty"` // 离职状态

	ApplicationInfo *ApplicationInfo `json:"application_info,omitempty"` // 离职审批信息

	OffboardingInfo *OffboardingInfo `json:"offboarding_info,omitempty"` // 员工离职信息

	OffboardingChecklist *OffboardingChecklist `json:"offboarding_checklist,omitempty"` // 离职办理流程信息

	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职单据ID
}

type OffboardingBuilder struct {
	initiatingType     string // 离职发起类型，包括：
	initiatingTypeFlag bool

	status     string // 离职状态
	statusFlag bool

	applicationInfo     *ApplicationInfo // 离职审批信息
	applicationInfoFlag bool

	offboardingInfo     *OffboardingInfo // 员工离职信息
	offboardingInfoFlag bool

	offboardingChecklist     *OffboardingChecklist // 离职办理流程信息
	offboardingChecklistFlag bool

	offboardingId     string // 离职单据ID
	offboardingIdFlag bool
}

func NewOffboardingBuilder() *OffboardingBuilder {
	builder := &OffboardingBuilder{}
	return builder
}

// 离职发起类型，包括：
//
// 示例值：offboarding_directly
func (builder *OffboardingBuilder) InitiatingType(initiatingType string) *OffboardingBuilder {
	builder.initiatingType = initiatingType
	builder.initiatingTypeFlag = true
	return builder
}

// 离职状态
//
// 示例值：Approving
func (builder *OffboardingBuilder) Status(status string) *OffboardingBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 离职审批信息
//
// 示例值：
func (builder *OffboardingBuilder) ApplicationInfo(applicationInfo *ApplicationInfo) *OffboardingBuilder {
	builder.applicationInfo = applicationInfo
	builder.applicationInfoFlag = true
	return builder
}

// 员工离职信息
//
// 示例值：
func (builder *OffboardingBuilder) OffboardingInfo(offboardingInfo *OffboardingInfo) *OffboardingBuilder {
	builder.offboardingInfo = offboardingInfo
	builder.offboardingInfoFlag = true
	return builder
}

// 离职办理流程信息
//
// 示例值：
func (builder *OffboardingBuilder) OffboardingChecklist(offboardingChecklist *OffboardingChecklist) *OffboardingBuilder {
	builder.offboardingChecklist = offboardingChecklist
	builder.offboardingChecklistFlag = true
	return builder
}

// 离职单据ID
//
// 示例值：7298499290417251879
func (builder *OffboardingBuilder) OffboardingId(offboardingId string) *OffboardingBuilder {
	builder.offboardingId = offboardingId
	builder.offboardingIdFlag = true
	return builder
}

func (builder *OffboardingBuilder) Build() *Offboarding {
	req := &Offboarding{}
	if builder.initiatingTypeFlag {
		req.InitiatingType = &builder.initiatingType

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.applicationInfoFlag {
		req.ApplicationInfo = builder.applicationInfo
	}
	if builder.offboardingInfoFlag {
		req.OffboardingInfo = builder.offboardingInfo
	}
	if builder.offboardingChecklistFlag {
		req.OffboardingChecklist = builder.offboardingChecklist
	}
	if builder.offboardingIdFlag {
		req.OffboardingId = &builder.offboardingId

	}
	return req
}

type OffboardingChecklist struct {
	ChecklistStatus *string `json:"checklist_status,omitempty"` // 离职办理状态

	ChecklistStartTime *string `json:"checklist_start_time,omitempty"` // 离职流转开始时间

	ChecklistFinishTime *string `json:"checklist_finish_time,omitempty"` // 离职流转结束时间

	ChecklistProcessId *string `json:"checklist_process_id,omitempty"` // 离职流转流程实例 ID
}

type OffboardingChecklistBuilder struct {
	checklistStatus     string // 离职办理状态
	checklistStatusFlag bool

	checklistStartTime     string // 离职流转开始时间
	checklistStartTimeFlag bool

	checklistFinishTime     string // 离职流转结束时间
	checklistFinishTimeFlag bool

	checklistProcessId     string // 离职流转流程实例 ID
	checklistProcessIdFlag bool
}

func NewOffboardingChecklistBuilder() *OffboardingChecklistBuilder {
	builder := &OffboardingChecklistBuilder{}
	return builder
}

// 离职办理状态
//
// 示例值：AntiBegin
func (builder *OffboardingChecklistBuilder) ChecklistStatus(checklistStatus string) *OffboardingChecklistBuilder {
	builder.checklistStatus = checklistStatus
	builder.checklistStatusFlag = true
	return builder
}

// 离职流转开始时间
//
// 示例值：2022-02-03 11:22:33
func (builder *OffboardingChecklistBuilder) ChecklistStartTime(checklistStartTime string) *OffboardingChecklistBuilder {
	builder.checklistStartTime = checklistStartTime
	builder.checklistStartTimeFlag = true
	return builder
}

// 离职流转结束时间
//
// 示例值：2022-02-03 11:22:33
func (builder *OffboardingChecklistBuilder) ChecklistFinishTime(checklistFinishTime string) *OffboardingChecklistBuilder {
	builder.checklistFinishTime = checklistFinishTime
	builder.checklistFinishTimeFlag = true
	return builder
}

// 离职流转流程实例 ID
//
// 示例值：6838119494196871234
func (builder *OffboardingChecklistBuilder) ChecklistProcessId(checklistProcessId string) *OffboardingChecklistBuilder {
	builder.checklistProcessId = checklistProcessId
	builder.checklistProcessIdFlag = true
	return builder
}

func (builder *OffboardingChecklistBuilder) Build() *OffboardingChecklist {
	req := &OffboardingChecklist{}
	if builder.checklistStatusFlag {
		req.ChecklistStatus = &builder.checklistStatus

	}
	if builder.checklistStartTimeFlag {
		req.ChecklistStartTime = &builder.checklistStartTime

	}
	if builder.checklistFinishTimeFlag {
		req.ChecklistFinishTime = &builder.checklistFinishTime

	}
	if builder.checklistProcessIdFlag {
		req.ChecklistProcessId = &builder.checklistProcessId

	}
	return req
}

type OffboardingData struct {
	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	OffboardingReasonUniqueIdentifier *string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因

	OffboardingDate *string `json:"offboarding_date,omitempty"` // 离职日期

	OffboardingReasonExplanation *string `json:"offboarding_reason_explanation,omitempty"` // 离职原因说明

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间
}

type OffboardingDataBuilder struct {
	offboardingId     string // 离职记录 id
	offboardingIdFlag bool

	employmentId     string // 雇员 id
	employmentIdFlag bool

	offboardingReasonUniqueIdentifier     string // 离职原因
	offboardingReasonUniqueIdentifierFlag bool

	offboardingDate     string // 离职日期
	offboardingDateFlag bool

	offboardingReasonExplanation     string // 离职原因说明
	offboardingReasonExplanationFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool
}

func NewOffboardingDataBuilder() *OffboardingDataBuilder {
	builder := &OffboardingDataBuilder{}
	return builder
}

// 离职记录 id
//
// 示例值：7095671727698478604
func (builder *OffboardingDataBuilder) OffboardingId(offboardingId string) *OffboardingDataBuilder {
	builder.offboardingId = offboardingId
	builder.offboardingIdFlag = true
	return builder
}

// 雇员 id
//
// 示例值：6982509313466189342
func (builder *OffboardingDataBuilder) EmploymentId(employmentId string) *OffboardingDataBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 离职原因
//
// 示例值：reason_for_offboarding_option8
func (builder *OffboardingDataBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier string) *OffboardingDataBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 离职日期
//
// 示例值：2022-05-18
func (builder *OffboardingDataBuilder) OffboardingDate(offboardingDate string) *OffboardingDataBuilder {
	builder.offboardingDate = offboardingDate
	builder.offboardingDateFlag = true
	return builder
}

// 离职原因说明
//
// 示例值：离职原因说明
func (builder *OffboardingDataBuilder) OffboardingReasonExplanation(offboardingReasonExplanation string) *OffboardingDataBuilder {
	builder.offboardingReasonExplanation = offboardingReasonExplanation
	builder.offboardingReasonExplanationFlag = true
	return builder
}

// 创建时间
//
// 示例值：2022-05-09 17:50:17
func (builder *OffboardingDataBuilder) CreatedTime(createdTime string) *OffboardingDataBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

func (builder *OffboardingDataBuilder) Build() *OffboardingData {
	req := &OffboardingData{}
	if builder.offboardingIdFlag {
		req.OffboardingId = &builder.offboardingId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = &builder.offboardingReasonUniqueIdentifier

	}
	if builder.offboardingDateFlag {
		req.OffboardingDate = &builder.offboardingDate

	}
	if builder.offboardingReasonExplanationFlag {
		req.OffboardingReasonExplanation = &builder.offboardingReasonExplanation

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	return req
}

type OffboardingInfo struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 离职员工的雇佣 ID

	HrbpId []string `json:"hrbp_id,omitempty"` // 员工的 hrbp 列表，所有的 hrbp

	ExpectedOffboardingDate *string `json:"expected_offboarding_date,omitempty"` // 期望离职日期

	OffboardingDate *string `json:"offboarding_date,omitempty"` // 离职日期

	Reason *Enum `json:"reason,omitempty"` // 离职原因

	ReasonExplanation *string `json:"reason_explanation,omitempty"` // 离职原因说明

	EmployeeReason *Enum `json:"employee_reason,omitempty"` // 离职原因（员工）

	EmployeeReasonExplanation *string `json:"employee_reason_explanation,omitempty"` // 离职原因说明（员工）

	AddBlockList *string `json:"add_block_list,omitempty"` // 是否加入离职屏蔽名单

	BlockReason *Enum `json:"block_reason,omitempty"` // 屏蔽原因

	BlockReasonExplanation *string `json:"block_reason_explanation,omitempty"` // 屏蔽原因说明

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	RetainAccount *bool `json:"retain_account,omitempty"` // 离职是否保留飞书账号

	SocialInsuranceEndDate *string `json:"social_insurance_end_date,omitempty"` // 社保停保年月

	ProvidentFundEndDate *string `json:"provident_fund_end_date,omitempty"` // 公积金截止年月

	EnforceNoncompeteAgreement *bool `json:"enforce_noncompete_agreement,omitempty"` // 是否启动竞业

	NoncompeteAgreementId *string `json:"noncompete_agreement_id,omitempty"` // 竞业合同ID

	NoncompeteAgreementCompany *string `json:"noncompete_agreement_company,omitempty"` // 竞业公司ID

	NoncompeteAgreementStartDate *string `json:"noncompete_agreement_start_date,omitempty"` // 竞业开始日期

	NoncompeteAgreementEndDate *string `json:"noncompete_agreement_end_date,omitempty"` // 竞业结束日期

	SignType *Enum `json:"sign_type,omitempty"` // 签署方式

	SignatureFile *string `json:"signature_file,omitempty"` // 签署文件ID列表

	LastAttendanceDate *string `json:"last_attendance_date,omitempty"` // 最后出勤日

	IsTransferWithWorkforce *bool `json:"is_transfer_with_workforce,omitempty"` // 是否带编转移
}

type OffboardingInfoBuilder struct {
	employmentId     string // 离职员工的雇佣 ID
	employmentIdFlag bool

	hrbpId     []string // 员工的 hrbp 列表，所有的 hrbp
	hrbpIdFlag bool

	expectedOffboardingDate     string // 期望离职日期
	expectedOffboardingDateFlag bool

	offboardingDate     string // 离职日期
	offboardingDateFlag bool

	reason     *Enum // 离职原因
	reasonFlag bool

	reasonExplanation     string // 离职原因说明
	reasonExplanationFlag bool

	employeeReason     *Enum // 离职原因（员工）
	employeeReasonFlag bool

	employeeReasonExplanation     string // 离职原因说明（员工）
	employeeReasonExplanationFlag bool

	addBlockList     string // 是否加入离职屏蔽名单
	addBlockListFlag bool

	blockReason     *Enum // 屏蔽原因
	blockReasonFlag bool

	blockReasonExplanation     string // 屏蔽原因说明
	blockReasonExplanationFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	retainAccount     bool // 离职是否保留飞书账号
	retainAccountFlag bool

	socialInsuranceEndDate     string // 社保停保年月
	socialInsuranceEndDateFlag bool

	providentFundEndDate     string // 公积金截止年月
	providentFundEndDateFlag bool

	enforceNoncompeteAgreement     bool // 是否启动竞业
	enforceNoncompeteAgreementFlag bool

	noncompeteAgreementId     string // 竞业合同ID
	noncompeteAgreementIdFlag bool

	noncompeteAgreementCompany     string // 竞业公司ID
	noncompeteAgreementCompanyFlag bool

	noncompeteAgreementStartDate     string // 竞业开始日期
	noncompeteAgreementStartDateFlag bool

	noncompeteAgreementEndDate     string // 竞业结束日期
	noncompeteAgreementEndDateFlag bool

	signType     *Enum // 签署方式
	signTypeFlag bool

	signatureFile     string // 签署文件ID列表
	signatureFileFlag bool

	lastAttendanceDate     string // 最后出勤日
	lastAttendanceDateFlag bool

	isTransferWithWorkforce     bool // 是否带编转移
	isTransferWithWorkforceFlag bool
}

func NewOffboardingInfoBuilder() *OffboardingInfoBuilder {
	builder := &OffboardingInfoBuilder{}
	return builder
}

// 离职员工的雇佣 ID
//
// 示例值：6893014062142064135
func (builder *OffboardingInfoBuilder) EmploymentId(employmentId string) *OffboardingInfoBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 员工的 hrbp 列表，所有的 hrbp
//
// 示例值：
func (builder *OffboardingInfoBuilder) HrbpId(hrbpId []string) *OffboardingInfoBuilder {
	builder.hrbpId = hrbpId
	builder.hrbpIdFlag = true
	return builder
}

// 期望离职日期
//
// 示例值：2022-02-08
func (builder *OffboardingInfoBuilder) ExpectedOffboardingDate(expectedOffboardingDate string) *OffboardingInfoBuilder {
	builder.expectedOffboardingDate = expectedOffboardingDate
	builder.expectedOffboardingDateFlag = true
	return builder
}

// 离职日期
//
// 示例值：2022-02-08
func (builder *OffboardingInfoBuilder) OffboardingDate(offboardingDate string) *OffboardingInfoBuilder {
	builder.offboardingDate = offboardingDate
	builder.offboardingDateFlag = true
	return builder
}

// 离职原因
//
// 示例值：
func (builder *OffboardingInfoBuilder) Reason(reason *Enum) *OffboardingInfoBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 离职原因说明
//
// 示例值：升学
func (builder *OffboardingInfoBuilder) ReasonExplanation(reasonExplanation string) *OffboardingInfoBuilder {
	builder.reasonExplanation = reasonExplanation
	builder.reasonExplanationFlag = true
	return builder
}

// 离职原因（员工）
//
// 示例值：
func (builder *OffboardingInfoBuilder) EmployeeReason(employeeReason *Enum) *OffboardingInfoBuilder {
	builder.employeeReason = employeeReason
	builder.employeeReasonFlag = true
	return builder
}

// 离职原因说明（员工）
//
// 示例值：升学
func (builder *OffboardingInfoBuilder) EmployeeReasonExplanation(employeeReasonExplanation string) *OffboardingInfoBuilder {
	builder.employeeReasonExplanation = employeeReasonExplanation
	builder.employeeReasonExplanationFlag = true
	return builder
}

// 是否加入离职屏蔽名单
//
// 示例值：false
func (builder *OffboardingInfoBuilder) AddBlockList(addBlockList string) *OffboardingInfoBuilder {
	builder.addBlockList = addBlockList
	builder.addBlockListFlag = true
	return builder
}

// 屏蔽原因
//
// 示例值：
func (builder *OffboardingInfoBuilder) BlockReason(blockReason *Enum) *OffboardingInfoBuilder {
	builder.blockReason = blockReason
	builder.blockReasonFlag = true
	return builder
}

// 屏蔽原因说明
//
// 示例值：xx 年 xx 月 xx 日因 xx 原因红线
func (builder *OffboardingInfoBuilder) BlockReasonExplanation(blockReasonExplanation string) *OffboardingInfoBuilder {
	builder.blockReasonExplanation = blockReasonExplanation
	builder.blockReasonExplanationFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *OffboardingInfoBuilder) CustomFields(customFields []*CustomFieldData) *OffboardingInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 离职是否保留飞书账号
//
// 示例值：false
func (builder *OffboardingInfoBuilder) RetainAccount(retainAccount bool) *OffboardingInfoBuilder {
	builder.retainAccount = retainAccount
	builder.retainAccountFlag = true
	return builder
}

// 社保停保年月
//
// 示例值：2022-02
func (builder *OffboardingInfoBuilder) SocialInsuranceEndDate(socialInsuranceEndDate string) *OffboardingInfoBuilder {
	builder.socialInsuranceEndDate = socialInsuranceEndDate
	builder.socialInsuranceEndDateFlag = true
	return builder
}

// 公积金截止年月
//
// 示例值：2022-02
func (builder *OffboardingInfoBuilder) ProvidentFundEndDate(providentFundEndDate string) *OffboardingInfoBuilder {
	builder.providentFundEndDate = providentFundEndDate
	builder.providentFundEndDateFlag = true
	return builder
}

// 是否启动竞业
//
// 示例值：false
func (builder *OffboardingInfoBuilder) EnforceNoncompeteAgreement(enforceNoncompeteAgreement bool) *OffboardingInfoBuilder {
	builder.enforceNoncompeteAgreement = enforceNoncompeteAgreement
	builder.enforceNoncompeteAgreementFlag = true
	return builder
}

// 竞业合同ID
//
// 示例值：123
func (builder *OffboardingInfoBuilder) NoncompeteAgreementId(noncompeteAgreementId string) *OffboardingInfoBuilder {
	builder.noncompeteAgreementId = noncompeteAgreementId
	builder.noncompeteAgreementIdFlag = true
	return builder
}

// 竞业公司ID
//
// 示例值：123
func (builder *OffboardingInfoBuilder) NoncompeteAgreementCompany(noncompeteAgreementCompany string) *OffboardingInfoBuilder {
	builder.noncompeteAgreementCompany = noncompeteAgreementCompany
	builder.noncompeteAgreementCompanyFlag = true
	return builder
}

// 竞业开始日期
//
// 示例值：2022-02-08
func (builder *OffboardingInfoBuilder) NoncompeteAgreementStartDate(noncompeteAgreementStartDate string) *OffboardingInfoBuilder {
	builder.noncompeteAgreementStartDate = noncompeteAgreementStartDate
	builder.noncompeteAgreementStartDateFlag = true
	return builder
}

// 竞业结束日期
//
// 示例值：2022-02-08
func (builder *OffboardingInfoBuilder) NoncompeteAgreementEndDate(noncompeteAgreementEndDate string) *OffboardingInfoBuilder {
	builder.noncompeteAgreementEndDate = noncompeteAgreementEndDate
	builder.noncompeteAgreementEndDateFlag = true
	return builder
}

// 签署方式
//
// 示例值：2022-02-08
func (builder *OffboardingInfoBuilder) SignType(signType *Enum) *OffboardingInfoBuilder {
	builder.signType = signType
	builder.signTypeFlag = true
	return builder
}

// 签署文件ID列表
//
// 示例值：["123","456"]
func (builder *OffboardingInfoBuilder) SignatureFile(signatureFile string) *OffboardingInfoBuilder {
	builder.signatureFile = signatureFile
	builder.signatureFileFlag = true
	return builder
}

// 最后出勤日
//
// 示例值：2022-02-08
func (builder *OffboardingInfoBuilder) LastAttendanceDate(lastAttendanceDate string) *OffboardingInfoBuilder {
	builder.lastAttendanceDate = lastAttendanceDate
	builder.lastAttendanceDateFlag = true
	return builder
}

// 是否带编转移
//
// 示例值：false
func (builder *OffboardingInfoBuilder) IsTransferWithWorkforce(isTransferWithWorkforce bool) *OffboardingInfoBuilder {
	builder.isTransferWithWorkforce = isTransferWithWorkforce
	builder.isTransferWithWorkforceFlag = true
	return builder
}

func (builder *OffboardingInfoBuilder) Build() *OffboardingInfo {
	req := &OffboardingInfo{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.hrbpIdFlag {
		req.HrbpId = builder.hrbpId
	}
	if builder.expectedOffboardingDateFlag {
		req.ExpectedOffboardingDate = &builder.expectedOffboardingDate

	}
	if builder.offboardingDateFlag {
		req.OffboardingDate = &builder.offboardingDate

	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.reasonExplanationFlag {
		req.ReasonExplanation = &builder.reasonExplanation

	}
	if builder.employeeReasonFlag {
		req.EmployeeReason = builder.employeeReason
	}
	if builder.employeeReasonExplanationFlag {
		req.EmployeeReasonExplanation = &builder.employeeReasonExplanation

	}
	if builder.addBlockListFlag {
		req.AddBlockList = &builder.addBlockList

	}
	if builder.blockReasonFlag {
		req.BlockReason = builder.blockReason
	}
	if builder.blockReasonExplanationFlag {
		req.BlockReasonExplanation = &builder.blockReasonExplanation

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.retainAccountFlag {
		req.RetainAccount = &builder.retainAccount

	}
	if builder.socialInsuranceEndDateFlag {
		req.SocialInsuranceEndDate = &builder.socialInsuranceEndDate

	}
	if builder.providentFundEndDateFlag {
		req.ProvidentFundEndDate = &builder.providentFundEndDate

	}
	if builder.enforceNoncompeteAgreementFlag {
		req.EnforceNoncompeteAgreement = &builder.enforceNoncompeteAgreement

	}
	if builder.noncompeteAgreementIdFlag {
		req.NoncompeteAgreementId = &builder.noncompeteAgreementId

	}
	if builder.noncompeteAgreementCompanyFlag {
		req.NoncompeteAgreementCompany = &builder.noncompeteAgreementCompany

	}
	if builder.noncompeteAgreementStartDateFlag {
		req.NoncompeteAgreementStartDate = &builder.noncompeteAgreementStartDate

	}
	if builder.noncompeteAgreementEndDateFlag {
		req.NoncompeteAgreementEndDate = &builder.noncompeteAgreementEndDate

	}
	if builder.signTypeFlag {
		req.SignType = builder.signType
	}
	if builder.signatureFileFlag {
		req.SignatureFile = &builder.signatureFile

	}
	if builder.lastAttendanceDateFlag {
		req.LastAttendanceDate = &builder.lastAttendanceDate

	}
	if builder.isTransferWithWorkforceFlag {
		req.IsTransferWithWorkforce = &builder.isTransferWithWorkforce

	}
	return req
}

type OffboardingReason struct {
	OffboardingReasonUniqueIdentifier *string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因唯一标识

	Name []*I18n `json:"name,omitempty"` // 名称

	Active *bool `json:"active,omitempty"` // 是否启用，true为启用

	ParentOffboardingReasonUniqueIdentifier *string `json:"parent_offboarding_reason_unique_identifier,omitempty"` // 当前离职原因的父级原因唯一标识

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间
}

type OffboardingReasonBuilder struct {
	offboardingReasonUniqueIdentifier     string // 离职原因唯一标识
	offboardingReasonUniqueIdentifierFlag bool

	name     []*I18n // 名称
	nameFlag bool

	active     bool // 是否启用，true为启用
	activeFlag bool

	parentOffboardingReasonUniqueIdentifier     string // 当前离职原因的父级原因唯一标识
	parentOffboardingReasonUniqueIdentifierFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool
}

func NewOffboardingReasonBuilder() *OffboardingReasonBuilder {
	builder := &OffboardingReasonBuilder{}
	return builder
}

// 离职原因唯一标识
//
// 示例值：reason_for_offboarding_option8
func (builder *OffboardingReasonBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier string) *OffboardingReasonBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *OffboardingReasonBuilder) Name(name []*I18n) *OffboardingReasonBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用，true为启用
//
// 示例值：true
func (builder *OffboardingReasonBuilder) Active(active bool) *OffboardingReasonBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 当前离职原因的父级原因唯一标识
//
// 示例值：offboarding_reason_1
func (builder *OffboardingReasonBuilder) ParentOffboardingReasonUniqueIdentifier(parentOffboardingReasonUniqueIdentifier string) *OffboardingReasonBuilder {
	builder.parentOffboardingReasonUniqueIdentifier = parentOffboardingReasonUniqueIdentifier
	builder.parentOffboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 创建时间
//
// 示例值：2021-08-20 20:28:23
func (builder *OffboardingReasonBuilder) CreatedTime(createdTime string) *OffboardingReasonBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2022-01-07 17:21:06
func (builder *OffboardingReasonBuilder) UpdatedTime(updatedTime string) *OffboardingReasonBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

func (builder *OffboardingReasonBuilder) Build() *OffboardingReason {
	req := &OffboardingReason{}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = &builder.offboardingReasonUniqueIdentifier

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.parentOffboardingReasonUniqueIdentifierFlag {
		req.ParentOffboardingReasonUniqueIdentifier = &builder.parentOffboardingReasonUniqueIdentifier

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	return req
}

type OperationLogEntity struct {
	OptType *string `json:"opt_type,omitempty"` // 操作类型（create、update、delete）

	Fields []*OperationLogEntityField `json:"fields,omitempty"` // 变更字段

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID
}

type OperationLogEntityBuilder struct {
	optType     string // 操作类型（create、update、delete）
	optTypeFlag bool

	fields     []*OperationLogEntityField // 变更字段
	fieldsFlag bool

	employmentId     string // 雇员ID
	employmentIdFlag bool
}

func NewOperationLogEntityBuilder() *OperationLogEntityBuilder {
	builder := &OperationLogEntityBuilder{}
	return builder
}

// 操作类型（create、update、delete）
//
// 示例值：update
func (builder *OperationLogEntityBuilder) OptType(optType string) *OperationLogEntityBuilder {
	builder.optType = optType
	builder.optTypeFlag = true
	return builder
}

// 变更字段
//
// 示例值：
func (builder *OperationLogEntityBuilder) Fields(fields []*OperationLogEntityField) *OperationLogEntityBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 雇员ID
//
// 示例值：7373878233473271340
func (builder *OperationLogEntityBuilder) EmploymentId(employmentId string) *OperationLogEntityBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

func (builder *OperationLogEntityBuilder) Build() *OperationLogEntity {
	req := &OperationLogEntity{}
	if builder.optTypeFlag {
		req.OptType = &builder.optType

	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	return req
}

type OperationLogEntityField struct {
	Field *string `json:"field,omitempty"` // 变更字段

	Before *string `json:"before,omitempty"` // 旧值

	After *string `json:"after,omitempty"` // 新值
}

type OperationLogEntityFieldBuilder struct {
	field     string // 变更字段
	fieldFlag bool

	before     string // 旧值
	beforeFlag bool

	after     string // 新值
	afterFlag bool
}

func NewOperationLogEntityFieldBuilder() *OperationLogEntityFieldBuilder {
	builder := &OperationLogEntityFieldBuilder{}
	return builder
}

// 变更字段
//
// 示例值：personal_profile.profile_type_2_201_20101
func (builder *OperationLogEntityFieldBuilder) Field(field string) *OperationLogEntityFieldBuilder {
	builder.field = field
	builder.fieldFlag = true
	return builder
}

// 旧值
//
// 示例值：{\"type\":\"text\",\"value\":\"null\"}
func (builder *OperationLogEntityFieldBuilder) Before(before string) *OperationLogEntityFieldBuilder {
	builder.before = before
	builder.beforeFlag = true
	return builder
}

// 新值
//
// 示例值：{\"type\":\"text\",\"value\":\"1\"}
func (builder *OperationLogEntityFieldBuilder) After(after string) *OperationLogEntityFieldBuilder {
	builder.after = after
	builder.afterFlag = true
	return builder
}

func (builder *OperationLogEntityFieldBuilder) Build() *OperationLogEntityField {
	req := &OperationLogEntityField{}
	if builder.fieldFlag {
		req.Field = &builder.field

	}
	if builder.beforeFlag {
		req.Before = &builder.before

	}
	if builder.afterFlag {
		req.After = &builder.after

	}
	return req
}

type OperationLogListReq struct {
	StartTime *string `json:"start_time,omitempty"` // 开始时间，默认当天前30天

	EndTime *string `json:"end_time,omitempty"` // 结束时间，默认当天

	OperatorIds []string `json:"operator_ids,omitempty"` // 操作人ID

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	FilterFields []string `json:"filter_fields,omitempty"` // 查询变更的字段
}

type OperationLogListReqBuilder struct {
	startTime     string // 开始时间，默认当天前30天
	startTimeFlag bool

	endTime     string // 结束时间，默认当天
	endTimeFlag bool

	operatorIds     []string // 操作人ID
	operatorIdsFlag bool

	employmentId     string // 雇员ID
	employmentIdFlag bool

	filterFields     []string // 查询变更的字段
	filterFieldsFlag bool
}

func NewOperationLogListReqBuilder() *OperationLogListReqBuilder {
	builder := &OperationLogListReqBuilder{}
	return builder
}

// 开始时间，默认当天前30天
//
// 示例值：2024-01-02
func (builder *OperationLogListReqBuilder) StartTime(startTime string) *OperationLogListReqBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间，默认当天
//
// 示例值：2024-01-02
func (builder *OperationLogListReqBuilder) EndTime(endTime string) *OperationLogListReqBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 操作人ID
//
// 示例值：7140964208476371111
func (builder *OperationLogListReqBuilder) OperatorIds(operatorIds []string) *OperationLogListReqBuilder {
	builder.operatorIds = operatorIds
	builder.operatorIdsFlag = true
	return builder
}

// 雇员ID
//
// 示例值：7140964208476371111
func (builder *OperationLogListReqBuilder) EmploymentId(employmentId string) *OperationLogListReqBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 查询变更的字段
//
// 示例值：
func (builder *OperationLogListReqBuilder) FilterFields(filterFields []string) *OperationLogListReqBuilder {
	builder.filterFields = filterFields
	builder.filterFieldsFlag = true
	return builder
}

func (builder *OperationLogListReqBuilder) Build() *OperationLogListReq {
	req := &OperationLogListReq{}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.operatorIdsFlag {
		req.OperatorIds = builder.operatorIds
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.filterFieldsFlag {
		req.FilterFields = builder.filterFields
	}
	return req
}

type OperationLogListRespItem struct {
	OperatorId *string `json:"operator_id,omitempty"` // 操作人ID

	OptTime *string `json:"opt_time,omitempty"` // 操作时间

	Entities []*OperationLogEntity `json:"entities,omitempty"` // 操作记录
}

type OperationLogListRespItemBuilder struct {
	operatorId     string // 操作人ID
	operatorIdFlag bool

	optTime     string // 操作时间
	optTimeFlag bool

	entities     []*OperationLogEntity // 操作记录
	entitiesFlag bool
}

func NewOperationLogListRespItemBuilder() *OperationLogListRespItemBuilder {
	builder := &OperationLogListRespItemBuilder{}
	return builder
}

// 操作人ID
//
// 示例值：7373878233473271340
func (builder *OperationLogListRespItemBuilder) OperatorId(operatorId string) *OperationLogListRespItemBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 操作时间
//
// 示例值：2024-01-01 12:12:12
func (builder *OperationLogListRespItemBuilder) OptTime(optTime string) *OperationLogListRespItemBuilder {
	builder.optTime = optTime
	builder.optTimeFlag = true
	return builder
}

// 操作记录
//
// 示例值：
func (builder *OperationLogListRespItemBuilder) Entities(entities []*OperationLogEntity) *OperationLogListRespItemBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *OperationLogListRespItemBuilder) Build() *OperationLogListRespItem {
	req := &OperationLogListRespItem{}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId

	}
	if builder.optTimeFlag {
		req.OptTime = &builder.optTime

	}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type OrgTruncation struct {
	OrgKey *string `json:"org_key,omitempty"` // 组织名称

	Type *int `json:"type,omitempty"` // 下钻类型

	Depth *int `json:"depth,omitempty"` // 下钻深度
}

type OrgTruncationBuilder struct {
	orgKey     string // 组织名称
	orgKeyFlag bool

	type_    int // 下钻类型
	typeFlag bool

	depth     int // 下钻深度
	depthFlag bool
}

func NewOrgTruncationBuilder() *OrgTruncationBuilder {
	builder := &OrgTruncationBuilder{}
	return builder
}

// 组织名称
//
// 示例值：department
func (builder *OrgTruncationBuilder) OrgKey(orgKey string) *OrgTruncationBuilder {
	builder.orgKey = orgKey
	builder.orgKeyFlag = true
	return builder
}

// 下钻类型
//
// 示例值：0
func (builder *OrgTruncationBuilder) Type(type_ int) *OrgTruncationBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 下钻深度
//
// 示例值：0
func (builder *OrgTruncationBuilder) Depth(depth int) *OrgTruncationBuilder {
	builder.depth = depth
	builder.depthFlag = true
	return builder
}

func (builder *OrgTruncationBuilder) Build() *OrgTruncation {
	req := &OrgTruncation{}
	if builder.orgKeyFlag {
		req.OrgKey = &builder.orgKey

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.depthFlag {
		req.Depth = &builder.depth

	}
	return req
}

type PermissionDetail struct {
	Role *SecurityGroup `json:"role,omitempty"` // 角色

	AssignedOrganizationList [][]*AssignedOrganization `json:"assigned_organization_list,omitempty"` // 指定管理对象列表，如果该值为null，则使用设置数据权限

	GrantorRuleList []*PermissionSecurityGroup `json:"grantor_rule_list,omitempty"` // 设置数据权限，如果该值为null，则使用指定管理对象列表

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间
}

type PermissionDetailBuilder struct {
	role     *SecurityGroup // 角色
	roleFlag bool

	assignedOrganizationList     [][]*AssignedOrganization // 指定管理对象列表，如果该值为null，则使用设置数据权限
	assignedOrganizationListFlag bool

	grantorRuleList     []*PermissionSecurityGroup // 设置数据权限，如果该值为null，则使用指定管理对象列表
	grantorRuleListFlag bool

	updateTime     string // 更新时间
	updateTimeFlag bool
}

func NewPermissionDetailBuilder() *PermissionDetailBuilder {
	builder := &PermissionDetailBuilder{}
	return builder
}

// 角色
//
// 示例值：
func (builder *PermissionDetailBuilder) Role(role *SecurityGroup) *PermissionDetailBuilder {
	builder.role = role
	builder.roleFlag = true
	return builder
}

// 指定管理对象列表，如果该值为null，则使用设置数据权限
//
// 示例值：
func (builder *PermissionDetailBuilder) AssignedOrganizationList(assignedOrganizationList [][]*AssignedOrganization) *PermissionDetailBuilder {
	builder.assignedOrganizationList = assignedOrganizationList
	builder.assignedOrganizationListFlag = true
	return builder
}

// 设置数据权限，如果该值为null，则使用指定管理对象列表
//
// 示例值：
func (builder *PermissionDetailBuilder) GrantorRuleList(grantorRuleList []*PermissionSecurityGroup) *PermissionDetailBuilder {
	builder.grantorRuleList = grantorRuleList
	builder.grantorRuleListFlag = true
	return builder
}

// 更新时间
//
// 示例值：1641883226867361
func (builder *PermissionDetailBuilder) UpdateTime(updateTime string) *PermissionDetailBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

func (builder *PermissionDetailBuilder) Build() *PermissionDetail {
	req := &PermissionDetail{}
	if builder.roleFlag {
		req.Role = builder.role
	}
	if builder.assignedOrganizationListFlag {
		req.AssignedOrganizationList = builder.assignedOrganizationList
	}
	if builder.grantorRuleListFlag {
		req.GrantorRuleList = builder.grantorRuleList
	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	return req
}

type PermissionSecurityGroup struct {
	RuleDimension *RuleDimension `json:"rule_dimension,omitempty"` // 管理维度

	RuleType *int `json:"rule_type,omitempty"` // 管理类型

	Expression *FilterExpression `json:"expression,omitempty"` // 规则
}

type PermissionSecurityGroupBuilder struct {
	ruleDimension     *RuleDimension // 管理维度
	ruleDimensionFlag bool

	ruleType     int // 管理类型
	ruleTypeFlag bool

	expression     *FilterExpression // 规则
	expressionFlag bool
}

func NewPermissionSecurityGroupBuilder() *PermissionSecurityGroupBuilder {
	builder := &PermissionSecurityGroupBuilder{}
	return builder
}

// 管理维度
//
// 示例值：
func (builder *PermissionSecurityGroupBuilder) RuleDimension(ruleDimension *RuleDimension) *PermissionSecurityGroupBuilder {
	builder.ruleDimension = ruleDimension
	builder.ruleDimensionFlag = true
	return builder
}

// 管理类型
//
// 示例值：1
func (builder *PermissionSecurityGroupBuilder) RuleType(ruleType int) *PermissionSecurityGroupBuilder {
	builder.ruleType = ruleType
	builder.ruleTypeFlag = true
	return builder
}

// 规则
//
// 示例值：
func (builder *PermissionSecurityGroupBuilder) Expression(expression *FilterExpression) *PermissionSecurityGroupBuilder {
	builder.expression = expression
	builder.expressionFlag = true
	return builder
}

func (builder *PermissionSecurityGroupBuilder) Build() *PermissionSecurityGroup {
	req := &PermissionSecurityGroup{}
	if builder.ruleDimensionFlag {
		req.RuleDimension = builder.ruleDimension
	}
	if builder.ruleTypeFlag {
		req.RuleType = &builder.ruleType

	}
	if builder.expressionFlag {
		req.Expression = builder.expression
	}
	return req
}

type Person struct {
	PhoneNumber *string `json:"phone_number,omitempty"` // 个人手机号

	LegalName *string `json:"legal_name,omitempty"` // 法定姓名

	PreferredName *string `json:"preferred_name,omitempty"` // 常用名

	Id *string `json:"id,omitempty"` // Person ID

	NameList []*PersonName `json:"name_list,omitempty"` // 姓名

	Gender *Enum `json:"gender,omitempty"` // 性别，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)性别（gender）枚举定义部分获得

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 出生日期

	NationalityId *string `json:"nationality_id,omitempty"` // 国籍id

	NationalityIdV2 *string `json:"nationality_id_v2,omitempty"` // 国籍 ID，可通过【查询国籍信息】接口查询

	Race *Enum `json:"race,omitempty"` // 民族 / 种族，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)民族（race）枚举定义部分获得

	MaritalStatus *Enum `json:"marital_status,omitempty"` // 婚姻状况，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)婚姻状况（marital_status）枚举定义部分获得

	PhoneList []*Phone `json:"phone_list,omitempty"` // 电话列表，只有当满足下面所有条件时，电话在个人信息页才可见:;- 电话号码不为空;- is_primary = "true" ;- phone_usage = "home"

	AddressList []*Address `json:"address_list,omitempty"` // 地址列表

	EmailList []*Email `json:"email_list,omitempty"` // 邮箱列表

	WorkExperienceList []*WorkExperience `json:"work_experience_list,omitempty"` // 工作履历列表

	EducationList []*Education `json:"education_list,omitempty"` // 教育经历列表

	BankAccountList []*BankAccount `json:"bank_account_list,omitempty"` // 银行账号

	NationalIdList []*NationalId `json:"national_id_list,omitempty"` // 证件号码

	DependentList []*Dependent `json:"dependent_list,omitempty"` // 亲属列表

	EmergencyContactList []*EmergencyContact `json:"emergency_contact_list,omitempty"` // 紧急联系人列表

	DateEnteredWorkforce *string `json:"date_entered_workforce,omitempty"` // 参加工作日期

	ProfileImageId *string `json:"profile_image_id,omitempty"` // 头像资源的 ID

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱

	ResidentTaxIdList []string `json:"resident_tax_id_list,omitempty"` // 纳税身份信息

	Age *int `json:"age,omitempty"` // 年龄

	HighestLevelOfEducation *Education `json:"highest_level_of_education,omitempty"` // 最高学历教育

	HighestDegreeOfEducation *Education `json:"highest_degree_of_education,omitempty"` // 最高学位教育经历

	PersonalProfile []*PersonalProfile `json:"personal_profile,omitempty"` // 个人资料
}

type PersonBuilder struct {
	phoneNumber     string // 个人手机号
	phoneNumberFlag bool

	legalName     string // 法定姓名
	legalNameFlag bool

	preferredName     string // 常用名
	preferredNameFlag bool

	id     string // Person ID
	idFlag bool

	nameList     []*PersonName // 姓名
	nameListFlag bool

	gender     *Enum // 性别，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)性别（gender）枚举定义部分获得
	genderFlag bool

	dateOfBirth     string // 出生日期
	dateOfBirthFlag bool

	nationalityId     string // 国籍id
	nationalityIdFlag bool

	nationalityIdV2     string // 国籍 ID，可通过【查询国籍信息】接口查询
	nationalityIdV2Flag bool

	race     *Enum // 民族 / 种族，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)民族（race）枚举定义部分获得
	raceFlag bool

	maritalStatus     *Enum // 婚姻状况，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)婚姻状况（marital_status）枚举定义部分获得
	maritalStatusFlag bool

	phoneList     []*Phone // 电话列表，只有当满足下面所有条件时，电话在个人信息页才可见:;- 电话号码不为空;- is_primary = "true" ;- phone_usage = "home"
	phoneListFlag bool

	addressList     []*Address // 地址列表
	addressListFlag bool

	emailList     []*Email // 邮箱列表
	emailListFlag bool

	workExperienceList     []*WorkExperience // 工作履历列表
	workExperienceListFlag bool

	educationList     []*Education // 教育经历列表
	educationListFlag bool

	bankAccountList     []*BankAccount // 银行账号
	bankAccountListFlag bool

	nationalIdList     []*NationalId // 证件号码
	nationalIdListFlag bool

	dependentList     []*Dependent // 亲属列表
	dependentListFlag bool

	emergencyContactList     []*EmergencyContact // 紧急联系人列表
	emergencyContactListFlag bool

	dateEnteredWorkforce     string // 参加工作日期
	dateEnteredWorkforceFlag bool

	profileImageId     string // 头像资源的 ID
	profileImageIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	emailAddress     string // 邮箱
	emailAddressFlag bool

	residentTaxIdList     []string // 纳税身份信息
	residentTaxIdListFlag bool

	age     int // 年龄
	ageFlag bool

	highestLevelOfEducation     *Education // 最高学历教育
	highestLevelOfEducationFlag bool

	highestDegreeOfEducation     *Education // 最高学位教育经历
	highestDegreeOfEducationFlag bool

	personalProfile     []*PersonalProfile // 个人资料
	personalProfileFlag bool
}

func NewPersonBuilder() *PersonBuilder {
	builder := &PersonBuilder{}
	return builder
}

// 个人手机号
//
// 示例值：11111111111
func (builder *PersonBuilder) PhoneNumber(phoneNumber string) *PersonBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 法定姓名
//
// 示例值：张三
func (builder *PersonBuilder) LegalName(legalName string) *PersonBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 常用名
//
// 示例值：张四
func (builder *PersonBuilder) PreferredName(preferredName string) *PersonBuilder {
	builder.preferredName = preferredName
	builder.preferredNameFlag = true
	return builder
}

// Person ID
//
// 示例值：646465654545
func (builder *PersonBuilder) Id(id string) *PersonBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 姓名
//
// 示例值：
func (builder *PersonBuilder) NameList(nameList []*PersonName) *PersonBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// 性别，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)性别（gender）枚举定义部分获得
//
// 示例值：
func (builder *PersonBuilder) Gender(gender *Enum) *PersonBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 出生日期
//
// 示例值：2020-01-01
func (builder *PersonBuilder) DateOfBirth(dateOfBirth string) *PersonBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 国籍id
//
// 示例值：123456789
func (builder *PersonBuilder) NationalityId(nationalityId string) *PersonBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 国籍 ID，可通过【查询国籍信息】接口查询
//
// 示例值：7075702732803278380
func (builder *PersonBuilder) NationalityIdV2(nationalityIdV2 string) *PersonBuilder {
	builder.nationalityIdV2 = nationalityIdV2
	builder.nationalityIdV2Flag = true
	return builder
}

// 民族 / 种族，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)民族（race）枚举定义部分获得
//
// 示例值：
func (builder *PersonBuilder) Race(race *Enum) *PersonBuilder {
	builder.race = race
	builder.raceFlag = true
	return builder
}

// 婚姻状况，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)婚姻状况（marital_status）枚举定义部分获得
//
// 示例值：
func (builder *PersonBuilder) MaritalStatus(maritalStatus *Enum) *PersonBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 电话列表，只有当满足下面所有条件时，电话在个人信息页才可见:;- 电话号码不为空;- is_primary = "true" ;- phone_usage = "home"
//
// 示例值：
func (builder *PersonBuilder) PhoneList(phoneList []*Phone) *PersonBuilder {
	builder.phoneList = phoneList
	builder.phoneListFlag = true
	return builder
}

// 地址列表
//
// 示例值：
func (builder *PersonBuilder) AddressList(addressList []*Address) *PersonBuilder {
	builder.addressList = addressList
	builder.addressListFlag = true
	return builder
}

// 邮箱列表
//
// 示例值：
func (builder *PersonBuilder) EmailList(emailList []*Email) *PersonBuilder {
	builder.emailList = emailList
	builder.emailListFlag = true
	return builder
}

// 工作履历列表
//
// 示例值：
func (builder *PersonBuilder) WorkExperienceList(workExperienceList []*WorkExperience) *PersonBuilder {
	builder.workExperienceList = workExperienceList
	builder.workExperienceListFlag = true
	return builder
}

// 教育经历列表
//
// 示例值：
func (builder *PersonBuilder) EducationList(educationList []*Education) *PersonBuilder {
	builder.educationList = educationList
	builder.educationListFlag = true
	return builder
}

// 银行账号
//
// 示例值：
func (builder *PersonBuilder) BankAccountList(bankAccountList []*BankAccount) *PersonBuilder {
	builder.bankAccountList = bankAccountList
	builder.bankAccountListFlag = true
	return builder
}

// 证件号码
//
// 示例值：
func (builder *PersonBuilder) NationalIdList(nationalIdList []*NationalId) *PersonBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 亲属列表
//
// 示例值：
func (builder *PersonBuilder) DependentList(dependentList []*Dependent) *PersonBuilder {
	builder.dependentList = dependentList
	builder.dependentListFlag = true
	return builder
}

// 紧急联系人列表
//
// 示例值：
func (builder *PersonBuilder) EmergencyContactList(emergencyContactList []*EmergencyContact) *PersonBuilder {
	builder.emergencyContactList = emergencyContactList
	builder.emergencyContactListFlag = true
	return builder
}

// 参加工作日期
//
// 示例值：2020-10-01
func (builder *PersonBuilder) DateEnteredWorkforce(dateEnteredWorkforce string) *PersonBuilder {
	builder.dateEnteredWorkforce = dateEnteredWorkforce
	builder.dateEnteredWorkforceFlag = true
	return builder
}

// 头像资源的 ID
//
// 示例值：dfysuc8x76dsfsw
func (builder *PersonBuilder) ProfileImageId(profileImageId string) *PersonBuilder {
	builder.profileImageId = profileImageId
	builder.profileImageIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PersonBuilder) CustomFields(customFields []*ObjectFieldData) *PersonBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 邮箱
//
// 示例值：test@163.com
func (builder *PersonBuilder) EmailAddress(emailAddress string) *PersonBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 纳税身份信息
//
// 示例值：["1", "2"]
func (builder *PersonBuilder) ResidentTaxIdList(residentTaxIdList []string) *PersonBuilder {
	builder.residentTaxIdList = residentTaxIdList
	builder.residentTaxIdListFlag = true
	return builder
}

// 年龄
//
// 示例值：25
func (builder *PersonBuilder) Age(age int) *PersonBuilder {
	builder.age = age
	builder.ageFlag = true
	return builder
}

// 最高学历教育
//
// 示例值：
func (builder *PersonBuilder) HighestLevelOfEducation(highestLevelOfEducation *Education) *PersonBuilder {
	builder.highestLevelOfEducation = highestLevelOfEducation
	builder.highestLevelOfEducationFlag = true
	return builder
}

// 最高学位教育经历
//
// 示例值：
func (builder *PersonBuilder) HighestDegreeOfEducation(highestDegreeOfEducation *Education) *PersonBuilder {
	builder.highestDegreeOfEducation = highestDegreeOfEducation
	builder.highestDegreeOfEducationFlag = true
	return builder
}

// 个人资料
//
// 示例值：
func (builder *PersonBuilder) PersonalProfile(personalProfile []*PersonalProfile) *PersonBuilder {
	builder.personalProfile = personalProfile
	builder.personalProfileFlag = true
	return builder
}

func (builder *PersonBuilder) Build() *Person {
	req := &Person{}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.preferredNameFlag {
		req.PreferredName = &builder.preferredName

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.genderFlag {
		req.Gender = builder.gender
	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nationalityIdV2Flag {
		req.NationalityIdV2 = &builder.nationalityIdV2

	}
	if builder.raceFlag {
		req.Race = builder.race
	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = builder.maritalStatus
	}
	if builder.phoneListFlag {
		req.PhoneList = builder.phoneList
	}
	if builder.addressListFlag {
		req.AddressList = builder.addressList
	}
	if builder.emailListFlag {
		req.EmailList = builder.emailList
	}
	if builder.workExperienceListFlag {
		req.WorkExperienceList = builder.workExperienceList
	}
	if builder.educationListFlag {
		req.EducationList = builder.educationList
	}
	if builder.bankAccountListFlag {
		req.BankAccountList = builder.bankAccountList
	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.dependentListFlag {
		req.DependentList = builder.dependentList
	}
	if builder.emergencyContactListFlag {
		req.EmergencyContactList = builder.emergencyContactList
	}
	if builder.dateEnteredWorkforceFlag {
		req.DateEnteredWorkforce = &builder.dateEnteredWorkforce

	}
	if builder.profileImageIdFlag {
		req.ProfileImageId = &builder.profileImageId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.residentTaxIdListFlag {
		req.ResidentTaxIdList = builder.residentTaxIdList
	}
	if builder.ageFlag {
		req.Age = &builder.age

	}
	if builder.highestLevelOfEducationFlag {
		req.HighestLevelOfEducation = builder.highestLevelOfEducation
	}
	if builder.highestDegreeOfEducationFlag {
		req.HighestDegreeOfEducation = builder.highestDegreeOfEducation
	}
	if builder.personalProfileFlag {
		req.PersonalProfile = builder.personalProfile
	}
	return req
}

type PersonInfoChn struct {
	Id *string `json:"id,omitempty"` // 个人附加信息 ID

	NativeRegion *string `json:"native_region,omitempty"` // 籍贯 ID;- 枚举值可通过「查询单条省份/行政区信息」接口获取

	PoliticalAffiliationList []*Enum `json:"political_affiliation_list,omitempty"` // 政治面貌，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)政治面貌（political_affiliation）枚举定义部分获得

	HukouType *Enum `json:"hukou_type,omitempty"` // 户口类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)户口类型（hukou_type）枚举定义部分获得

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	PersonId *string `json:"person_id,omitempty"` // Person ID

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	WorkingYears *int `json:"working_years,omitempty"` // 工龄
}

type PersonInfoChnBuilder struct {
	id     string // 个人附加信息 ID
	idFlag bool

	nativeRegion     string // 籍贯 ID;- 枚举值可通过「查询单条省份/行政区信息」接口获取
	nativeRegionFlag bool

	politicalAffiliationList     []*Enum // 政治面貌，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)政治面貌（political_affiliation）枚举定义部分获得
	politicalAffiliationListFlag bool

	hukouType     *Enum // 户口类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)户口类型（hukou_type）枚举定义部分获得
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	personId     string // Person ID
	personIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	workingYears     int // 工龄
	workingYearsFlag bool
}

func NewPersonInfoChnBuilder() *PersonInfoChnBuilder {
	builder := &PersonInfoChnBuilder{}
	return builder
}

// 个人附加信息 ID
//
// 示例值：6950635856373745165
func (builder *PersonInfoChnBuilder) Id(id string) *PersonInfoChnBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 籍贯 ID;- 枚举值可通过「查询单条省份/行政区信息」接口获取
//
// 示例值：6863326263973512712
func (builder *PersonInfoChnBuilder) NativeRegion(nativeRegion string) *PersonInfoChnBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// 政治面貌，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)政治面貌（political_affiliation）枚举定义部分获得
//
// 示例值：
func (builder *PersonInfoChnBuilder) PoliticalAffiliationList(politicalAffiliationList []*Enum) *PersonInfoChnBuilder {
	builder.politicalAffiliationList = politicalAffiliationList
	builder.politicalAffiliationListFlag = true
	return builder
}

// 户口类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)户口类型（hukou_type）枚举定义部分获得
//
// 示例值：
func (builder *PersonInfoChnBuilder) HukouType(hukouType *Enum) *PersonInfoChnBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：山东省平阴县
func (builder *PersonInfoChnBuilder) HukouLocation(hukouLocation string) *PersonInfoChnBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// Person ID
//
// 示例值：6919733647952053768
func (builder *PersonInfoChnBuilder) PersonId(personId string) *PersonInfoChnBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PersonInfoChnBuilder) CustomFields(customFields []*ObjectFieldData) *PersonInfoChnBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 工龄
//
// 示例值：2
func (builder *PersonInfoChnBuilder) WorkingYears(workingYears int) *PersonInfoChnBuilder {
	builder.workingYears = workingYears
	builder.workingYearsFlag = true
	return builder
}

func (builder *PersonInfoChnBuilder) Build() *PersonInfoChn {
	req := &PersonInfoChn{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.politicalAffiliationListFlag {
		req.PoliticalAffiliationList = builder.politicalAffiliationList
	}
	if builder.hukouTypeFlag {
		req.HukouType = builder.hukouType
	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.workingYearsFlag {
		req.WorkingYears = &builder.workingYears

	}
	return req
}

type PersonInfoMys struct {
	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	PersonId *string `json:"person_id,omitempty"` // 关联人员ID

	PreviousIncomeInTheCurrentYear *bool `json:"previous_income_in_the_current_year,omitempty"` // 是否本年度在前雇主已有工作收入

	FreshGraduate *bool `json:"fresh_graduate,omitempty"` // 是否应届毕业生

	PreviousEmployersList []*PreviousEmployer `json:"previous_employers_list,omitempty"` // 雇主信息列表

	MonthlyGross *string `json:"monthly_gross,omitempty"` // 每月总收入

	TaxRelief1 *string `json:"tax_relief_1,omitempty"` // 税收减免一

	TaxRelief2 *string `json:"tax_relief_2,omitempty"` // 税收减免二

	TaxRelief3 *string `json:"tax_relief_3,omitempty"` // 税收减免三

	TaxRelief4 *string `json:"tax_relief_4,omitempty"` // 税收减免四

	TaxRelief5 *string `json:"tax_relief_5,omitempty"` // 税收减免五

	CommonReserveFund *string `json:"common_reserve_fund,omitempty"` // 员工就业公积金

	MonthlyTaxDeduction *string `json:"monthly_tax_deduction,omitempty"` // 每月减税

	SocialInsurance *string `json:"social_insurance,omitempty"` // 社会保险金缴款

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PersonInfoMysBuilder struct {
	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	personId     string // 关联人员ID
	personIdFlag bool

	previousIncomeInTheCurrentYear     bool // 是否本年度在前雇主已有工作收入
	previousIncomeInTheCurrentYearFlag bool

	freshGraduate     bool // 是否应届毕业生
	freshGraduateFlag bool

	previousEmployersList     []*PreviousEmployer // 雇主信息列表
	previousEmployersListFlag bool

	monthlyGross     string // 每月总收入
	monthlyGrossFlag bool

	taxRelief1     string // 税收减免一
	taxRelief1Flag bool

	taxRelief2     string // 税收减免二
	taxRelief2Flag bool

	taxRelief3     string // 税收减免三
	taxRelief3Flag bool

	taxRelief4     string // 税收减免四
	taxRelief4Flag bool

	taxRelief5     string // 税收减免五
	taxRelief5Flag bool

	commonReserveFund     string // 员工就业公积金
	commonReserveFundFlag bool

	monthlyTaxDeduction     string // 每月减税
	monthlyTaxDeductionFlag bool

	socialInsurance     string // 社会保险金缴款
	socialInsuranceFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPersonInfoMysBuilder() *PersonInfoMysBuilder {
	builder := &PersonInfoMysBuilder{}
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：6950635856373745165
func (builder *PersonInfoMysBuilder) Id(id string) *PersonInfoMysBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 关联人员ID
//
// 示例值：6919733647952053768
func (builder *PersonInfoMysBuilder) PersonId(personId string) *PersonInfoMysBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 是否本年度在前雇主已有工作收入
//
// 示例值：true
func (builder *PersonInfoMysBuilder) PreviousIncomeInTheCurrentYear(previousIncomeInTheCurrentYear bool) *PersonInfoMysBuilder {
	builder.previousIncomeInTheCurrentYear = previousIncomeInTheCurrentYear
	builder.previousIncomeInTheCurrentYearFlag = true
	return builder
}

// 是否应届毕业生
//
// 示例值：true
func (builder *PersonInfoMysBuilder) FreshGraduate(freshGraduate bool) *PersonInfoMysBuilder {
	builder.freshGraduate = freshGraduate
	builder.freshGraduateFlag = true
	return builder
}

// 雇主信息列表
//
// 示例值：
func (builder *PersonInfoMysBuilder) PreviousEmployersList(previousEmployersList []*PreviousEmployer) *PersonInfoMysBuilder {
	builder.previousEmployersList = previousEmployersList
	builder.previousEmployersListFlag = true
	return builder
}

// 每月总收入
//
// 示例值：123
func (builder *PersonInfoMysBuilder) MonthlyGross(monthlyGross string) *PersonInfoMysBuilder {
	builder.monthlyGross = monthlyGross
	builder.monthlyGrossFlag = true
	return builder
}

// 税收减免一
//
// 示例值：123
func (builder *PersonInfoMysBuilder) TaxRelief1(taxRelief1 string) *PersonInfoMysBuilder {
	builder.taxRelief1 = taxRelief1
	builder.taxRelief1Flag = true
	return builder
}

// 税收减免二
//
// 示例值：123
func (builder *PersonInfoMysBuilder) TaxRelief2(taxRelief2 string) *PersonInfoMysBuilder {
	builder.taxRelief2 = taxRelief2
	builder.taxRelief2Flag = true
	return builder
}

// 税收减免三
//
// 示例值：123
func (builder *PersonInfoMysBuilder) TaxRelief3(taxRelief3 string) *PersonInfoMysBuilder {
	builder.taxRelief3 = taxRelief3
	builder.taxRelief3Flag = true
	return builder
}

// 税收减免四
//
// 示例值：123
func (builder *PersonInfoMysBuilder) TaxRelief4(taxRelief4 string) *PersonInfoMysBuilder {
	builder.taxRelief4 = taxRelief4
	builder.taxRelief4Flag = true
	return builder
}

// 税收减免五
//
// 示例值：123
func (builder *PersonInfoMysBuilder) TaxRelief5(taxRelief5 string) *PersonInfoMysBuilder {
	builder.taxRelief5 = taxRelief5
	builder.taxRelief5Flag = true
	return builder
}

// 员工就业公积金
//
// 示例值：123
func (builder *PersonInfoMysBuilder) CommonReserveFund(commonReserveFund string) *PersonInfoMysBuilder {
	builder.commonReserveFund = commonReserveFund
	builder.commonReserveFundFlag = true
	return builder
}

// 每月减税
//
// 示例值：123
func (builder *PersonInfoMysBuilder) MonthlyTaxDeduction(monthlyTaxDeduction string) *PersonInfoMysBuilder {
	builder.monthlyTaxDeduction = monthlyTaxDeduction
	builder.monthlyTaxDeductionFlag = true
	return builder
}

// 社会保险金缴款
//
// 示例值：123
func (builder *PersonInfoMysBuilder) SocialInsurance(socialInsurance string) *PersonInfoMysBuilder {
	builder.socialInsurance = socialInsurance
	builder.socialInsuranceFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PersonInfoMysBuilder) CustomFields(customFields []*ObjectFieldData) *PersonInfoMysBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PersonInfoMysBuilder) Build() *PersonInfoMys {
	req := &PersonInfoMys{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.previousIncomeInTheCurrentYearFlag {
		req.PreviousIncomeInTheCurrentYear = &builder.previousIncomeInTheCurrentYear

	}
	if builder.freshGraduateFlag {
		req.FreshGraduate = &builder.freshGraduate

	}
	if builder.previousEmployersListFlag {
		req.PreviousEmployersList = builder.previousEmployersList
	}
	if builder.monthlyGrossFlag {
		req.MonthlyGross = &builder.monthlyGross

	}
	if builder.taxRelief1Flag {
		req.TaxRelief1 = &builder.taxRelief1

	}
	if builder.taxRelief2Flag {
		req.TaxRelief2 = &builder.taxRelief2

	}
	if builder.taxRelief3Flag {
		req.TaxRelief3 = &builder.taxRelief3

	}
	if builder.taxRelief4Flag {
		req.TaxRelief4 = &builder.taxRelief4

	}
	if builder.taxRelief5Flag {
		req.TaxRelief5 = &builder.taxRelief5

	}
	if builder.commonReserveFundFlag {
		req.CommonReserveFund = &builder.commonReserveFund

	}
	if builder.monthlyTaxDeductionFlag {
		req.MonthlyTaxDeduction = &builder.monthlyTaxDeduction

	}
	if builder.socialInsuranceFlag {
		req.SocialInsurance = &builder.socialInsurance

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PersonName struct {
	LocalPrimary *string `json:"local_primary,omitempty"` // 姓 - 本地文字

	LocalFirstName *string `json:"local_first_name,omitempty"` // 名 - 本地文字

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	NameType *Enum `json:"name_type,omitempty"` // 姓名类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)姓名类型（name_type）枚举定义部分获得

	LocalFirstName2 *string `json:"local_first_name_2,omitempty"` // 名 - 第二本地文字

	LocalPrimary2 *string `json:"local_primary_2,omitempty"` // 姓 - 第二本地文字

	AdditionalNameType *Enum `json:"additional_name_type,omitempty"` // 补充姓名类型，比如emergency_contact_name（紧急联系人姓名）

	FirstName *string `json:"first_name,omitempty"` // 名

	FullName *string `json:"full_name,omitempty"` // 全名

	Hereditary *string `json:"hereditary,omitempty"` // 姓氏称谓

	CustomName *string `json:"custom_name,omitempty"` // 自定义姓名（未传入时，姓名将默认根据所属国家 / 地区规则对相关姓、名字段拼接）

	CustomLocalName *string `json:"custom_local_name,omitempty"` // 本地文字的自定义姓名（未传入时，本地文字的姓名将默认根据所属国家 / 地区规则对本地文字的相关姓、名字段拼接）

	MiddleName *string `json:"middle_name,omitempty"` // 中间名

	NamePrimary *string `json:"name_primary,omitempty"` // 姓

	Secondary *string `json:"secondary,omitempty"` // 第二姓氏

	Social *Enum `json:"social,omitempty"` // 尊称

	Tertiary *string `json:"tertiary,omitempty"` // 婚后姓氏

	Title *Enum `json:"title,omitempty"` // 头衔，比如;;Mr.;;Miss.;;Mrs.;;Prof.;;Dr.

	LocalMiddleName *string `json:"local_middle_name,omitempty"` // 本地中间名

	LocalSecondary *string `json:"local_secondary,omitempty"` // 第二姓氏 - 本地文字

	DisplayNameLocalAndWesternScript *string `json:"display_name_local_and_western_script,omitempty"` // 展示姓名（本地和西方文字）

	DisplayNameLocalScript *string `json:"display_name_local_script,omitempty"` // 展示姓名（本地文字）

	DisplayNameWesternScript *string `json:"display_name_western_script,omitempty"` // 展示姓名（西方文字）

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PersonNameBuilder struct {
	localPrimary     string // 姓 - 本地文字
	localPrimaryFlag bool

	localFirstName     string // 名 - 本地文字
	localFirstNameFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	nameType     *Enum // 姓名类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)姓名类型（name_type）枚举定义部分获得
	nameTypeFlag bool

	localFirstName2     string // 名 - 第二本地文字
	localFirstName2Flag bool

	localPrimary2     string // 姓 - 第二本地文字
	localPrimary2Flag bool

	additionalNameType     *Enum // 补充姓名类型，比如emergency_contact_name（紧急联系人姓名）
	additionalNameTypeFlag bool

	firstName     string // 名
	firstNameFlag bool

	fullName     string // 全名
	fullNameFlag bool

	hereditary     string // 姓氏称谓
	hereditaryFlag bool

	customName     string // 自定义姓名（未传入时，姓名将默认根据所属国家 / 地区规则对相关姓、名字段拼接）
	customNameFlag bool

	customLocalName     string // 本地文字的自定义姓名（未传入时，本地文字的姓名将默认根据所属国家 / 地区规则对本地文字的相关姓、名字段拼接）
	customLocalNameFlag bool

	middleName     string // 中间名
	middleNameFlag bool

	namePrimary     string // 姓
	namePrimaryFlag bool

	secondary     string // 第二姓氏
	secondaryFlag bool

	social     *Enum // 尊称
	socialFlag bool

	tertiary     string // 婚后姓氏
	tertiaryFlag bool

	title     *Enum // 头衔，比如;;Mr.;;Miss.;;Mrs.;;Prof.;;Dr.
	titleFlag bool

	localMiddleName     string // 本地中间名
	localMiddleNameFlag bool

	localSecondary     string // 第二姓氏 - 本地文字
	localSecondaryFlag bool

	displayNameLocalAndWesternScript     string // 展示姓名（本地和西方文字）
	displayNameLocalAndWesternScriptFlag bool

	displayNameLocalScript     string // 展示姓名（本地文字）
	displayNameLocalScriptFlag bool

	displayNameWesternScript     string // 展示姓名（西方文字）
	displayNameWesternScriptFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPersonNameBuilder() *PersonNameBuilder {
	builder := &PersonNameBuilder{}
	return builder
}

// 姓 - 本地文字
//
// 示例值：黄
func (builder *PersonNameBuilder) LocalPrimary(localPrimary string) *PersonNameBuilder {
	builder.localPrimary = localPrimary
	builder.localPrimaryFlag = true
	return builder
}

// 名 - 本地文字
//
// 示例值：四
func (builder *PersonNameBuilder) LocalFirstName(localFirstName string) *PersonNameBuilder {
	builder.localFirstName = localFirstName
	builder.localFirstNameFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *PersonNameBuilder) CountryRegionId(countryRegionId string) *PersonNameBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 姓名类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)姓名类型（name_type）枚举定义部分获得
//
// 示例值：
func (builder *PersonNameBuilder) NameType(nameType *Enum) *PersonNameBuilder {
	builder.nameType = nameType
	builder.nameTypeFlag = true
	return builder
}

// 名 - 第二本地文字
//
// 示例值：五
func (builder *PersonNameBuilder) LocalFirstName2(localFirstName2 string) *PersonNameBuilder {
	builder.localFirstName2 = localFirstName2
	builder.localFirstName2Flag = true
	return builder
}

// 姓 - 第二本地文字
//
// 示例值：王
func (builder *PersonNameBuilder) LocalPrimary2(localPrimary2 string) *PersonNameBuilder {
	builder.localPrimary2 = localPrimary2
	builder.localPrimary2Flag = true
	return builder
}

// 补充姓名类型，比如emergency_contact_name（紧急联系人姓名）
//
// 示例值：
func (builder *PersonNameBuilder) AdditionalNameType(additionalNameType *Enum) *PersonNameBuilder {
	builder.additionalNameType = additionalNameType
	builder.additionalNameTypeFlag = true
	return builder
}

// 名
//
// 示例值：帅
func (builder *PersonNameBuilder) FirstName(firstName string) *PersonNameBuilder {
	builder.firstName = firstName
	builder.firstNameFlag = true
	return builder
}

// 全名
//
// 示例值：王大帅
func (builder *PersonNameBuilder) FullName(fullName string) *PersonNameBuilder {
	builder.fullName = fullName
	builder.fullNameFlag = true
	return builder
}

// 姓氏称谓
//
// 示例值：王
func (builder *PersonNameBuilder) Hereditary(hereditary string) *PersonNameBuilder {
	builder.hereditary = hereditary
	builder.hereditaryFlag = true
	return builder
}

// 自定义姓名（未传入时，姓名将默认根据所属国家 / 地区规则对相关姓、名字段拼接）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) CustomName(customName string) *PersonNameBuilder {
	builder.customName = customName
	builder.customNameFlag = true
	return builder
}

// 本地文字的自定义姓名（未传入时，本地文字的姓名将默认根据所属国家 / 地区规则对本地文字的相关姓、名字段拼接）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) CustomLocalName(customLocalName string) *PersonNameBuilder {
	builder.customLocalName = customLocalName
	builder.customLocalNameFlag = true
	return builder
}

// 中间名
//
// 示例值：大
func (builder *PersonNameBuilder) MiddleName(middleName string) *PersonNameBuilder {
	builder.middleName = middleName
	builder.middleNameFlag = true
	return builder
}

// 姓
//
// 示例值：王
func (builder *PersonNameBuilder) NamePrimary(namePrimary string) *PersonNameBuilder {
	builder.namePrimary = namePrimary
	builder.namePrimaryFlag = true
	return builder
}

// 第二姓氏
//
// 示例值：王
func (builder *PersonNameBuilder) Secondary(secondary string) *PersonNameBuilder {
	builder.secondary = secondary
	builder.secondaryFlag = true
	return builder
}

// 尊称
//
// 示例值：刘梓新
func (builder *PersonNameBuilder) Social(social *Enum) *PersonNameBuilder {
	builder.social = social
	builder.socialFlag = true
	return builder
}

// 婚后姓氏
//
// 示例值：王
func (builder *PersonNameBuilder) Tertiary(tertiary string) *PersonNameBuilder {
	builder.tertiary = tertiary
	builder.tertiaryFlag = true
	return builder
}

// 头衔，比如;;Mr.;;Miss.;;Mrs.;;Prof.;;Dr.
//
// 示例值：王
func (builder *PersonNameBuilder) Title(title *Enum) *PersonNameBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 本地中间名
//
// 示例值：大
func (builder *PersonNameBuilder) LocalMiddleName(localMiddleName string) *PersonNameBuilder {
	builder.localMiddleName = localMiddleName
	builder.localMiddleNameFlag = true
	return builder
}

// 第二姓氏 - 本地文字
//
// 示例值：王
func (builder *PersonNameBuilder) LocalSecondary(localSecondary string) *PersonNameBuilder {
	builder.localSecondary = localSecondary
	builder.localSecondaryFlag = true
	return builder
}

// 展示姓名（本地和西方文字）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) DisplayNameLocalAndWesternScript(displayNameLocalAndWesternScript string) *PersonNameBuilder {
	builder.displayNameLocalAndWesternScript = displayNameLocalAndWesternScript
	builder.displayNameLocalAndWesternScriptFlag = true
	return builder
}

// 展示姓名（本地文字）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) DisplayNameLocalScript(displayNameLocalScript string) *PersonNameBuilder {
	builder.displayNameLocalScript = displayNameLocalScript
	builder.displayNameLocalScriptFlag = true
	return builder
}

// 展示姓名（西方文字）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) DisplayNameWesternScript(displayNameWesternScript string) *PersonNameBuilder {
	builder.displayNameWesternScript = displayNameWesternScript
	builder.displayNameWesternScriptFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PersonNameBuilder) CustomFields(customFields []*ObjectFieldData) *PersonNameBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PersonNameBuilder) Build() *PersonName {
	req := &PersonName{}
	if builder.localPrimaryFlag {
		req.LocalPrimary = &builder.localPrimary

	}
	if builder.localFirstNameFlag {
		req.LocalFirstName = &builder.localFirstName

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.nameTypeFlag {
		req.NameType = builder.nameType
	}
	if builder.localFirstName2Flag {
		req.LocalFirstName2 = &builder.localFirstName2

	}
	if builder.localPrimary2Flag {
		req.LocalPrimary2 = &builder.localPrimary2

	}
	if builder.additionalNameTypeFlag {
		req.AdditionalNameType = builder.additionalNameType
	}
	if builder.firstNameFlag {
		req.FirstName = &builder.firstName

	}
	if builder.fullNameFlag {
		req.FullName = &builder.fullName

	}
	if builder.hereditaryFlag {
		req.Hereditary = &builder.hereditary

	}
	if builder.customNameFlag {
		req.CustomName = &builder.customName

	}
	if builder.customLocalNameFlag {
		req.CustomLocalName = &builder.customLocalName

	}
	if builder.middleNameFlag {
		req.MiddleName = &builder.middleName

	}
	if builder.namePrimaryFlag {
		req.NamePrimary = &builder.namePrimary

	}
	if builder.secondaryFlag {
		req.Secondary = &builder.secondary

	}
	if builder.socialFlag {
		req.Social = builder.social
	}
	if builder.tertiaryFlag {
		req.Tertiary = &builder.tertiary

	}
	if builder.titleFlag {
		req.Title = builder.title
	}
	if builder.localMiddleNameFlag {
		req.LocalMiddleName = &builder.localMiddleName

	}
	if builder.localSecondaryFlag {
		req.LocalSecondary = &builder.localSecondary

	}
	if builder.displayNameLocalAndWesternScriptFlag {
		req.DisplayNameLocalAndWesternScript = &builder.displayNameLocalAndWesternScript

	}
	if builder.displayNameLocalScriptFlag {
		req.DisplayNameLocalScript = &builder.displayNameLocalScript

	}
	if builder.displayNameWesternScriptFlag {
		req.DisplayNameWesternScript = &builder.displayNameWesternScript

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PersonalProfile struct {
	PersonalProfileId *string `json:"personal_profile_id,omitempty"` // 个人资料 ID

	PersonalProfileType *Enum `json:"personal_profile_type,omitempty"` // 个人资料类型，比如;银行储蓄卡复印件、证件照、个人信息采集表、生活照

	Files []*File `json:"files,omitempty"` // 上传文件列表
}

type PersonalProfileBuilder struct {
	personalProfileId     string // 个人资料 ID
	personalProfileIdFlag bool

	personalProfileType     *Enum // 个人资料类型，比如;银行储蓄卡复印件、证件照、个人信息采集表、生活照
	personalProfileTypeFlag bool

	files     []*File // 上传文件列表
	filesFlag bool
}

func NewPersonalProfileBuilder() *PersonalProfileBuilder {
	builder := &PersonalProfileBuilder{}
	return builder
}

// 个人资料 ID
//
// 示例值：150018109586e8ea745e47ae8feb3722dbe1d03a181336393633393133303431393831343930373235150200
func (builder *PersonalProfileBuilder) PersonalProfileId(personalProfileId string) *PersonalProfileBuilder {
	builder.personalProfileId = personalProfileId
	builder.personalProfileIdFlag = true
	return builder
}

// 个人资料类型，比如;银行储蓄卡复印件、证件照、个人信息采集表、生活照
//
// 示例值：
func (builder *PersonalProfileBuilder) PersonalProfileType(personalProfileType *Enum) *PersonalProfileBuilder {
	builder.personalProfileType = personalProfileType
	builder.personalProfileTypeFlag = true
	return builder
}

// 上传文件列表
//
// 示例值：
func (builder *PersonalProfileBuilder) Files(files []*File) *PersonalProfileBuilder {
	builder.files = files
	builder.filesFlag = true
	return builder
}

func (builder *PersonalProfileBuilder) Build() *PersonalProfile {
	req := &PersonalProfile{}
	if builder.personalProfileIdFlag {
		req.PersonalProfileId = &builder.personalProfileId

	}
	if builder.personalProfileTypeFlag {
		req.PersonalProfileType = builder.personalProfileType
	}
	if builder.filesFlag {
		req.Files = builder.files
	}
	return req
}

type Phone struct {
	InternationalAreaCode *Enum `json:"international_area_code,omitempty"` // 国家区号;;常见如：86_china（中国）、852_hong_kong（中国香港）、886_taiwan（中国台湾）、853_macao（中国澳门）、1_united_states_of_america（美利坚合众国）、7_russian_federation（俄罗斯联邦）、44_united_kingdom（英国）、81_japan（日本）、82_korea_republic_of（大韩民国）、91_india（印度）

	PhoneNumber *string `json:"phone_number,omitempty"` // 电话号码

	FormattedPhoneNumber *string `json:"formatted_phone_number,omitempty"` // 完整电话号码

	DeviceType *Enum `json:"device_type,omitempty"` // 设备类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)设备类型（device_type）枚举定义部分获得

	PhoneUsage *Enum `json:"phone_usage,omitempty"` // 电话用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)电话用途（phone_usage）枚举定义部分获得

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否为主要电话

	IsPublic *bool `json:"is_public,omitempty"` // 是否为公开电话

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PhoneBuilder struct {
	internationalAreaCode     *Enum // 国家区号;;常见如：86_china（中国）、852_hong_kong（中国香港）、886_taiwan（中国台湾）、853_macao（中国澳门）、1_united_states_of_america（美利坚合众国）、7_russian_federation（俄罗斯联邦）、44_united_kingdom（英国）、81_japan（日本）、82_korea_republic_of（大韩民国）、91_india（印度）
	internationalAreaCodeFlag bool

	phoneNumber     string // 电话号码
	phoneNumberFlag bool

	formattedPhoneNumber     string // 完整电话号码
	formattedPhoneNumberFlag bool

	deviceType     *Enum // 设备类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)设备类型（device_type）枚举定义部分获得
	deviceTypeFlag bool

	phoneUsage     *Enum // 电话用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)电话用途（phone_usage）枚举定义部分获得
	phoneUsageFlag bool

	isPrimary     bool // 是否为主要电话
	isPrimaryFlag bool

	isPublic     bool // 是否为公开电话
	isPublicFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPhoneBuilder() *PhoneBuilder {
	builder := &PhoneBuilder{}
	return builder
}

// 国家区号;;常见如：86_china（中国）、852_hong_kong（中国香港）、886_taiwan（中国台湾）、853_macao（中国澳门）、1_united_states_of_america（美利坚合众国）、7_russian_federation（俄罗斯联邦）、44_united_kingdom（英国）、81_japan（日本）、82_korea_republic_of（大韩民国）、91_india（印度）
//
// 示例值：
func (builder *PhoneBuilder) InternationalAreaCode(internationalAreaCode *Enum) *PhoneBuilder {
	builder.internationalAreaCode = internationalAreaCode
	builder.internationalAreaCodeFlag = true
	return builder
}

// 电话号码
//
// 示例值：010-12345678
func (builder *PhoneBuilder) PhoneNumber(phoneNumber string) *PhoneBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 完整电话号码
//
// 示例值：+86 010-12345678
func (builder *PhoneBuilder) FormattedPhoneNumber(formattedPhoneNumber string) *PhoneBuilder {
	builder.formattedPhoneNumber = formattedPhoneNumber
	builder.formattedPhoneNumberFlag = true
	return builder
}

// 设备类型，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)设备类型（device_type）枚举定义部分获得
//
// 示例值：
func (builder *PhoneBuilder) DeviceType(deviceType *Enum) *PhoneBuilder {
	builder.deviceType = deviceType
	builder.deviceTypeFlag = true
	return builder
}

// 电话用途，枚举值可通过文档[【飞书人事枚举常量】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/feishu-people-enum-constant)电话用途（phone_usage）枚举定义部分获得
//
// 示例值：
func (builder *PhoneBuilder) PhoneUsage(phoneUsage *Enum) *PhoneBuilder {
	builder.phoneUsage = phoneUsage
	builder.phoneUsageFlag = true
	return builder
}

// 是否为主要电话
//
// 示例值：true
func (builder *PhoneBuilder) IsPrimary(isPrimary bool) *PhoneBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否为公开电话
//
// 示例值：true
func (builder *PhoneBuilder) IsPublic(isPublic bool) *PhoneBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PhoneBuilder) CustomFields(customFields []*ObjectFieldData) *PhoneBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PhoneBuilder) Build() *Phone {
	req := &Phone{}
	if builder.internationalAreaCodeFlag {
		req.InternationalAreaCode = builder.internationalAreaCode
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.formattedPhoneNumberFlag {
		req.FormattedPhoneNumber = &builder.formattedPhoneNumber

	}
	if builder.deviceTypeFlag {
		req.DeviceType = builder.deviceType
	}
	if builder.phoneUsageFlag {
		req.PhoneUsage = builder.phoneUsage
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PhoneNumberAndAreaCode struct {
	AreaCode *Enum `json:"area_code,omitempty"` // 区号

	PhoneNumber *string `json:"phone_number,omitempty"` // 号码
}

type PhoneNumberAndAreaCodeBuilder struct {
	areaCode     *Enum // 区号
	areaCodeFlag bool

	phoneNumber     string // 号码
	phoneNumberFlag bool
}

func NewPhoneNumberAndAreaCodeBuilder() *PhoneNumberAndAreaCodeBuilder {
	builder := &PhoneNumberAndAreaCodeBuilder{}
	return builder
}

// 区号
//
// 示例值：123123
func (builder *PhoneNumberAndAreaCodeBuilder) AreaCode(areaCode *Enum) *PhoneNumberAndAreaCodeBuilder {
	builder.areaCode = areaCode
	builder.areaCodeFlag = true
	return builder
}

// 号码
//
// 示例值：213213
func (builder *PhoneNumberAndAreaCodeBuilder) PhoneNumber(phoneNumber string) *PhoneNumberAndAreaCodeBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

func (builder *PhoneNumberAndAreaCodeBuilder) Build() *PhoneNumberAndAreaCode {
	req := &PhoneNumberAndAreaCode{}
	if builder.areaCodeFlag {
		req.AreaCode = builder.areaCode
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	return req
}

type PreHire struct {
	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘系统的候选人 ID

	Id *string `json:"id,omitempty"` // 待入职ID

	HireDate *string `json:"hire_date,omitempty"` // 入职日期

	EmployeeType *Enum `json:"employee_type,omitempty"` // 雇佣类型

	WorkerId *string `json:"worker_id,omitempty"` // 人员编号

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 雇佣类型

	PersonId *string `json:"person_id,omitempty"` // 引用Person ID

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CostCenterRate []*SupportCostCenterItem `json:"cost_center_rate,omitempty"` // 成本中心分摊信息

	OnboardingStatus *Enum `json:"onboarding_status,omitempty"` // 入职状态;;- 待入职(preboarding);;- 已删除(deleted);;- 准备就绪(day_one);;- 已撤销(withdrawn);;- 已完成(completed)
}

type PreHireBuilder struct {
	atsApplicationId     string // 招聘系统的候选人 ID
	atsApplicationIdFlag bool

	id     string // 待入职ID
	idFlag bool

	hireDate     string // 入职日期
	hireDateFlag bool

	employeeType     *Enum // 雇佣类型
	employeeTypeFlag bool

	workerId     string // 人员编号
	workerIdFlag bool

	employeeTypeId     string // 雇佣类型
	employeeTypeIdFlag bool

	personId     string // 引用Person ID
	personIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	costCenterRate     []*SupportCostCenterItem // 成本中心分摊信息
	costCenterRateFlag bool

	onboardingStatus     *Enum // 入职状态;;- 待入职(preboarding);;- 已删除(deleted);;- 准备就绪(day_one);;- 已撤销(withdrawn);;- 已完成(completed)
	onboardingStatusFlag bool
}

func NewPreHireBuilder() *PreHireBuilder {
	builder := &PreHireBuilder{}
	return builder
}

// 招聘系统的候选人 ID
//
// 示例值：4719168654814483759
func (builder *PreHireBuilder) AtsApplicationId(atsApplicationId string) *PreHireBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 待入职ID
//
// 示例值：154545454
func (builder *PreHireBuilder) Id(id string) *PreHireBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 入职日期
//
// 示例值：2020-01-01
func (builder *PreHireBuilder) HireDate(hireDate string) *PreHireBuilder {
	builder.hireDate = hireDate
	builder.hireDateFlag = true
	return builder
}

// 雇佣类型
//
// 示例值：
func (builder *PreHireBuilder) EmployeeType(employeeType *Enum) *PreHireBuilder {
	builder.employeeType = employeeType
	builder.employeeTypeFlag = true
	return builder
}

// 人员编号
//
// 示例值：1245646
func (builder *PreHireBuilder) WorkerId(workerId string) *PreHireBuilder {
	builder.workerId = workerId
	builder.workerIdFlag = true
	return builder
}

// 雇佣类型
//
// 示例值：正式
func (builder *PreHireBuilder) EmployeeTypeId(employeeTypeId string) *PreHireBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 引用Person ID
//
// 示例值：656464648662
func (builder *PreHireBuilder) PersonId(personId string) *PreHireBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PreHireBuilder) CustomFields(customFields []*ObjectFieldData) *PreHireBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *PreHireBuilder) CostCenterRate(costCenterRate []*SupportCostCenterItem) *PreHireBuilder {
	builder.costCenterRate = costCenterRate
	builder.costCenterRateFlag = true
	return builder
}

// 入职状态;;- 待入职(preboarding);;- 已删除(deleted);;- 准备就绪(day_one);;- 已撤销(withdrawn);;- 已完成(completed)
//
// 示例值：
func (builder *PreHireBuilder) OnboardingStatus(onboardingStatus *Enum) *PreHireBuilder {
	builder.onboardingStatus = onboardingStatus
	builder.onboardingStatusFlag = true
	return builder
}

func (builder *PreHireBuilder) Build() *PreHire {
	req := &PreHire{}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.hireDateFlag {
		req.HireDate = &builder.hireDate

	}
	if builder.employeeTypeFlag {
		req.EmployeeType = builder.employeeType
	}
	if builder.workerIdFlag {
		req.WorkerId = &builder.workerId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.costCenterRateFlag {
		req.CostCenterRate = builder.costCenterRate
	}
	if builder.onboardingStatusFlag {
		req.OnboardingStatus = builder.onboardingStatus
	}
	return req
}

type PreHireQuery struct {
	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘系统的候选人 ID

	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	HireDate *string `json:"hire_date,omitempty"` // 入职日期

	EmployeeType *Enum `json:"employee_type,omitempty"` // 雇佣类型

	WorkerId *string `json:"worker_id,omitempty"` // 人员编号

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 雇佣类型

	PersonId *string `json:"person_id,omitempty"` // 引用Person ID

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	OnboardingStatus *Enum `json:"onboarding_status,omitempty"` // 入职状态

	CostCenterRate []*SupportCostCenterItem `json:"cost_center_rate,omitempty"` // 成本中心分摊信息

	WorkEmailList []*Email `json:"work_email_list,omitempty"` // 工作邮箱

	DepartmentId *string `json:"department_id,omitempty"` // 部门ID
}

type PreHireQueryBuilder struct {
	atsApplicationId     string // 招聘系统的候选人 ID
	atsApplicationIdFlag bool

	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	hireDate     string // 入职日期
	hireDateFlag bool

	employeeType     *Enum // 雇佣类型
	employeeTypeFlag bool

	workerId     string // 人员编号
	workerIdFlag bool

	employeeTypeId     string // 雇佣类型
	employeeTypeIdFlag bool

	personId     string // 引用Person ID
	personIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	onboardingStatus     *Enum // 入职状态
	onboardingStatusFlag bool

	costCenterRate     []*SupportCostCenterItem // 成本中心分摊信息
	costCenterRateFlag bool

	workEmailList     []*Email // 工作邮箱
	workEmailListFlag bool

	departmentId     string // 部门ID
	departmentIdFlag bool
}

func NewPreHireQueryBuilder() *PreHireQueryBuilder {
	builder := &PreHireQueryBuilder{}
	return builder
}

// 招聘系统的候选人 ID
//
// 示例值：4719168654814483759
func (builder *PreHireQueryBuilder) AtsApplicationId(atsApplicationId string) *PreHireQueryBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：154545454
func (builder *PreHireQueryBuilder) Id(id string) *PreHireQueryBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 入职日期
//
// 示例值：2020-01-01
func (builder *PreHireQueryBuilder) HireDate(hireDate string) *PreHireQueryBuilder {
	builder.hireDate = hireDate
	builder.hireDateFlag = true
	return builder
}

// 雇佣类型
//
// 示例值：
func (builder *PreHireQueryBuilder) EmployeeType(employeeType *Enum) *PreHireQueryBuilder {
	builder.employeeType = employeeType
	builder.employeeTypeFlag = true
	return builder
}

// 人员编号
//
// 示例值：1245646
func (builder *PreHireQueryBuilder) WorkerId(workerId string) *PreHireQueryBuilder {
	builder.workerId = workerId
	builder.workerIdFlag = true
	return builder
}

// 雇佣类型
//
// 示例值：正式
func (builder *PreHireQueryBuilder) EmployeeTypeId(employeeTypeId string) *PreHireQueryBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 引用Person ID
//
// 示例值：656464648662
func (builder *PreHireQueryBuilder) PersonId(personId string) *PreHireQueryBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PreHireQueryBuilder) CustomFields(customFields []*ObjectFieldData) *PreHireQueryBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 入职状态
//
// 示例值：
func (builder *PreHireQueryBuilder) OnboardingStatus(onboardingStatus *Enum) *PreHireQueryBuilder {
	builder.onboardingStatus = onboardingStatus
	builder.onboardingStatusFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *PreHireQueryBuilder) CostCenterRate(costCenterRate []*SupportCostCenterItem) *PreHireQueryBuilder {
	builder.costCenterRate = costCenterRate
	builder.costCenterRateFlag = true
	return builder
}

// 工作邮箱
//
// 示例值：
func (builder *PreHireQueryBuilder) WorkEmailList(workEmailList []*Email) *PreHireQueryBuilder {
	builder.workEmailList = workEmailList
	builder.workEmailListFlag = true
	return builder
}

// 部门ID
//
// 示例值：656464648662
func (builder *PreHireQueryBuilder) DepartmentId(departmentId string) *PreHireQueryBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

func (builder *PreHireQueryBuilder) Build() *PreHireQuery {
	req := &PreHireQuery{}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.hireDateFlag {
		req.HireDate = &builder.hireDate

	}
	if builder.employeeTypeFlag {
		req.EmployeeType = builder.employeeType
	}
	if builder.workerIdFlag {
		req.WorkerId = &builder.workerId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.onboardingStatusFlag {
		req.OnboardingStatus = builder.onboardingStatus
	}
	if builder.costCenterRateFlag {
		req.CostCenterRate = builder.costCenterRate
	}
	if builder.workEmailListFlag {
		req.WorkEmailList = builder.workEmailList
	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	return req
}

type PreviousEmployer struct {
	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	EmployerName *string `json:"employer_name,omitempty"` // 雇主名称

	EmployerReferenceNumber *string `json:"employer_reference_number,omitempty"` // 雇主税参考号

	EmploymentOrder *string `json:"employment_order,omitempty"` // 雇佣顺序

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PreviousEmployerBuilder struct {
	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	employerName     string // 雇主名称
	employerNameFlag bool

	employerReferenceNumber     string // 雇主税参考号
	employerReferenceNumberFlag bool

	employmentOrder     string // 雇佣顺序
	employmentOrderFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPreviousEmployerBuilder() *PreviousEmployerBuilder {
	builder := &PreviousEmployerBuilder{}
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：6950635856373745165
func (builder *PreviousEmployerBuilder) Id(id string) *PreviousEmployerBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 雇主名称
//
// 示例值：employer name
func (builder *PreviousEmployerBuilder) EmployerName(employerName string) *PreviousEmployerBuilder {
	builder.employerName = employerName
	builder.employerNameFlag = true
	return builder
}

// 雇主税参考号
//
// 示例值：1234567899
func (builder *PreviousEmployerBuilder) EmployerReferenceNumber(employerReferenceNumber string) *PreviousEmployerBuilder {
	builder.employerReferenceNumber = employerReferenceNumber
	builder.employerReferenceNumberFlag = true
	return builder
}

// 雇佣顺序
//
// 示例值：true
func (builder *PreviousEmployerBuilder) EmploymentOrder(employmentOrder string) *PreviousEmployerBuilder {
	builder.employmentOrder = employmentOrder
	builder.employmentOrderFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PreviousEmployerBuilder) CustomFields(customFields []*ObjectFieldData) *PreviousEmployerBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PreviousEmployerBuilder) Build() *PreviousEmployer {
	req := &PreviousEmployer{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employerNameFlag {
		req.EmployerName = &builder.employerName

	}
	if builder.employerReferenceNumberFlag {
		req.EmployerReferenceNumber = &builder.employerReferenceNumber

	}
	if builder.employmentOrderFlag {
		req.EmploymentOrder = &builder.employmentOrder

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Process struct {
	Id *string `json:"id,omitempty"` // 流程ID
}

type ProcessBuilder struct {
	id     string // 流程ID
	idFlag bool
}

func NewProcessBuilder() *ProcessBuilder {
	builder := &ProcessBuilder{}
	return builder
}

// 流程ID
//
// 示例值：
func (builder *ProcessBuilder) Id(id string) *ProcessBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *ProcessBuilder) Build() *Process {
	req := &Process{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type ReferenceObject struct {
	ApiName *string `json:"api_name,omitempty"` // cpst_item(项目)、 cpst_indicator(指标)

	Id *string `json:"id,omitempty"` // 值列表 例如部门ID
}

type ReferenceObjectBuilder struct {
	apiName     string // cpst_item(项目)、 cpst_indicator(指标)
	apiNameFlag bool

	id     string // 值列表 例如部门ID
	idFlag bool
}

func NewReferenceObjectBuilder() *ReferenceObjectBuilder {
	builder := &ReferenceObjectBuilder{}
	return builder
}

// cpst_item(项目)、 cpst_indicator(指标)
//
// 示例值：cpst_item
func (builder *ReferenceObjectBuilder) ApiName(apiName string) *ReferenceObjectBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 值列表 例如部门ID
//
// 示例值：7156853394442044972
func (builder *ReferenceObjectBuilder) Id(id string) *ReferenceObjectBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *ReferenceObjectBuilder) Build() *ReferenceObject {
	req := &ReferenceObject{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type ResidentTax struct {
	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	YearResidentTax *string `json:"year_resident_tax,omitempty"` // 年度

	TaxAddress *Address `json:"tax_address,omitempty"` // 纳税地址

	TaxCountryRegionId *string `json:"tax_country_region_id,omitempty"` // 纳税国家地区

	ResidentStatus *Enum `json:"resident_status,omitempty"` // 居民纳税身份

	ResidentStatusSpecification *string `json:"resident_status_specification,omitempty"` // 本年度在马来西亚已有工作收入

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type ResidentTaxBuilder struct {
	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	yearResidentTax     string // 年度
	yearResidentTaxFlag bool

	taxAddress     *Address // 纳税地址
	taxAddressFlag bool

	taxCountryRegionId     string // 纳税国家地区
	taxCountryRegionIdFlag bool

	residentStatus     *Enum // 居民纳税身份
	residentStatusFlag bool

	residentStatusSpecification     string // 本年度在马来西亚已有工作收入
	residentStatusSpecificationFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewResidentTaxBuilder() *ResidentTaxBuilder {
	builder := &ResidentTaxBuilder{}
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：6950635856373745165
func (builder *ResidentTaxBuilder) Id(id string) *ResidentTaxBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 年度
//
// 示例值：2021
func (builder *ResidentTaxBuilder) YearResidentTax(yearResidentTax string) *ResidentTaxBuilder {
	builder.yearResidentTax = yearResidentTax
	builder.yearResidentTaxFlag = true
	return builder
}

// 纳税地址
//
// 示例值：
func (builder *ResidentTaxBuilder) TaxAddress(taxAddress *Address) *ResidentTaxBuilder {
	builder.taxAddress = taxAddress
	builder.taxAddressFlag = true
	return builder
}

// 纳税国家地区
//
// 示例值：马来西亚
func (builder *ResidentTaxBuilder) TaxCountryRegionId(taxCountryRegionId string) *ResidentTaxBuilder {
	builder.taxCountryRegionId = taxCountryRegionId
	builder.taxCountryRegionIdFlag = true
	return builder
}

// 居民纳税身份
//
// 示例值：马来西亚
func (builder *ResidentTaxBuilder) ResidentStatus(residentStatus *Enum) *ResidentTaxBuilder {
	builder.residentStatus = residentStatus
	builder.residentStatusFlag = true
	return builder
}

// 本年度在马来西亚已有工作收入
//
// 示例值：马来西亚
func (builder *ResidentTaxBuilder) ResidentStatusSpecification(residentStatusSpecification string) *ResidentTaxBuilder {
	builder.residentStatusSpecification = residentStatusSpecification
	builder.residentStatusSpecificationFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ResidentTaxBuilder) CustomFields(customFields []*ObjectFieldData) *ResidentTaxBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ResidentTaxBuilder) Build() *ResidentTax {
	req := &ResidentTax{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.yearResidentTaxFlag {
		req.YearResidentTax = &builder.yearResidentTax

	}
	if builder.taxAddressFlag {
		req.TaxAddress = builder.taxAddress
	}
	if builder.taxCountryRegionIdFlag {
		req.TaxCountryRegionId = &builder.taxCountryRegionId

	}
	if builder.residentStatusFlag {
		req.ResidentStatus = builder.residentStatus
	}
	if builder.residentStatusSpecificationFlag {
		req.ResidentStatusSpecification = &builder.residentStatusSpecification

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type RoleAuthorization struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	PermissionDetailList []*PermissionDetail `json:"permission_detail_list,omitempty"` // 授权列表

	ManagementScopeList []*ManagementScope `json:"management_scope_list,omitempty"` // 实际授权管理范围
}

type RoleAuthorizationBuilder struct {
	employmentId     string // 员工 ID
	employmentIdFlag bool

	permissionDetailList     []*PermissionDetail // 授权列表
	permissionDetailListFlag bool

	managementScopeList     []*ManagementScope // 实际授权管理范围
	managementScopeListFlag bool
}

func NewRoleAuthorizationBuilder() *RoleAuthorizationBuilder {
	builder := &RoleAuthorizationBuilder{}
	return builder
}

// 员工 ID
//
// 示例值：6967639606963471902
func (builder *RoleAuthorizationBuilder) EmploymentId(employmentId string) *RoleAuthorizationBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 授权列表
//
// 示例值：
func (builder *RoleAuthorizationBuilder) PermissionDetailList(permissionDetailList []*PermissionDetail) *RoleAuthorizationBuilder {
	builder.permissionDetailList = permissionDetailList
	builder.permissionDetailListFlag = true
	return builder
}

// 实际授权管理范围
//
// 示例值：
func (builder *RoleAuthorizationBuilder) ManagementScopeList(managementScopeList []*ManagementScope) *RoleAuthorizationBuilder {
	builder.managementScopeList = managementScopeList
	builder.managementScopeListFlag = true
	return builder
}

func (builder *RoleAuthorizationBuilder) Build() *RoleAuthorization {
	req := &RoleAuthorization{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.permissionDetailListFlag {
		req.PermissionDetailList = builder.permissionDetailList
	}
	if builder.managementScopeListFlag {
		req.ManagementScopeList = builder.managementScopeList
	}
	return req
}

type RuleDimension struct {
	EntityKey *string `json:"entity_key,omitempty"` // 维度的key

	EntityName *Name `json:"entity_name,omitempty"` // 维度名称
}

type RuleDimensionBuilder struct {
	entityKey     string // 维度的key
	entityKeyFlag bool

	entityName     *Name // 维度名称
	entityNameFlag bool
}

func NewRuleDimensionBuilder() *RuleDimensionBuilder {
	builder := &RuleDimensionBuilder{}
	return builder
}

// 维度的key
//
// 示例值：员工
func (builder *RuleDimensionBuilder) EntityKey(entityKey string) *RuleDimensionBuilder {
	builder.entityKey = entityKey
	builder.entityKeyFlag = true
	return builder
}

// 维度名称
//
// 示例值：
func (builder *RuleDimensionBuilder) EntityName(entityName *Name) *RuleDimensionBuilder {
	builder.entityName = entityName
	builder.entityNameFlag = true
	return builder
}

func (builder *RuleDimensionBuilder) Build() *RuleDimension {
	req := &RuleDimension{}
	if builder.entityKeyFlag {
		req.EntityKey = &builder.entityKey

	}
	if builder.entityNameFlag {
		req.EntityName = builder.entityName
	}
	return req
}

type SecurityGroup struct {
	Id *string `json:"id,omitempty"` // 角色ID

	Code *string `json:"code,omitempty"` // 角色code，通常用于与其他系统进行交互

	Name *Name `json:"name,omitempty"` // 角色名称

	ActiveStatus *int `json:"active_status,omitempty"` // 状态，1 = Inactive / 停用，;2 = Active / 启用，3 = TobeActivated / 待启用

	Description *Name `json:"description,omitempty"` // 角色描述

	GroupType *int `json:"group_type,omitempty"` // 角色类型

	CreatedBy *string `json:"created_by,omitempty"` // 创建人

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间

	OrgTruncation []*OrgTruncation `json:"org_truncation,omitempty"` // 组织管理维度
}

type SecurityGroupBuilder struct {
	id     string // 角色ID
	idFlag bool

	code     string // 角色code，通常用于与其他系统进行交互
	codeFlag bool

	name     *Name // 角色名称
	nameFlag bool

	activeStatus     int // 状态，1 = Inactive / 停用，;2 = Active / 启用，3 = TobeActivated / 待启用
	activeStatusFlag bool

	description     *Name // 角色描述
	descriptionFlag bool

	groupType     int // 角色类型
	groupTypeFlag bool

	createdBy     string // 创建人
	createdByFlag bool

	updateTime     string // 更新时间
	updateTimeFlag bool

	orgTruncation     []*OrgTruncation // 组织管理维度
	orgTruncationFlag bool
}

func NewSecurityGroupBuilder() *SecurityGroupBuilder {
	builder := &SecurityGroupBuilder{}
	return builder
}

// 角色ID
//
// 示例值：7034393015968122400
func (builder *SecurityGroupBuilder) Id(id string) *SecurityGroupBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 角色code，通常用于与其他系统进行交互
//
// 示例值：department_manager
func (builder *SecurityGroupBuilder) Code(code string) *SecurityGroupBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 角色名称
//
// 示例值：
func (builder *SecurityGroupBuilder) Name(name *Name) *SecurityGroupBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 状态，1 = Inactive / 停用，;2 = Active / 启用，3 = TobeActivated / 待启用
//
// 示例值：1
func (builder *SecurityGroupBuilder) ActiveStatus(activeStatus int) *SecurityGroupBuilder {
	builder.activeStatus = activeStatus
	builder.activeStatusFlag = true
	return builder
}

// 角色描述
//
// 示例值：
func (builder *SecurityGroupBuilder) Description(description *Name) *SecurityGroupBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 角色类型
//
// 示例值：1
func (builder *SecurityGroupBuilder) GroupType(groupType int) *SecurityGroupBuilder {
	builder.groupType = groupType
	builder.groupTypeFlag = true
	return builder
}

// 创建人
//
// 示例值：6967639606963471902
func (builder *SecurityGroupBuilder) CreatedBy(createdBy string) *SecurityGroupBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 更新时间
//
// 示例值：1
func (builder *SecurityGroupBuilder) UpdateTime(updateTime string) *SecurityGroupBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

// 组织管理维度
//
// 示例值：
func (builder *SecurityGroupBuilder) OrgTruncation(orgTruncation []*OrgTruncation) *SecurityGroupBuilder {
	builder.orgTruncation = orgTruncation
	builder.orgTruncationFlag = true
	return builder
}

func (builder *SecurityGroupBuilder) Build() *SecurityGroup {
	req := &SecurityGroup{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeStatusFlag {
		req.ActiveStatus = &builder.activeStatus

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.groupTypeFlag {
		req.GroupType = &builder.groupType

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	if builder.orgTruncationFlag {
		req.OrgTruncation = builder.orgTruncation
	}
	return req
}

type SortOption struct {
	SortField *string `json:"sort_field,omitempty"` // 排序字段

	SortOrder *int `json:"sort_order,omitempty"` // 排序顺序

	SortI18n *int `json:"sort_i18n,omitempty"` // 0=中文关键字;1=英文关键字;2=拼音

	SortByStrandLength *bool `json:"sort_by_strand_length,omitempty"` // 按某个字段的层级深度排序

	SortByPinyin *bool `json:"sort_by_pinyin,omitempty"` // 是否按照拼音排序

	SortByEnumValueOrder *bool `json:"sort_by_enum_value_order,omitempty"` // 是否按照枚举类型 value_order 排序
}

type SortOptionBuilder struct {
	sortField     string // 排序字段
	sortFieldFlag bool

	sortOrder     int // 排序顺序
	sortOrderFlag bool

	sortI18n     int // 0=中文关键字;1=英文关键字;2=拼音
	sortI18nFlag bool

	sortByStrandLength     bool // 按某个字段的层级深度排序
	sortByStrandLengthFlag bool

	sortByPinyin     bool // 是否按照拼音排序
	sortByPinyinFlag bool

	sortByEnumValueOrder     bool // 是否按照枚举类型 value_order 排序
	sortByEnumValueOrderFlag bool
}

func NewSortOptionBuilder() *SortOptionBuilder {
	builder := &SortOptionBuilder{}
	return builder
}

// 排序字段
//
// 示例值：wk_id
func (builder *SortOptionBuilder) SortField(sortField string) *SortOptionBuilder {
	builder.sortField = sortField
	builder.sortFieldFlag = true
	return builder
}

// 排序顺序
//
// 示例值：0
func (builder *SortOptionBuilder) SortOrder(sortOrder int) *SortOptionBuilder {
	builder.sortOrder = sortOrder
	builder.sortOrderFlag = true
	return builder
}

// 0=中文关键字;1=英文关键字;2=拼音
//
// 示例值：1
func (builder *SortOptionBuilder) SortI18n(sortI18n int) *SortOptionBuilder {
	builder.sortI18n = sortI18n
	builder.sortI18nFlag = true
	return builder
}

// 按某个字段的层级深度排序
//
// 示例值：false
func (builder *SortOptionBuilder) SortByStrandLength(sortByStrandLength bool) *SortOptionBuilder {
	builder.sortByStrandLength = sortByStrandLength
	builder.sortByStrandLengthFlag = true
	return builder
}

// 是否按照拼音排序
//
// 示例值：false
func (builder *SortOptionBuilder) SortByPinyin(sortByPinyin bool) *SortOptionBuilder {
	builder.sortByPinyin = sortByPinyin
	builder.sortByPinyinFlag = true
	return builder
}

// 是否按照枚举类型 value_order 排序
//
// 示例值：false
func (builder *SortOptionBuilder) SortByEnumValueOrder(sortByEnumValueOrder bool) *SortOptionBuilder {
	builder.sortByEnumValueOrder = sortByEnumValueOrder
	builder.sortByEnumValueOrderFlag = true
	return builder
}

func (builder *SortOptionBuilder) Build() *SortOption {
	req := &SortOption{}
	if builder.sortFieldFlag {
		req.SortField = &builder.sortField

	}
	if builder.sortOrderFlag {
		req.SortOrder = &builder.sortOrder

	}
	if builder.sortI18nFlag {
		req.SortI18n = &builder.sortI18n

	}
	if builder.sortByStrandLengthFlag {
		req.SortByStrandLength = &builder.sortByStrandLength

	}
	if builder.sortByPinyinFlag {
		req.SortByPinyin = &builder.sortByPinyin

	}
	if builder.sortByEnumValueOrderFlag {
		req.SortByEnumValueOrder = &builder.sortByEnumValueOrder

	}
	return req
}

type Subdivision struct {
	Id *string `json:"id,omitempty"` // 省份/行政区id

	Name []*I18n `json:"name,omitempty"` // 省份/行政区名称

	CountryRegionId *string `json:"country_region_id,omitempty"` // 所属国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得

	SubdivisionType *Enum `json:"subdivision_type,omitempty"` // 行政区类型，枚举值可通过文档【飞书人事枚举常量】行政区类型（subdivision_type）枚举定义部分获得
}

type SubdivisionBuilder struct {
	id     string // 省份/行政区id
	idFlag bool

	name     []*I18n // 省份/行政区名称
	nameFlag bool

	countryRegionId     string // 所属国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得
	countryRegionIdFlag bool

	subdivisionType     *Enum // 行政区类型，枚举值可通过文档【飞书人事枚举常量】行政区类型（subdivision_type）枚举定义部分获得
	subdivisionTypeFlag bool
}

func NewSubdivisionBuilder() *SubdivisionBuilder {
	builder := &SubdivisionBuilder{}
	return builder
}

// 省份/行政区id
//
// 示例值：12
func (builder *SubdivisionBuilder) Id(id string) *SubdivisionBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 省份/行政区名称
//
// 示例值：
func (builder *SubdivisionBuilder) Name(name []*I18n) *SubdivisionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 所属国家/地区id，详细信息可通过【查询国家/地区信息】接口查询获得
//
// 示例值：12
func (builder *SubdivisionBuilder) CountryRegionId(countryRegionId string) *SubdivisionBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 行政区类型，枚举值可通过文档【飞书人事枚举常量】行政区类型（subdivision_type）枚举定义部分获得
//
// 示例值：
func (builder *SubdivisionBuilder) SubdivisionType(subdivisionType *Enum) *SubdivisionBuilder {
	builder.subdivisionType = subdivisionType
	builder.subdivisionTypeFlag = true
	return builder
}

func (builder *SubdivisionBuilder) Build() *Subdivision {
	req := &Subdivision{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.subdivisionTypeFlag {
		req.SubdivisionType = builder.subdivisionType
	}
	return req
}

type Subregion struct {
	Id *string `json:"id,omitempty"` // 城市/区域id

	Name []*I18n `json:"name,omitempty"` // 城市/区域名称

	SubdivisionId *string `json:"subdivision_id,omitempty"` // 所属省份/行政区id，详细信息可通过【查询省份/行政区信息】接口查询获得

	SuperiorSubregionId *string `json:"superior_subregion_id,omitempty"` // 上级城市/区域区id
}

type SubregionBuilder struct {
	id     string // 城市/区域id
	idFlag bool

	name     []*I18n // 城市/区域名称
	nameFlag bool

	subdivisionId     string // 所属省份/行政区id，详细信息可通过【查询省份/行政区信息】接口查询获得
	subdivisionIdFlag bool

	superiorSubregionId     string // 上级城市/区域区id
	superiorSubregionIdFlag bool
}

func NewSubregionBuilder() *SubregionBuilder {
	builder := &SubregionBuilder{}
	return builder
}

// 城市/区域id
//
// 示例值：12
func (builder *SubregionBuilder) Id(id string) *SubregionBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 城市/区域名称
//
// 示例值：
func (builder *SubregionBuilder) Name(name []*I18n) *SubregionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 所属省份/行政区id，详细信息可通过【查询省份/行政区信息】接口查询获得
//
// 示例值：12
func (builder *SubregionBuilder) SubdivisionId(subdivisionId string) *SubregionBuilder {
	builder.subdivisionId = subdivisionId
	builder.subdivisionIdFlag = true
	return builder
}

// 上级城市/区域区id
//
// 示例值：12
func (builder *SubregionBuilder) SuperiorSubregionId(superiorSubregionId string) *SubregionBuilder {
	builder.superiorSubregionId = superiorSubregionId
	builder.superiorSubregionIdFlag = true
	return builder
}

func (builder *SubregionBuilder) Build() *Subregion {
	req := &Subregion{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.subdivisionIdFlag {
		req.SubdivisionId = &builder.subdivisionId

	}
	if builder.superiorSubregionIdFlag {
		req.SuperiorSubregionId = &builder.superiorSubregionId

	}
	return req
}

type SupportCostCenterItem struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 支持的成本中心id

	Rate *int `json:"rate,omitempty"` // 分摊比例
}

type SupportCostCenterItemBuilder struct {
	costCenterId     string // 支持的成本中心id
	costCenterIdFlag bool

	rate     int // 分摊比例
	rateFlag bool
}

func NewSupportCostCenterItemBuilder() *SupportCostCenterItemBuilder {
	builder := &SupportCostCenterItemBuilder{}
	return builder
}

// 支持的成本中心id
//
// 示例值：6950635856373745165
func (builder *SupportCostCenterItemBuilder) CostCenterId(costCenterId string) *SupportCostCenterItemBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 分摊比例
//
// 示例值：100
func (builder *SupportCostCenterItemBuilder) Rate(rate int) *SupportCostCenterItemBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

func (builder *SupportCostCenterItemBuilder) Build() *SupportCostCenterItem {
	req := &SupportCostCenterItem{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	return req
}

type Temp struct {
	Id *string `json:"id,omitempty"` // id
}

type TempBuilder struct {
	id     string // id
	idFlag bool
}

func NewTempBuilder() *TempBuilder {
	builder := &TempBuilder{}
	return builder
}

// id
//
// 示例值：
func (builder *TempBuilder) Id(id string) *TempBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *TempBuilder) Build() *Temp {
	req := &Temp{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type TextFieldSetting struct {
	IsMultilingual *bool `json:"is_multilingual,omitempty"` // 是否多语言

	IsMultiline *bool `json:"is_multiline,omitempty"` // 是否多行

	MaxLength *int `json:"max_length,omitempty"` // 最大长度

	IsUrlType *bool `json:"is_url_type,omitempty"` // 是否是URL类型
}

type TextFieldSettingBuilder struct {
	isMultilingual     bool // 是否多语言
	isMultilingualFlag bool

	isMultiline     bool // 是否多行
	isMultilineFlag bool

	maxLength     int // 最大长度
	maxLengthFlag bool

	isUrlType     bool // 是否是URL类型
	isUrlTypeFlag bool
}

func NewTextFieldSettingBuilder() *TextFieldSettingBuilder {
	builder := &TextFieldSettingBuilder{}
	return builder
}

// 是否多语言
//
// 示例值：true
func (builder *TextFieldSettingBuilder) IsMultilingual(isMultilingual bool) *TextFieldSettingBuilder {
	builder.isMultilingual = isMultilingual
	builder.isMultilingualFlag = true
	return builder
}

// 是否多行
//
// 示例值：true
func (builder *TextFieldSettingBuilder) IsMultiline(isMultiline bool) *TextFieldSettingBuilder {
	builder.isMultiline = isMultiline
	builder.isMultilineFlag = true
	return builder
}

// 最大长度
//
// 示例值：1
func (builder *TextFieldSettingBuilder) MaxLength(maxLength int) *TextFieldSettingBuilder {
	builder.maxLength = maxLength
	builder.maxLengthFlag = true
	return builder
}

// 是否是URL类型
//
// 示例值：true
func (builder *TextFieldSettingBuilder) IsUrlType(isUrlType bool) *TextFieldSettingBuilder {
	builder.isUrlType = isUrlType
	builder.isUrlTypeFlag = true
	return builder
}

func (builder *TextFieldSettingBuilder) Build() *TextFieldSetting {
	req := &TextFieldSetting{}
	if builder.isMultilingualFlag {
		req.IsMultilingual = &builder.isMultilingual

	}
	if builder.isMultilineFlag {
		req.IsMultiline = &builder.isMultiline

	}
	if builder.maxLengthFlag {
		req.MaxLength = &builder.maxLength

	}
	if builder.isUrlTypeFlag {
		req.IsUrlType = &builder.isUrlType

	}
	return req
}

type TranferEmploymentInfo struct {
	RegularEmployeeStartDate *string `json:"regular_employee_start_date,omitempty"` // 转正式员工日期

	SeniorityDate *string `json:"seniority_date,omitempty"` // 司龄起算日期

	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工编号

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type TranferEmploymentInfoBuilder struct {
	regularEmployeeStartDate     string // 转正式员工日期
	regularEmployeeStartDateFlag bool

	seniorityDate     string // 司龄起算日期
	seniorityDateFlag bool

	employeeNumber     string // 员工编号
	employeeNumberFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewTranferEmploymentInfoBuilder() *TranferEmploymentInfoBuilder {
	builder := &TranferEmploymentInfoBuilder{}
	return builder
}

// 转正式员工日期
//
// 示例值：2023-01-01
func (builder *TranferEmploymentInfoBuilder) RegularEmployeeStartDate(regularEmployeeStartDate string) *TranferEmploymentInfoBuilder {
	builder.regularEmployeeStartDate = regularEmployeeStartDate
	builder.regularEmployeeStartDateFlag = true
	return builder
}

// 司龄起算日期
//
// 示例值：2023-01-01
func (builder *TranferEmploymentInfoBuilder) SeniorityDate(seniorityDate string) *TranferEmploymentInfoBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 员工编号
//
// 示例值：1111111
func (builder *TranferEmploymentInfoBuilder) EmployeeNumber(employeeNumber string) *TranferEmploymentInfoBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *TranferEmploymentInfoBuilder) CustomFields(customFields []*CustomFieldData) *TranferEmploymentInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *TranferEmploymentInfoBuilder) Build() *TranferEmploymentInfo {
	req := &TranferEmploymentInfo{}
	if builder.regularEmployeeStartDateFlag {
		req.RegularEmployeeStartDate = &builder.regularEmployeeStartDate

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type TransferInfo struct {
	Remark *string `json:"remark,omitempty"` // 备注

	OfferInfo *string `json:"offer_info,omitempty"` // offer信息

	TargetDottedManagerClean *bool `json:"target_dotted_manager_clean,omitempty"` // 是否撤销虚线上级

	ProbationExist *bool `json:"probation_exist,omitempty"` // 是否有试用期

	OriginalDepartment *string `json:"original_department,omitempty"` // 原部门

	TargetDepartment *string `json:"target_department,omitempty"` // 新部门

	OriginalWorkLocation *string `json:"original_work_location,omitempty"` // 原工作地点

	TargetWorkLocation *string `json:"target_work_location,omitempty"` // 新工作地点

	OriginalDirectManager *string `json:"original_direct_manager,omitempty"` // 原直属上级

	TargetDirectManager *string `json:"target_direct_manager,omitempty"` // 新直属上级

	OriginalDottedManager *string `json:"original_dotted_manager,omitempty"` // 原虚线上级

	TargetDottedManager *string `json:"target_dotted_manager,omitempty"` // 新虚线上级

	OriginalJob *string `json:"original_job,omitempty"` // 原职务

	TargetJob *string `json:"target_job,omitempty"` // 新职务

	OriginalJobFamily *string `json:"original_job_family,omitempty"` // 原序列

	TargetJobFamily *string `json:"target_job_family,omitempty"` // 新序列

	OriginalJobLevel *string `json:"original_job_level,omitempty"` // 原级别

	TargetJobLevel *string `json:"target_job_level,omitempty"` // 新级别

	OriginalWorkforceType *string `json:"original_workforce_type,omitempty"` // 原人员类型

	TargetWorkforceType *string `json:"target_workforce_type,omitempty"` // 新人员类型

	OriginalEmployeeSubtype *string `json:"original_employee_subtype,omitempty"` // 原人员子类型

	TargetEmployeeSubtype *string `json:"target_employee_subtype,omitempty"` // 新人员子类型

	OriginalCompany *string `json:"original_company,omitempty"` // 原公司

	TargetCompany *string `json:"target_company,omitempty"` // 新公司

	OriginalContractNumber *string `json:"original_contract_number,omitempty"` // 原合同编号

	TargetContractNumber *string `json:"target_contract_number,omitempty"` // 新合同编号

	OriginalContractType *string `json:"original_contract_type,omitempty"` // 原合同类型

	TargetContractType *string `json:"target_contract_type,omitempty"` // 新合同类型

	OriginalDurationType *string `json:"original_duration_type,omitempty"` // 原期限类型

	TargetDurationType *string `json:"target_duration_type,omitempty"` // 新期限类型

	OriginalSigningType *string `json:"original_signing_type,omitempty"` // 原签订类型

	TargetSigningType *string `json:"target_signing_type,omitempty"` // 新签订类型

	OriginalContractStartDate *string `json:"original_contract_start_date,omitempty"` // 原合同开始日期

	TargetContractStartDate *string `json:"target_contract_start_date,omitempty"` // 新合同开始日期

	OriginalContractEndDate *string `json:"original_contract_end_date,omitempty"` // 原合同结束日期

	TargetContractEndDate *string `json:"target_contract_end_date,omitempty"` // 新合同结束日期

	OriginalWorkingHoursType *string `json:"original_working_hours_type,omitempty"` // 原工时制度

	TargetWorkingHoursType *string `json:"target_working_hours_type,omitempty"` // 新工时制度

	OriginalWorkingCalendar *string `json:"original_working_calendar,omitempty"` // 原工作日历

	TargetWorkingCalendar *string `json:"target_working_calendar,omitempty"` // 新工作日历

	OriginalProbationEndDate *string `json:"original_probation_end_date,omitempty"` // 原试用期预计结束日期

	TargetProbationEndDate *string `json:"target_probation_end_date,omitempty"` // 新试用期预计结束日期

	OriginalWeeklyWorkingHours *string `json:"original_weekly_working_hours,omitempty"` // 原周工作时长

	TargetWeeklyWorkingHours *string `json:"target_weekly_working_hours,omitempty"` // 新周工作时长

	OriginalWorkShift *string `json:"original_work_shift,omitempty"` // 原排班

	TargetWorkShift *string `json:"target_work_shift,omitempty"` // 新排班

	OriginalCostCenterRate []*SupportCostCenterItem `json:"original_cost_center_rate,omitempty"` // 原成本中心分摊信息

	TargetCostCenterRate []*SupportCostCenterItem `json:"target_cost_center_rate,omitempty"` // 新成本中心分摊信息

	OriginalEmploymentChange *TranferEmploymentInfo `json:"original_employment_change,omitempty"` // 原工作信息

	TargetEmploymentChange *TranferEmploymentInfo `json:"target_employment_change,omitempty"` // 新工作信息

	OriginalJobGrade *string `json:"original_job_grade,omitempty"` // 原职等

	TargetJobGrade *string `json:"target_job_grade,omitempty"` // 新职等

	OriginalCompensationType *string `json:"original_compensation_type,omitempty"` // 原薪资类型

	TargetCompensationType *string `json:"target_compensation_type,omitempty"` // 新薪资类型

	OriginalServiceCompany *string `json:"original_service_company,omitempty"` // 原任职公司

	TargetServiceCompany *string `json:"target_service_company,omitempty"` // 新任职公司

	OriginalPosition *string `json:"original_position,omitempty"` // 原岗位

	TargetPosition *string `json:"target_position,omitempty"` // 新岗位

	OriginalPathway *string `json:"original_pathway,omitempty"` // 原通道

	TargetPathway *string `json:"target_pathway,omitempty"` // 新通道
}

type TransferInfoBuilder struct {
	remark     string // 备注
	remarkFlag bool

	offerInfo     string // offer信息
	offerInfoFlag bool

	targetDottedManagerClean     bool // 是否撤销虚线上级
	targetDottedManagerCleanFlag bool

	probationExist     bool // 是否有试用期
	probationExistFlag bool

	originalDepartment     string // 原部门
	originalDepartmentFlag bool

	targetDepartment     string // 新部门
	targetDepartmentFlag bool

	originalWorkLocation     string // 原工作地点
	originalWorkLocationFlag bool

	targetWorkLocation     string // 新工作地点
	targetWorkLocationFlag bool

	originalDirectManager     string // 原直属上级
	originalDirectManagerFlag bool

	targetDirectManager     string // 新直属上级
	targetDirectManagerFlag bool

	originalDottedManager     string // 原虚线上级
	originalDottedManagerFlag bool

	targetDottedManager     string // 新虚线上级
	targetDottedManagerFlag bool

	originalJob     string // 原职务
	originalJobFlag bool

	targetJob     string // 新职务
	targetJobFlag bool

	originalJobFamily     string // 原序列
	originalJobFamilyFlag bool

	targetJobFamily     string // 新序列
	targetJobFamilyFlag bool

	originalJobLevel     string // 原级别
	originalJobLevelFlag bool

	targetJobLevel     string // 新级别
	targetJobLevelFlag bool

	originalWorkforceType     string // 原人员类型
	originalWorkforceTypeFlag bool

	targetWorkforceType     string // 新人员类型
	targetWorkforceTypeFlag bool

	originalEmployeeSubtype     string // 原人员子类型
	originalEmployeeSubtypeFlag bool

	targetEmployeeSubtype     string // 新人员子类型
	targetEmployeeSubtypeFlag bool

	originalCompany     string // 原公司
	originalCompanyFlag bool

	targetCompany     string // 新公司
	targetCompanyFlag bool

	originalContractNumber     string // 原合同编号
	originalContractNumberFlag bool

	targetContractNumber     string // 新合同编号
	targetContractNumberFlag bool

	originalContractType     string // 原合同类型
	originalContractTypeFlag bool

	targetContractType     string // 新合同类型
	targetContractTypeFlag bool

	originalDurationType     string // 原期限类型
	originalDurationTypeFlag bool

	targetDurationType     string // 新期限类型
	targetDurationTypeFlag bool

	originalSigningType     string // 原签订类型
	originalSigningTypeFlag bool

	targetSigningType     string // 新签订类型
	targetSigningTypeFlag bool

	originalContractStartDate     string // 原合同开始日期
	originalContractStartDateFlag bool

	targetContractStartDate     string // 新合同开始日期
	targetContractStartDateFlag bool

	originalContractEndDate     string // 原合同结束日期
	originalContractEndDateFlag bool

	targetContractEndDate     string // 新合同结束日期
	targetContractEndDateFlag bool

	originalWorkingHoursType     string // 原工时制度
	originalWorkingHoursTypeFlag bool

	targetWorkingHoursType     string // 新工时制度
	targetWorkingHoursTypeFlag bool

	originalWorkingCalendar     string // 原工作日历
	originalWorkingCalendarFlag bool

	targetWorkingCalendar     string // 新工作日历
	targetWorkingCalendarFlag bool

	originalProbationEndDate     string // 原试用期预计结束日期
	originalProbationEndDateFlag bool

	targetProbationEndDate     string // 新试用期预计结束日期
	targetProbationEndDateFlag bool

	originalWeeklyWorkingHours     string // 原周工作时长
	originalWeeklyWorkingHoursFlag bool

	targetWeeklyWorkingHours     string // 新周工作时长
	targetWeeklyWorkingHoursFlag bool

	originalWorkShift     string // 原排班
	originalWorkShiftFlag bool

	targetWorkShift     string // 新排班
	targetWorkShiftFlag bool

	originalCostCenterRate     []*SupportCostCenterItem // 原成本中心分摊信息
	originalCostCenterRateFlag bool

	targetCostCenterRate     []*SupportCostCenterItem // 新成本中心分摊信息
	targetCostCenterRateFlag bool

	originalEmploymentChange     *TranferEmploymentInfo // 原工作信息
	originalEmploymentChangeFlag bool

	targetEmploymentChange     *TranferEmploymentInfo // 新工作信息
	targetEmploymentChangeFlag bool

	originalJobGrade     string // 原职等
	originalJobGradeFlag bool

	targetJobGrade     string // 新职等
	targetJobGradeFlag bool

	originalCompensationType     string // 原薪资类型
	originalCompensationTypeFlag bool

	targetCompensationType     string // 新薪资类型
	targetCompensationTypeFlag bool

	originalServiceCompany     string // 原任职公司
	originalServiceCompanyFlag bool

	targetServiceCompany     string // 新任职公司
	targetServiceCompanyFlag bool

	originalPosition     string // 原岗位
	originalPositionFlag bool

	targetPosition     string // 新岗位
	targetPositionFlag bool

	originalPathway     string // 原通道
	originalPathwayFlag bool

	targetPathway     string // 新通道
	targetPathwayFlag bool
}

func NewTransferInfoBuilder() *TransferInfoBuilder {
	builder := &TransferInfoBuilder{}
	return builder
}

// 备注
//
// 示例值：异动详情
func (builder *TransferInfoBuilder) Remark(remark string) *TransferInfoBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// offer信息
//
// 示例值：优质人才，加急处理
func (builder *TransferInfoBuilder) OfferInfo(offerInfo string) *TransferInfoBuilder {
	builder.offerInfo = offerInfo
	builder.offerInfoFlag = true
	return builder
}

// 是否撤销虚线上级
//
// 示例值：true
func (builder *TransferInfoBuilder) TargetDottedManagerClean(targetDottedManagerClean bool) *TransferInfoBuilder {
	builder.targetDottedManagerClean = targetDottedManagerClean
	builder.targetDottedManagerCleanFlag = true
	return builder
}

// 是否有试用期
//
// 示例值：false
func (builder *TransferInfoBuilder) ProbationExist(probationExist bool) *TransferInfoBuilder {
	builder.probationExist = probationExist
	builder.probationExistFlag = true
	return builder
}

// 原部门
//
// 示例值：6966236933198579208
func (builder *TransferInfoBuilder) OriginalDepartment(originalDepartment string) *TransferInfoBuilder {
	builder.originalDepartment = originalDepartment
	builder.originalDepartmentFlag = true
	return builder
}

// 新部门
//
// 示例值：6966236933198579208
func (builder *TransferInfoBuilder) TargetDepartment(targetDepartment string) *TransferInfoBuilder {
	builder.targetDepartment = targetDepartment
	builder.targetDepartmentFlag = true
	return builder
}

// 原工作地点
//
// 示例值：6967271100992587295
func (builder *TransferInfoBuilder) OriginalWorkLocation(originalWorkLocation string) *TransferInfoBuilder {
	builder.originalWorkLocation = originalWorkLocation
	builder.originalWorkLocationFlag = true
	return builder
}

// 新工作地点
//
// 示例值：6967271100992587295
func (builder *TransferInfoBuilder) TargetWorkLocation(targetWorkLocation string) *TransferInfoBuilder {
	builder.targetWorkLocation = targetWorkLocation
	builder.targetWorkLocationFlag = true
	return builder
}

// 原直属上级
//
// 示例值：6974641477444060708
func (builder *TransferInfoBuilder) OriginalDirectManager(originalDirectManager string) *TransferInfoBuilder {
	builder.originalDirectManager = originalDirectManager
	builder.originalDirectManagerFlag = true
	return builder
}

// 新直属上级
//
// 示例值：7013619729281713671
func (builder *TransferInfoBuilder) TargetDirectManager(targetDirectManager string) *TransferInfoBuilder {
	builder.targetDirectManager = targetDirectManager
	builder.targetDirectManagerFlag = true
	return builder
}

// 原虚线上级
//
// 示例值：6974648866876573198
func (builder *TransferInfoBuilder) OriginalDottedManager(originalDottedManager string) *TransferInfoBuilder {
	builder.originalDottedManager = originalDottedManager
	builder.originalDottedManagerFlag = true
	return builder
}

// 新虚线上级
//
// 示例值：7013328578351842852
func (builder *TransferInfoBuilder) TargetDottedManager(targetDottedManager string) *TransferInfoBuilder {
	builder.targetDottedManager = targetDottedManager
	builder.targetDottedManagerFlag = true
	return builder
}

// 原职务
//
// 示例值：6969469398088287751
func (builder *TransferInfoBuilder) OriginalJob(originalJob string) *TransferInfoBuilder {
	builder.originalJob = originalJob
	builder.originalJobFlag = true
	return builder
}

// 新职务
//
// 示例值：6969469557836760606
func (builder *TransferInfoBuilder) TargetJob(targetJob string) *TransferInfoBuilder {
	builder.targetJob = targetJob
	builder.targetJobFlag = true
	return builder
}

// 原序列
//
// 示例值：6967287547462419975
func (builder *TransferInfoBuilder) OriginalJobFamily(originalJobFamily string) *TransferInfoBuilder {
	builder.originalJobFamily = originalJobFamily
	builder.originalJobFamilyFlag = true
	return builder
}

// 新序列
//
// 示例值：6967287547462419975
func (builder *TransferInfoBuilder) TargetJobFamily(targetJobFamily string) *TransferInfoBuilder {
	builder.targetJobFamily = targetJobFamily
	builder.targetJobFamilyFlag = true
	return builder
}

// 原级别
//
// 示例值：6972085707674355214
func (builder *TransferInfoBuilder) OriginalJobLevel(originalJobLevel string) *TransferInfoBuilder {
	builder.originalJobLevel = originalJobLevel
	builder.originalJobLevelFlag = true
	return builder
}

// 新级别
//
// 示例值：6972085707674355214
func (builder *TransferInfoBuilder) TargetJobLevel(targetJobLevel string) *TransferInfoBuilder {
	builder.targetJobLevel = targetJobLevel
	builder.targetJobLevelFlag = true
	return builder
}

// 原人员类型
//
// 示例值：6968386026792289828
func (builder *TransferInfoBuilder) OriginalWorkforceType(originalWorkforceType string) *TransferInfoBuilder {
	builder.originalWorkforceType = originalWorkforceType
	builder.originalWorkforceTypeFlag = true
	return builder
}

// 新人员类型
//
// 示例值：7036268995372303885
func (builder *TransferInfoBuilder) TargetWorkforceType(targetWorkforceType string) *TransferInfoBuilder {
	builder.targetWorkforceType = targetWorkforceType
	builder.targetWorkforceTypeFlag = true
	return builder
}

// 原人员子类型
//
// 示例值：6968386026792289828
func (builder *TransferInfoBuilder) OriginalEmployeeSubtype(originalEmployeeSubtype string) *TransferInfoBuilder {
	builder.originalEmployeeSubtype = originalEmployeeSubtype
	builder.originalEmployeeSubtypeFlag = true
	return builder
}

// 新人员子类型
//
// 示例值：7036268995372303885
func (builder *TransferInfoBuilder) TargetEmployeeSubtype(targetEmployeeSubtype string) *TransferInfoBuilder {
	builder.targetEmployeeSubtype = targetEmployeeSubtype
	builder.targetEmployeeSubtypeFlag = true
	return builder
}

// 原公司
//
// 示例值：6974659700705068581
func (builder *TransferInfoBuilder) OriginalCompany(originalCompany string) *TransferInfoBuilder {
	builder.originalCompany = originalCompany
	builder.originalCompanyFlag = true
	return builder
}

// 新公司
//
// 示例值：6974659700705068581
func (builder *TransferInfoBuilder) TargetCompany(targetCompany string) *TransferInfoBuilder {
	builder.targetCompany = targetCompany
	builder.targetCompanyFlag = true
	return builder
}

// 原合同编号
//
// 示例值：55332
func (builder *TransferInfoBuilder) OriginalContractNumber(originalContractNumber string) *TransferInfoBuilder {
	builder.originalContractNumber = originalContractNumber
	builder.originalContractNumberFlag = true
	return builder
}

// 新合同编号
//
// 示例值：55333
func (builder *TransferInfoBuilder) TargetContractNumber(targetContractNumber string) *TransferInfoBuilder {
	builder.targetContractNumber = targetContractNumber
	builder.targetContractNumberFlag = true
	return builder
}

// 原合同类型
//
// 示例值：labor_contract
func (builder *TransferInfoBuilder) OriginalContractType(originalContractType string) *TransferInfoBuilder {
	builder.originalContractType = originalContractType
	builder.originalContractTypeFlag = true
	return builder
}

// 新合同类型
//
// 示例值：labor_contract
func (builder *TransferInfoBuilder) TargetContractType(targetContractType string) *TransferInfoBuilder {
	builder.targetContractType = targetContractType
	builder.targetContractTypeFlag = true
	return builder
}

// 原期限类型
//
// 示例值：fixed_term
func (builder *TransferInfoBuilder) OriginalDurationType(originalDurationType string) *TransferInfoBuilder {
	builder.originalDurationType = originalDurationType
	builder.originalDurationTypeFlag = true
	return builder
}

// 新期限类型
//
// 示例值：fixed_term
func (builder *TransferInfoBuilder) TargetDurationType(targetDurationType string) *TransferInfoBuilder {
	builder.targetDurationType = targetDurationType
	builder.targetDurationTypeFlag = true
	return builder
}

// 原签订类型
//
// 示例值：new
func (builder *TransferInfoBuilder) OriginalSigningType(originalSigningType string) *TransferInfoBuilder {
	builder.originalSigningType = originalSigningType
	builder.originalSigningTypeFlag = true
	return builder
}

// 新签订类型
//
// 示例值：new
func (builder *TransferInfoBuilder) TargetSigningType(targetSigningType string) *TransferInfoBuilder {
	builder.targetSigningType = targetSigningType
	builder.targetSigningTypeFlag = true
	return builder
}

// 原合同开始日期
//
// 示例值：2021-07-01
func (builder *TransferInfoBuilder) OriginalContractStartDate(originalContractStartDate string) *TransferInfoBuilder {
	builder.originalContractStartDate = originalContractStartDate
	builder.originalContractStartDateFlag = true
	return builder
}

// 新合同开始日期
//
// 示例值：2021-07-01
func (builder *TransferInfoBuilder) TargetContractStartDate(targetContractStartDate string) *TransferInfoBuilder {
	builder.targetContractStartDate = targetContractStartDate
	builder.targetContractStartDateFlag = true
	return builder
}

// 原合同结束日期
//
// 示例值：2024-07-01
func (builder *TransferInfoBuilder) OriginalContractEndDate(originalContractEndDate string) *TransferInfoBuilder {
	builder.originalContractEndDate = originalContractEndDate
	builder.originalContractEndDateFlag = true
	return builder
}

// 新合同结束日期
//
// 示例值：2024-07-01
func (builder *TransferInfoBuilder) TargetContractEndDate(targetContractEndDate string) *TransferInfoBuilder {
	builder.targetContractEndDate = targetContractEndDate
	builder.targetContractEndDateFlag = true
	return builder
}

// 原工时制度
//
// 示例值：6969087376740206087
func (builder *TransferInfoBuilder) OriginalWorkingHoursType(originalWorkingHoursType string) *TransferInfoBuilder {
	builder.originalWorkingHoursType = originalWorkingHoursType
	builder.originalWorkingHoursTypeFlag = true
	return builder
}

// 新工时制度
//
// 示例值：6969087376740206087
func (builder *TransferInfoBuilder) TargetWorkingHoursType(targetWorkingHoursType string) *TransferInfoBuilder {
	builder.targetWorkingHoursType = targetWorkingHoursType
	builder.targetWorkingHoursTypeFlag = true
	return builder
}

// 原工作日历
//
// 示例值：6969087376740236087
func (builder *TransferInfoBuilder) OriginalWorkingCalendar(originalWorkingCalendar string) *TransferInfoBuilder {
	builder.originalWorkingCalendar = originalWorkingCalendar
	builder.originalWorkingCalendarFlag = true
	return builder
}

// 新工作日历
//
// 示例值：6969087376740236087
func (builder *TransferInfoBuilder) TargetWorkingCalendar(targetWorkingCalendar string) *TransferInfoBuilder {
	builder.targetWorkingCalendar = targetWorkingCalendar
	builder.targetWorkingCalendarFlag = true
	return builder
}

// 原试用期预计结束日期
//
// 示例值：2021-11-17
func (builder *TransferInfoBuilder) OriginalProbationEndDate(originalProbationEndDate string) *TransferInfoBuilder {
	builder.originalProbationEndDate = originalProbationEndDate
	builder.originalProbationEndDateFlag = true
	return builder
}

// 新试用期预计结束日期
//
// 示例值：2021-11-17
func (builder *TransferInfoBuilder) TargetProbationEndDate(targetProbationEndDate string) *TransferInfoBuilder {
	builder.targetProbationEndDate = targetProbationEndDate
	builder.targetProbationEndDateFlag = true
	return builder
}

// 原周工作时长
//
// 示例值：162
func (builder *TransferInfoBuilder) OriginalWeeklyWorkingHours(originalWeeklyWorkingHours string) *TransferInfoBuilder {
	builder.originalWeeklyWorkingHours = originalWeeklyWorkingHours
	builder.originalWeeklyWorkingHoursFlag = true
	return builder
}

// 新周工作时长
//
// 示例值：160
func (builder *TransferInfoBuilder) TargetWeeklyWorkingHours(targetWeeklyWorkingHours string) *TransferInfoBuilder {
	builder.targetWeeklyWorkingHours = targetWeeklyWorkingHours
	builder.targetWeeklyWorkingHoursFlag = true
	return builder
}

// 原排班
//
// 示例值：work_shift
func (builder *TransferInfoBuilder) OriginalWorkShift(originalWorkShift string) *TransferInfoBuilder {
	builder.originalWorkShift = originalWorkShift
	builder.originalWorkShiftFlag = true
	return builder
}

// 新排班
//
// 示例值：non_work_shift
func (builder *TransferInfoBuilder) TargetWorkShift(targetWorkShift string) *TransferInfoBuilder {
	builder.targetWorkShift = targetWorkShift
	builder.targetWorkShiftFlag = true
	return builder
}

// 原成本中心分摊信息
//
// 示例值：
func (builder *TransferInfoBuilder) OriginalCostCenterRate(originalCostCenterRate []*SupportCostCenterItem) *TransferInfoBuilder {
	builder.originalCostCenterRate = originalCostCenterRate
	builder.originalCostCenterRateFlag = true
	return builder
}

// 新成本中心分摊信息
//
// 示例值：
func (builder *TransferInfoBuilder) TargetCostCenterRate(targetCostCenterRate []*SupportCostCenterItem) *TransferInfoBuilder {
	builder.targetCostCenterRate = targetCostCenterRate
	builder.targetCostCenterRateFlag = true
	return builder
}

// 原工作信息
//
// 示例值：
func (builder *TransferInfoBuilder) OriginalEmploymentChange(originalEmploymentChange *TranferEmploymentInfo) *TransferInfoBuilder {
	builder.originalEmploymentChange = originalEmploymentChange
	builder.originalEmploymentChangeFlag = true
	return builder
}

// 新工作信息
//
// 示例值：
func (builder *TransferInfoBuilder) TargetEmploymentChange(targetEmploymentChange *TranferEmploymentInfo) *TransferInfoBuilder {
	builder.targetEmploymentChange = targetEmploymentChange
	builder.targetEmploymentChangeFlag = true
	return builder
}

// 原职等
//
// 示例值：7289005963599693366
func (builder *TransferInfoBuilder) OriginalJobGrade(originalJobGrade string) *TransferInfoBuilder {
	builder.originalJobGrade = originalJobGrade
	builder.originalJobGradeFlag = true
	return builder
}

// 新职等
//
// 示例值：7289005963599693366
func (builder *TransferInfoBuilder) TargetJobGrade(targetJobGrade string) *TransferInfoBuilder {
	builder.targetJobGrade = targetJobGrade
	builder.targetJobGradeFlag = true
	return builder
}

// 原薪资类型
//
// 示例值：hourly
func (builder *TransferInfoBuilder) OriginalCompensationType(originalCompensationType string) *TransferInfoBuilder {
	builder.originalCompensationType = originalCompensationType
	builder.originalCompensationTypeFlag = true
	return builder
}

// 新薪资类型
//
// 示例值：salary
func (builder *TransferInfoBuilder) TargetCompensationType(targetCompensationType string) *TransferInfoBuilder {
	builder.targetCompensationType = targetCompensationType
	builder.targetCompensationTypeFlag = true
	return builder
}

// 原任职公司
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalServiceCompany(originalServiceCompany string) *TransferInfoBuilder {
	builder.originalServiceCompany = originalServiceCompany
	builder.originalServiceCompanyFlag = true
	return builder
}

// 新任职公司
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetServiceCompany(targetServiceCompany string) *TransferInfoBuilder {
	builder.targetServiceCompany = targetServiceCompany
	builder.targetServiceCompanyFlag = true
	return builder
}

// 原岗位
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalPosition(originalPosition string) *TransferInfoBuilder {
	builder.originalPosition = originalPosition
	builder.originalPositionFlag = true
	return builder
}

// 新岗位
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetPosition(targetPosition string) *TransferInfoBuilder {
	builder.targetPosition = targetPosition
	builder.targetPositionFlag = true
	return builder
}

// 原通道
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalPathway(originalPathway string) *TransferInfoBuilder {
	builder.originalPathway = originalPathway
	builder.originalPathwayFlag = true
	return builder
}

// 新通道
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetPathway(targetPathway string) *TransferInfoBuilder {
	builder.targetPathway = targetPathway
	builder.targetPathwayFlag = true
	return builder
}

func (builder *TransferInfoBuilder) Build() *TransferInfo {
	req := &TransferInfo{}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.offerInfoFlag {
		req.OfferInfo = &builder.offerInfo

	}
	if builder.targetDottedManagerCleanFlag {
		req.TargetDottedManagerClean = &builder.targetDottedManagerClean

	}
	if builder.probationExistFlag {
		req.ProbationExist = &builder.probationExist

	}
	if builder.originalDepartmentFlag {
		req.OriginalDepartment = &builder.originalDepartment

	}
	if builder.targetDepartmentFlag {
		req.TargetDepartment = &builder.targetDepartment

	}
	if builder.originalWorkLocationFlag {
		req.OriginalWorkLocation = &builder.originalWorkLocation

	}
	if builder.targetWorkLocationFlag {
		req.TargetWorkLocation = &builder.targetWorkLocation

	}
	if builder.originalDirectManagerFlag {
		req.OriginalDirectManager = &builder.originalDirectManager

	}
	if builder.targetDirectManagerFlag {
		req.TargetDirectManager = &builder.targetDirectManager

	}
	if builder.originalDottedManagerFlag {
		req.OriginalDottedManager = &builder.originalDottedManager

	}
	if builder.targetDottedManagerFlag {
		req.TargetDottedManager = &builder.targetDottedManager

	}
	if builder.originalJobFlag {
		req.OriginalJob = &builder.originalJob

	}
	if builder.targetJobFlag {
		req.TargetJob = &builder.targetJob

	}
	if builder.originalJobFamilyFlag {
		req.OriginalJobFamily = &builder.originalJobFamily

	}
	if builder.targetJobFamilyFlag {
		req.TargetJobFamily = &builder.targetJobFamily

	}
	if builder.originalJobLevelFlag {
		req.OriginalJobLevel = &builder.originalJobLevel

	}
	if builder.targetJobLevelFlag {
		req.TargetJobLevel = &builder.targetJobLevel

	}
	if builder.originalWorkforceTypeFlag {
		req.OriginalWorkforceType = &builder.originalWorkforceType

	}
	if builder.targetWorkforceTypeFlag {
		req.TargetWorkforceType = &builder.targetWorkforceType

	}
	if builder.originalEmployeeSubtypeFlag {
		req.OriginalEmployeeSubtype = &builder.originalEmployeeSubtype

	}
	if builder.targetEmployeeSubtypeFlag {
		req.TargetEmployeeSubtype = &builder.targetEmployeeSubtype

	}
	if builder.originalCompanyFlag {
		req.OriginalCompany = &builder.originalCompany

	}
	if builder.targetCompanyFlag {
		req.TargetCompany = &builder.targetCompany

	}
	if builder.originalContractNumberFlag {
		req.OriginalContractNumber = &builder.originalContractNumber

	}
	if builder.targetContractNumberFlag {
		req.TargetContractNumber = &builder.targetContractNumber

	}
	if builder.originalContractTypeFlag {
		req.OriginalContractType = &builder.originalContractType

	}
	if builder.targetContractTypeFlag {
		req.TargetContractType = &builder.targetContractType

	}
	if builder.originalDurationTypeFlag {
		req.OriginalDurationType = &builder.originalDurationType

	}
	if builder.targetDurationTypeFlag {
		req.TargetDurationType = &builder.targetDurationType

	}
	if builder.originalSigningTypeFlag {
		req.OriginalSigningType = &builder.originalSigningType

	}
	if builder.targetSigningTypeFlag {
		req.TargetSigningType = &builder.targetSigningType

	}
	if builder.originalContractStartDateFlag {
		req.OriginalContractStartDate = &builder.originalContractStartDate

	}
	if builder.targetContractStartDateFlag {
		req.TargetContractStartDate = &builder.targetContractStartDate

	}
	if builder.originalContractEndDateFlag {
		req.OriginalContractEndDate = &builder.originalContractEndDate

	}
	if builder.targetContractEndDateFlag {
		req.TargetContractEndDate = &builder.targetContractEndDate

	}
	if builder.originalWorkingHoursTypeFlag {
		req.OriginalWorkingHoursType = &builder.originalWorkingHoursType

	}
	if builder.targetWorkingHoursTypeFlag {
		req.TargetWorkingHoursType = &builder.targetWorkingHoursType

	}
	if builder.originalWorkingCalendarFlag {
		req.OriginalWorkingCalendar = &builder.originalWorkingCalendar

	}
	if builder.targetWorkingCalendarFlag {
		req.TargetWorkingCalendar = &builder.targetWorkingCalendar

	}
	if builder.originalProbationEndDateFlag {
		req.OriginalProbationEndDate = &builder.originalProbationEndDate

	}
	if builder.targetProbationEndDateFlag {
		req.TargetProbationEndDate = &builder.targetProbationEndDate

	}
	if builder.originalWeeklyWorkingHoursFlag {
		req.OriginalWeeklyWorkingHours = &builder.originalWeeklyWorkingHours

	}
	if builder.targetWeeklyWorkingHoursFlag {
		req.TargetWeeklyWorkingHours = &builder.targetWeeklyWorkingHours

	}
	if builder.originalWorkShiftFlag {
		req.OriginalWorkShift = &builder.originalWorkShift

	}
	if builder.targetWorkShiftFlag {
		req.TargetWorkShift = &builder.targetWorkShift

	}
	if builder.originalCostCenterRateFlag {
		req.OriginalCostCenterRate = builder.originalCostCenterRate
	}
	if builder.targetCostCenterRateFlag {
		req.TargetCostCenterRate = builder.targetCostCenterRate
	}
	if builder.originalEmploymentChangeFlag {
		req.OriginalEmploymentChange = builder.originalEmploymentChange
	}
	if builder.targetEmploymentChangeFlag {
		req.TargetEmploymentChange = builder.targetEmploymentChange
	}
	if builder.originalJobGradeFlag {
		req.OriginalJobGrade = &builder.originalJobGrade

	}
	if builder.targetJobGradeFlag {
		req.TargetJobGrade = &builder.targetJobGrade

	}
	if builder.originalCompensationTypeFlag {
		req.OriginalCompensationType = &builder.originalCompensationType

	}
	if builder.targetCompensationTypeFlag {
		req.TargetCompensationType = &builder.targetCompensationType

	}
	if builder.originalServiceCompanyFlag {
		req.OriginalServiceCompany = &builder.originalServiceCompany

	}
	if builder.targetServiceCompanyFlag {
		req.TargetServiceCompany = &builder.targetServiceCompany

	}
	if builder.originalPositionFlag {
		req.OriginalPosition = &builder.originalPosition

	}
	if builder.targetPositionFlag {
		req.TargetPosition = &builder.targetPosition

	}
	if builder.originalPathwayFlag {
		req.OriginalPathway = &builder.originalPathway

	}
	if builder.targetPathwayFlag {
		req.TargetPathway = &builder.targetPathway

	}
	return req
}

type TransferReason struct {
	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因唯一标识

	Name []*I18n `json:"name,omitempty"` // 异动原因的名称信息

	Active *bool `json:"active,omitempty"` // 异动原因状态

	ParentTransferReasonUniqueIdentifier *string `json:"parent_transfer_reason_unique_identifier,omitempty"` // 上级异动原因唯一标识

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间
}

type TransferReasonBuilder struct {
	transferReasonUniqueIdentifier     string // 异动原因唯一标识
	transferReasonUniqueIdentifierFlag bool

	name     []*I18n // 异动原因的名称信息
	nameFlag bool

	active     bool // 异动原因状态
	activeFlag bool

	parentTransferReasonUniqueIdentifier     string // 上级异动原因唯一标识
	parentTransferReasonUniqueIdentifierFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool
}

func NewTransferReasonBuilder() *TransferReasonBuilder {
	builder := &TransferReasonBuilder{}
	return builder
}

// 异动原因唯一标识
//
// 示例值：voluntary_transfer
func (builder *TransferReasonBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier string) *TransferReasonBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 异动原因的名称信息
//
// 示例值：张三
func (builder *TransferReasonBuilder) Name(name []*I18n) *TransferReasonBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 异动原因状态
//
// 示例值：true
func (builder *TransferReasonBuilder) Active(active bool) *TransferReasonBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 上级异动原因唯一标识
//
// 示例值：reason_for_job_change_option25
func (builder *TransferReasonBuilder) ParentTransferReasonUniqueIdentifier(parentTransferReasonUniqueIdentifier string) *TransferReasonBuilder {
	builder.parentTransferReasonUniqueIdentifier = parentTransferReasonUniqueIdentifier
	builder.parentTransferReasonUniqueIdentifierFlag = true
	return builder
}

// 创建时间
//
// 示例值：2021-07-04 20:30:47
func (builder *TransferReasonBuilder) CreatedTime(createdTime string) *TransferReasonBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2022-02-28 16:27:56
func (builder *TransferReasonBuilder) UpdatedTime(updatedTime string) *TransferReasonBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

func (builder *TransferReasonBuilder) Build() *TransferReason {
	req := &TransferReason{}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = &builder.transferReasonUniqueIdentifier

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.parentTransferReasonUniqueIdentifierFlag {
		req.ParentTransferReasonUniqueIdentifier = &builder.parentTransferReasonUniqueIdentifier

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	return req
}

type TransferType struct {
	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	Name []*I18n `json:"name,omitempty"` // 异动类型名称

	Active *bool `json:"active,omitempty"` // 异动类型状态

	FlowId *string `json:"flow_id,omitempty"` // 关联流程唯一标识符

	FlowName []*I18n `json:"flow_name,omitempty"` // 关联流程名称

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间
}

type TransferTypeBuilder struct {
	transferTypeUniqueIdentifier     string // 异动类型唯一标识
	transferTypeUniqueIdentifierFlag bool

	name     []*I18n // 异动类型名称
	nameFlag bool

	active     bool // 异动类型状态
	activeFlag bool

	flowId     string // 关联流程唯一标识符
	flowIdFlag bool

	flowName     []*I18n // 关联流程名称
	flowNameFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool
}

func NewTransferTypeBuilder() *TransferTypeBuilder {
	builder := &TransferTypeBuilder{}
	return builder
}

// 异动类型唯一标识
//
// 示例值：internal_transfer
func (builder *TransferTypeBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *TransferTypeBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动类型名称
//
// 示例值：张三
func (builder *TransferTypeBuilder) Name(name []*I18n) *TransferTypeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 异动类型状态
//
// 示例值：true
func (builder *TransferTypeBuilder) Active(active bool) *TransferTypeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 关联流程唯一标识符
//
// 示例值：people_6963913041981490725_6983885526583627531
func (builder *TransferTypeBuilder) FlowId(flowId string) *TransferTypeBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 关联流程名称
//
// 示例值：张三
func (builder *TransferTypeBuilder) FlowName(flowName []*I18n) *TransferTypeBuilder {
	builder.flowName = flowName
	builder.flowNameFlag = true
	return builder
}

// 创建时间
//
// 示例值：2021-06-29 18:21:26
func (builder *TransferTypeBuilder) CreatedTime(createdTime string) *TransferTypeBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2022-01-07 17:20:51
func (builder *TransferTypeBuilder) UpdatedTime(updatedTime string) *TransferTypeBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

func (builder *TransferTypeBuilder) Build() *TransferType {
	req := &TransferType{}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId

	}
	if builder.flowNameFlag {
		req.FlowName = builder.flowName
	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	return req
}

type UserId struct {
	UserId *string `json:"user_id,omitempty"` //

	OpenId *string `json:"open_id,omitempty"` //

	UnionId *string `json:"union_id,omitempty"` //
}

type UserIdBuilder struct {
	userId     string //
	userIdFlag bool

	openId     string //
	openIdFlag bool

	unionId     string //
	unionIdFlag bool
}

func NewUserIdBuilder() *UserIdBuilder {
	builder := &UserIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) UserId(userId string) *UserIdBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) OpenId(openId string) *UserIdBuilder {
	builder.openId = openId
	builder.openIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) UnionId(unionId string) *UserIdBuilder {
	builder.unionId = unionId
	builder.unionIdFlag = true
	return builder
}

func (builder *UserIdBuilder) Build() *UserId {
	req := &UserId{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.openIdFlag {
		req.OpenId = &builder.openId

	}
	if builder.unionIdFlag {
		req.UnionId = &builder.unionId

	}
	return req
}

type WkCalendarDate struct {
	CalendarId *string `json:"calendar_id,omitempty"` // 工作日历WKID

	Date *string `json:"date,omitempty"` // 日期，格式："2006-01-02"

	DateType *string `json:"date_type,omitempty"` // 日期类型

	Id *string `json:"id,omitempty"` // 日期id
}

type WkCalendarDateBuilder struct {
	calendarId     string // 工作日历WKID
	calendarIdFlag bool

	date     string // 日期，格式："2006-01-02"
	dateFlag bool

	dateType     string // 日期类型
	dateTypeFlag bool

	id     string // 日期id
	idFlag bool
}

func NewWkCalendarDateBuilder() *WkCalendarDateBuilder {
	builder := &WkCalendarDateBuilder{}
	return builder
}

// 工作日历WKID
//
// 示例值："7390282135276635692"
func (builder *WkCalendarDateBuilder) CalendarId(calendarId string) *WkCalendarDateBuilder {
	builder.calendarId = calendarId
	builder.calendarIdFlag = true
	return builder
}

// 日期，格式："2006-01-02"
//
// 示例值："2006-01-02"
func (builder *WkCalendarDateBuilder) Date(date string) *WkCalendarDateBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 日期类型
//
// 示例值："day_off"
func (builder *WkCalendarDateBuilder) DateType(dateType string) *WkCalendarDateBuilder {
	builder.dateType = dateType
	builder.dateTypeFlag = true
	return builder
}

// 日期id
//
// 示例值："7390282135276635692"
func (builder *WkCalendarDateBuilder) Id(id string) *WkCalendarDateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *WkCalendarDateBuilder) Build() *WkCalendarDate {
	req := &WkCalendarDate{}
	if builder.calendarIdFlag {
		req.CalendarId = &builder.calendarId

	}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.dateTypeFlag {
		req.DateType = &builder.dateType

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type WkCalendarI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文值

	EnUs *string `json:"en_us,omitempty"` // 英文值
}

type WkCalendarI18nBuilder struct {
	zhCn     string // 中文值
	zhCnFlag bool

	enUs     string // 英文值
	enUsFlag bool
}

func NewWkCalendarI18nBuilder() *WkCalendarI18nBuilder {
	builder := &WkCalendarI18nBuilder{}
	return builder
}

// 中文值
//
// 示例值：日历1
func (builder *WkCalendarI18nBuilder) ZhCn(zhCn string) *WkCalendarI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文值
//
// 示例值：calendar1
func (builder *WkCalendarI18nBuilder) EnUs(enUs string) *WkCalendarI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *WkCalendarI18nBuilder) Build() *WkCalendarI18n {
	req := &WkCalendarI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type WkOption struct {
	Count *bool `json:"count,omitempty"` // 是否返回符合条件的工作日历总数

	Offset *int `json:"offset,omitempty"` // 分页查询的位移，从0开始

	Limit *int `json:"limit,omitempty"` // 分页查询 单次查询数量

	SortOptions []*SortOption `json:"sort_options,omitempty"` // 排序
}

type WkOptionBuilder struct {
	count     bool // 是否返回符合条件的工作日历总数
	countFlag bool

	offset     int // 分页查询的位移，从0开始
	offsetFlag bool

	limit     int // 分页查询 单次查询数量
	limitFlag bool

	sortOptions     []*SortOption // 排序
	sortOptionsFlag bool
}

func NewWkOptionBuilder() *WkOptionBuilder {
	builder := &WkOptionBuilder{}
	return builder
}

// 是否返回符合条件的工作日历总数
//
// 示例值：false
func (builder *WkOptionBuilder) Count(count bool) *WkOptionBuilder {
	builder.count = count
	builder.countFlag = true
	return builder
}

// 分页查询的位移，从0开始
//
// 示例值：0
func (builder *WkOptionBuilder) Offset(offset int) *WkOptionBuilder {
	builder.offset = offset
	builder.offsetFlag = true
	return builder
}

// 分页查询 单次查询数量
//
// 示例值：20
func (builder *WkOptionBuilder) Limit(limit int) *WkOptionBuilder {
	builder.limit = limit
	builder.limitFlag = true
	return builder
}

// 排序
//
// 示例值：
func (builder *WkOptionBuilder) SortOptions(sortOptions []*SortOption) *WkOptionBuilder {
	builder.sortOptions = sortOptions
	builder.sortOptionsFlag = true
	return builder
}

func (builder *WkOptionBuilder) Build() *WkOption {
	req := &WkOption{}
	if builder.countFlag {
		req.Count = &builder.count

	}
	if builder.offsetFlag {
		req.Offset = &builder.offset

	}
	if builder.limitFlag {
		req.Limit = &builder.limit

	}
	if builder.sortOptionsFlag {
		req.SortOptions = builder.sortOptions
	}
	return req
}

type WorkCalendarDetail struct {
	CalendarId *string `json:"calendar_id,omitempty"` // 工作日历ID

	CalendarName *WkCalendarI18n `json:"calendar_name,omitempty"` // 工作日历名称

	Enable *bool `json:"enable,omitempty"` // 工作日历是否启用
}

type WorkCalendarDetailBuilder struct {
	calendarId     string // 工作日历ID
	calendarIdFlag bool

	calendarName     *WkCalendarI18n // 工作日历名称
	calendarNameFlag bool

	enable     bool // 工作日历是否启用
	enableFlag bool
}

func NewWorkCalendarDetailBuilder() *WorkCalendarDetailBuilder {
	builder := &WorkCalendarDetailBuilder{}
	return builder
}

// 工作日历ID
//
// 示例值：123456
func (builder *WorkCalendarDetailBuilder) CalendarId(calendarId string) *WorkCalendarDetailBuilder {
	builder.calendarId = calendarId
	builder.calendarIdFlag = true
	return builder
}

// 工作日历名称
//
// 示例值：
func (builder *WorkCalendarDetailBuilder) CalendarName(calendarName *WkCalendarI18n) *WorkCalendarDetailBuilder {
	builder.calendarName = calendarName
	builder.calendarNameFlag = true
	return builder
}

// 工作日历是否启用
//
// 示例值：true
func (builder *WorkCalendarDetailBuilder) Enable(enable bool) *WorkCalendarDetailBuilder {
	builder.enable = enable
	builder.enableFlag = true
	return builder
}

func (builder *WorkCalendarDetailBuilder) Build() *WorkCalendarDetail {
	req := &WorkCalendarDetail{}
	if builder.calendarIdFlag {
		req.CalendarId = &builder.calendarId

	}
	if builder.calendarNameFlag {
		req.CalendarName = builder.calendarName
	}
	if builder.enableFlag {
		req.Enable = &builder.enable

	}
	return req
}

type WorkCalendarFilter struct {
	WkCalendarIds []string `json:"wk_calendar_ids,omitempty"` // 工作日历ID列表

	WkCalendarIdGt *string `json:"wk_calendar_id_gt,omitempty"` // 工作日历ID大于

	WkOption *WkOption `json:"wk_option,omitempty"` // 分页、排序等选项

	OnlyEnable *bool `json:"only_enable,omitempty"` // 是否只返回启用的工作日历，不填默认true
}

type WorkCalendarFilterBuilder struct {
	wkCalendarIds     []string // 工作日历ID列表
	wkCalendarIdsFlag bool

	wkCalendarIdGt     string // 工作日历ID大于
	wkCalendarIdGtFlag bool

	wkOption     *WkOption // 分页、排序等选项
	wkOptionFlag bool

	onlyEnable     bool // 是否只返回启用的工作日历，不填默认true
	onlyEnableFlag bool
}

func NewWorkCalendarFilterBuilder() *WorkCalendarFilterBuilder {
	builder := &WorkCalendarFilterBuilder{}
	return builder
}

// 工作日历ID列表
//
// 示例值：
func (builder *WorkCalendarFilterBuilder) WkCalendarIds(wkCalendarIds []string) *WorkCalendarFilterBuilder {
	builder.wkCalendarIds = wkCalendarIds
	builder.wkCalendarIdsFlag = true
	return builder
}

// 工作日历ID大于
//
// 示例值：12344
func (builder *WorkCalendarFilterBuilder) WkCalendarIdGt(wkCalendarIdGt string) *WorkCalendarFilterBuilder {
	builder.wkCalendarIdGt = wkCalendarIdGt
	builder.wkCalendarIdGtFlag = true
	return builder
}

// 分页、排序等选项
//
// 示例值：
func (builder *WorkCalendarFilterBuilder) WkOption(wkOption *WkOption) *WorkCalendarFilterBuilder {
	builder.wkOption = wkOption
	builder.wkOptionFlag = true
	return builder
}

// 是否只返回启用的工作日历，不填默认true
//
// 示例值：true
func (builder *WorkCalendarFilterBuilder) OnlyEnable(onlyEnable bool) *WorkCalendarFilterBuilder {
	builder.onlyEnable = onlyEnable
	builder.onlyEnableFlag = true
	return builder
}

func (builder *WorkCalendarFilterBuilder) Build() *WorkCalendarFilter {
	req := &WorkCalendarFilter{}
	if builder.wkCalendarIdsFlag {
		req.WkCalendarIds = builder.wkCalendarIds
	}
	if builder.wkCalendarIdGtFlag {
		req.WkCalendarIdGt = &builder.wkCalendarIdGt

	}
	if builder.wkOptionFlag {
		req.WkOption = builder.wkOption
	}
	if builder.onlyEnableFlag {
		req.OnlyEnable = &builder.onlyEnable

	}
	return req
}

type WorkExperience struct {
	CompanyOrganization []*I18n `json:"company_organization,omitempty"` // 公司 / 组织

	Department []*I18n `json:"department,omitempty"` // 部门

	Job []*I18n `json:"job,omitempty"` // 岗位

	Description []*I18n `json:"description,omitempty"` // 工作描述

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type WorkExperienceBuilder struct {
	companyOrganization     []*I18n // 公司 / 组织
	companyOrganizationFlag bool

	department     []*I18n // 部门
	departmentFlag bool

	job     []*I18n // 岗位
	jobFlag bool

	description     []*I18n // 工作描述
	descriptionFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewWorkExperienceBuilder() *WorkExperienceBuilder {
	builder := &WorkExperienceBuilder{}
	return builder
}

// 公司 / 组织
//
// 示例值：
func (builder *WorkExperienceBuilder) CompanyOrganization(companyOrganization []*I18n) *WorkExperienceBuilder {
	builder.companyOrganization = companyOrganization
	builder.companyOrganizationFlag = true
	return builder
}

// 部门
//
// 示例值：
func (builder *WorkExperienceBuilder) Department(department []*I18n) *WorkExperienceBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 岗位
//
// 示例值：
func (builder *WorkExperienceBuilder) Job(job []*I18n) *WorkExperienceBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 工作描述
//
// 示例值：
func (builder *WorkExperienceBuilder) Description(description []*I18n) *WorkExperienceBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 开始日期
//
// 示例值：2020-01-01
func (builder *WorkExperienceBuilder) StartDate(startDate string) *WorkExperienceBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2020-01-01
func (builder *WorkExperienceBuilder) EndDate(endDate string) *WorkExperienceBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *WorkExperienceBuilder) CustomFields(customFields []*ObjectFieldData) *WorkExperienceBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *WorkExperienceBuilder) Build() *WorkExperience {
	req := &WorkExperience{}
	if builder.companyOrganizationFlag {
		req.CompanyOrganization = builder.companyOrganization
	}
	if builder.departmentFlag {
		req.Department = builder.department
	}
	if builder.jobFlag {
		req.Job = builder.job
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type WorkingHoursType struct {
	Id *string `json:"id,omitempty"` // 工时制度 ID

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	CountryRegionIdList []string `json:"country_region_id_list,omitempty"` // 国家/地区 ID 列表

	DefaultForJob *bool `json:"default_for_job,omitempty"` // 职务默认值

	Active *bool `json:"active,omitempty"` // 是否启用

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type WorkingHoursTypeBuilder struct {
	id     string // 工时制度 ID
	idFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	countryRegionIdList     []string // 国家/地区 ID 列表
	countryRegionIdListFlag bool

	defaultForJob     bool // 职务默认值
	defaultForJobFlag bool

	active     bool // 是否启用
	activeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewWorkingHoursTypeBuilder() *WorkingHoursTypeBuilder {
	builder := &WorkingHoursTypeBuilder{}
	return builder
}

// 工时制度 ID
//
// 示例值：6890452208593372679
func (builder *WorkingHoursTypeBuilder) Id(id string) *WorkingHoursTypeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 编码
//
// 示例值：1
func (builder *WorkingHoursTypeBuilder) Code(code string) *WorkingHoursTypeBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *WorkingHoursTypeBuilder) Name(name []*I18n) *WorkingHoursTypeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 国家/地区 ID 列表
//
// 示例值：创建成功的工时制度信息
func (builder *WorkingHoursTypeBuilder) CountryRegionIdList(countryRegionIdList []string) *WorkingHoursTypeBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 职务默认值
//
// 示例值：true
func (builder *WorkingHoursTypeBuilder) DefaultForJob(defaultForJob bool) *WorkingHoursTypeBuilder {
	builder.defaultForJob = defaultForJob
	builder.defaultForJobFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *WorkingHoursTypeBuilder) Active(active bool) *WorkingHoursTypeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *WorkingHoursTypeBuilder) CustomFields(customFields []*ObjectFieldData) *WorkingHoursTypeBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *WorkingHoursTypeBuilder) Build() *WorkingHoursType {
	req := &WorkingHoursType{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.defaultForJobFlag {
		req.DefaultForJob = &builder.defaultForJob

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type SearchAssignedUserReqBodyBuilder struct {
	roleId     string // 角色 ID，仅支持组织类角色， 角色 ID 可通过【批量获取角色列表】接口获取
	roleIdFlag bool

	managementScopeList     []*ManagementScope // 管理范围信息
	managementScopeListFlag bool

	searchMethod     string // 查找方式;;可选值有：;- 1：只查找指定 部门/工作地点/公司/社保城市，如无授权信息则返回为空;- 2：当指定的 部门/工作地点/公司/社保城市 无授权信息，向上查找第一个授权记录并直接返回
	searchMethodFlag bool

	pageToken     string // 页码标识，获取第一页传空，每次查询会返回下一页的page_token
	pageTokenFlag bool

	pageSize     string // 每页获取记录数量，最大100
	pageSizeFlag bool
}

func NewSearchAssignedUserReqBodyBuilder() *SearchAssignedUserReqBodyBuilder {
	builder := &SearchAssignedUserReqBodyBuilder{}
	return builder
}

// 角色 ID，仅支持组织类角色， 角色 ID 可通过【批量获取角色列表】接口获取
//
//示例值：100
func (builder *SearchAssignedUserReqBodyBuilder) RoleId(roleId string) *SearchAssignedUserReqBodyBuilder {
	builder.roleId = roleId
	builder.roleIdFlag = true
	return builder
}

// 管理范围信息
//
//示例值：
func (builder *SearchAssignedUserReqBodyBuilder) ManagementScopeList(managementScopeList []*ManagementScope) *SearchAssignedUserReqBodyBuilder {
	builder.managementScopeList = managementScopeList
	builder.managementScopeListFlag = true
	return builder
}

// 查找方式;;可选值有：;- 1：只查找指定 部门/工作地点/公司/社保城市，如无授权信息则返回为空;- 2：当指定的 部门/工作地点/公司/社保城市 无授权信息，向上查找第一个授权记录并直接返回
//
//示例值：1
func (builder *SearchAssignedUserReqBodyBuilder) SearchMethod(searchMethod string) *SearchAssignedUserReqBodyBuilder {
	builder.searchMethod = searchMethod
	builder.searchMethodFlag = true
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
//示例值：eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
func (builder *SearchAssignedUserReqBodyBuilder) PageToken(pageToken string) *SearchAssignedUserReqBodyBuilder {
	builder.pageToken = pageToken
	builder.pageTokenFlag = true
	return builder
}

// 每页获取记录数量，最大100
//
//示例值：100
func (builder *SearchAssignedUserReqBodyBuilder) PageSize(pageSize string) *SearchAssignedUserReqBodyBuilder {
	builder.pageSize = pageSize
	builder.pageSizeFlag = true
	return builder
}

func (builder *SearchAssignedUserReqBodyBuilder) Build() *SearchAssignedUserReqBody {
	req := &SearchAssignedUserReqBody{}
	if builder.roleIdFlag {
		req.RoleId = &builder.roleId
	}
	if builder.managementScopeListFlag {
		req.ManagementScopeList = builder.managementScopeList
	}
	if builder.searchMethodFlag {
		req.SearchMethod = &builder.searchMethod
	}
	if builder.pageTokenFlag {
		req.PageToken = &builder.pageToken
	}
	if builder.pageSizeFlag {
		req.PageSize = &builder.pageSize
	}
	return req
}

type SearchAssignedUserPathReqBodyBuilder struct {
	roleId                  string
	roleIdFlag              bool
	managementScopeList     []*ManagementScope
	managementScopeListFlag bool
	searchMethod            string
	searchMethodFlag        bool
	pageToken               string
	pageTokenFlag           bool
	pageSize                string
	pageSizeFlag            bool
}

func NewSearchAssignedUserPathReqBodyBuilder() *SearchAssignedUserPathReqBodyBuilder {
	builder := &SearchAssignedUserPathReqBodyBuilder{}
	return builder
}

// 角色 ID，仅支持组织类角色， 角色 ID 可通过【批量获取角色列表】接口获取
//
// 示例值：100
func (builder *SearchAssignedUserPathReqBodyBuilder) RoleId(roleId string) *SearchAssignedUserPathReqBodyBuilder {
	builder.roleId = roleId
	builder.roleIdFlag = true
	return builder
}

// 管理范围信息
//
// 示例值：
func (builder *SearchAssignedUserPathReqBodyBuilder) ManagementScopeList(managementScopeList []*ManagementScope) *SearchAssignedUserPathReqBodyBuilder {
	builder.managementScopeList = managementScopeList
	builder.managementScopeListFlag = true
	return builder
}

// 查找方式;;可选值有：;- 1：只查找指定 部门/工作地点/公司/社保城市，如无授权信息则返回为空;- 2：当指定的 部门/工作地点/公司/社保城市 无授权信息，向上查找第一个授权记录并直接返回
//
// 示例值：1
func (builder *SearchAssignedUserPathReqBodyBuilder) SearchMethod(searchMethod string) *SearchAssignedUserPathReqBodyBuilder {
	builder.searchMethod = searchMethod
	builder.searchMethodFlag = true
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
func (builder *SearchAssignedUserPathReqBodyBuilder) PageToken(pageToken string) *SearchAssignedUserPathReqBodyBuilder {
	builder.pageToken = pageToken
	builder.pageTokenFlag = true
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *SearchAssignedUserPathReqBodyBuilder) PageSize(pageSize string) *SearchAssignedUserPathReqBodyBuilder {
	builder.pageSize = pageSize
	builder.pageSizeFlag = true
	return builder
}

func (builder *SearchAssignedUserPathReqBodyBuilder) Build() (*SearchAssignedUserReqBody, error) {
	req := &SearchAssignedUserReqBody{}
	if builder.roleIdFlag {
		req.RoleId = &builder.roleId
	}
	if builder.managementScopeListFlag {
		req.ManagementScopeList = builder.managementScopeList
	}
	if builder.searchMethodFlag {
		req.SearchMethod = &builder.searchMethod
	}
	if builder.pageTokenFlag {
		req.PageToken = &builder.pageToken
	}
	if builder.pageSizeFlag {
		req.PageSize = &builder.pageSize
	}
	return req, nil
}

type SearchAssignedUserReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchAssignedUserReqBody
}

func NewSearchAssignedUserReqBuilder() *SearchAssignedUserReqBuilder {
	builder := &SearchAssignedUserReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *SearchAssignedUserReqBuilder) UserIdType(userIdType string) *SearchAssignedUserReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 查询组织类角色的授权信息
func (builder *SearchAssignedUserReqBuilder) Body(body *SearchAssignedUserReqBody) *SearchAssignedUserReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchAssignedUserReqBuilder) Build() *SearchAssignedUserReq {
	req := &SearchAssignedUserReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchAssignedUserReqBody struct {
	RoleId *string `json:"role_id,omitempty"` // 角色 ID，仅支持组织类角色， 角色 ID 可通过【批量获取角色列表】接口获取

	ManagementScopeList []*ManagementScope `json:"management_scope_list,omitempty"` // 管理范围信息

	SearchMethod *string `json:"search_method,omitempty"` // 查找方式;;可选值有：;- 1：只查找指定 部门/工作地点/公司/社保城市，如无授权信息则返回为空;- 2：当指定的 部门/工作地点/公司/社保城市 无授权信息，向上查找第一个授权记录并直接返回

	PageToken *string `json:"page_token,omitempty"` // 页码标识，获取第一页传空，每次查询会返回下一页的page_token

	PageSize *string `json:"page_size,omitempty"` // 每页获取记录数量，最大100
}

type SearchAssignedUserReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchAssignedUserReqBody `body:""`
}

type SearchAssignedUserRespData struct {
	Items []*RoleAuthorization `json:"items,omitempty"` // 用户授权信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type SearchAssignedUserResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchAssignedUserRespData `json:"data"` // 业务数据
}

func (resp *SearchAssignedUserResp) Success() bool {
	return resp.Code == 0
}

type AddRoleAssignAuthorizationReqBodyBuilder struct {
	assignedOrganizationItems     [][]*AssignedOrganizationWithCode // 授权
	assignedOrganizationItemsFlag bool
}

func NewAddRoleAssignAuthorizationReqBodyBuilder() *AddRoleAssignAuthorizationReqBodyBuilder {
	builder := &AddRoleAssignAuthorizationReqBodyBuilder{}
	return builder
}

// 授权
//
//示例值：67489937334909845
func (builder *AddRoleAssignAuthorizationReqBodyBuilder) AssignedOrganizationItems(assignedOrganizationItems [][]*AssignedOrganizationWithCode) *AddRoleAssignAuthorizationReqBodyBuilder {
	builder.assignedOrganizationItems = assignedOrganizationItems
	builder.assignedOrganizationItemsFlag = true
	return builder
}

func (builder *AddRoleAssignAuthorizationReqBodyBuilder) Build() *AddRoleAssignAuthorizationReqBody {
	req := &AddRoleAssignAuthorizationReqBody{}
	if builder.assignedOrganizationItemsFlag {
		req.AssignedOrganizationItems = builder.assignedOrganizationItems
	}
	return req
}

type AddRoleAssignAuthorizationPathReqBodyBuilder struct {
	assignedOrganizationItems     [][]*AssignedOrganizationWithCode
	assignedOrganizationItemsFlag bool
}

func NewAddRoleAssignAuthorizationPathReqBodyBuilder() *AddRoleAssignAuthorizationPathReqBodyBuilder {
	builder := &AddRoleAssignAuthorizationPathReqBodyBuilder{}
	return builder
}

// 授权
//
// 示例值：67489937334909845
func (builder *AddRoleAssignAuthorizationPathReqBodyBuilder) AssignedOrganizationItems(assignedOrganizationItems [][]*AssignedOrganizationWithCode) *AddRoleAssignAuthorizationPathReqBodyBuilder {
	builder.assignedOrganizationItems = assignedOrganizationItems
	builder.assignedOrganizationItemsFlag = true
	return builder
}

func (builder *AddRoleAssignAuthorizationPathReqBodyBuilder) Build() (*AddRoleAssignAuthorizationReqBody, error) {
	req := &AddRoleAssignAuthorizationReqBody{}
	if builder.assignedOrganizationItemsFlag {
		req.AssignedOrganizationItems = builder.assignedOrganizationItems
	}
	return req, nil
}

type AddRoleAssignAuthorizationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *AddRoleAssignAuthorizationReqBody
}

func NewAddRoleAssignAuthorizationReqBuilder() *AddRoleAssignAuthorizationReqBuilder {
	builder := &AddRoleAssignAuthorizationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员 ID
//
// 示例值：67489937334909845
func (builder *AddRoleAssignAuthorizationReqBuilder) EmploymentId(employmentId string) *AddRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *AddRoleAssignAuthorizationReqBuilder) UserIdType(userIdType string) *AddRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 角色 ID
//
// 示例值：67489937334909845
func (builder *AddRoleAssignAuthorizationReqBuilder) RoleId(roleId string) *AddRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("role_id", fmt.Sprint(roleId))
	return builder
}

// 追加更新组织类授权
func (builder *AddRoleAssignAuthorizationReqBuilder) Body(body *AddRoleAssignAuthorizationReqBody) *AddRoleAssignAuthorizationReqBuilder {
	builder.body = body
	return builder
}

func (builder *AddRoleAssignAuthorizationReqBuilder) Build() *AddRoleAssignAuthorizationReq {
	req := &AddRoleAssignAuthorizationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type AddRoleAssignAuthorizationReqBody struct {
	AssignedOrganizationItems [][]*AssignedOrganizationWithCode `json:"assigned_organization_items,omitempty"` // 授权
}

type AddRoleAssignAuthorizationReq struct {
	apiReq *larkcore.ApiReq
	Body   *AddRoleAssignAuthorizationReqBody `body:""`
}

type AddRoleAssignAuthorizationRespData struct {
	AssignId *string `json:"assign_id,omitempty"` // 授权id
}

type AddRoleAssignAuthorizationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *AddRoleAssignAuthorizationRespData `json:"data"` // 业务数据
}

func (resp *AddRoleAssignAuthorizationResp) Success() bool {
	return resp.Code == 0
}

type GetByParamAuthorizationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetByParamAuthorizationReqBuilder() *GetByParamAuthorizationReqBuilder {
	builder := &GetByParamAuthorizationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员 ID
//
// 示例值：67489937334909845
func (builder *GetByParamAuthorizationReqBuilder) EmploymentId(employmentId string) *GetByParamAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *GetByParamAuthorizationReqBuilder) UserIdType(userIdType string) *GetByParamAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetByParamAuthorizationReqBuilder) Build() *GetByParamAuthorizationReq {
	req := &GetByParamAuthorizationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetByParamAuthorizationReq struct {
	apiReq *larkcore.ApiReq
}

type GetByParamAuthorizationRespData struct {
	RoleAuthorization *RoleAuthorization `json:"role_authorization,omitempty"` // 角色授权信息
}

type GetByParamAuthorizationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetByParamAuthorizationRespData `json:"data"` // 业务数据
}

func (resp *GetByParamAuthorizationResp) Success() bool {
	return resp.Code == 0
}

type QueryAuthorizationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryAuthorizationReqBuilder() *QueryAuthorizationReqBuilder {
	builder := &QueryAuthorizationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 员工ID列表，最大100个（不传则默认查询全部员工）
//
// 示例值：
func (builder *QueryAuthorizationReqBuilder) EmploymentIdList(employmentIdList []string) *QueryAuthorizationReqBuilder {
	for _, v := range employmentIdList {
		builder.apiReq.QueryParams.Add("employment_id_list", fmt.Sprint(v))
	}
	return builder
}

// 角色 ID 列表，最大 100 个
//
// 示例值：
func (builder *QueryAuthorizationReqBuilder) RoleIdList(roleIdList []string) *QueryAuthorizationReqBuilder {
	for _, v := range roleIdList {
		builder.apiReq.QueryParams.Add("role_id_list", fmt.Sprint(v))
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：6969864184272078374
func (builder *QueryAuthorizationReqBuilder) PageToken(pageToken string) *QueryAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大20
//
// 示例值：20
func (builder *QueryAuthorizationReqBuilder) PageSize(pageSize string) *QueryAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *QueryAuthorizationReqBuilder) UserIdType(userIdType string) *QueryAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 授权时间大于
//
// 示例值：1729773628
func (builder *QueryAuthorizationReqBuilder) UpdatedAtGte(updatedAtGte string) *QueryAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("updated_at_gte", fmt.Sprint(updatedAtGte))
	return builder
}

// 授权时间小于
//
// 示例值：1729773628
func (builder *QueryAuthorizationReqBuilder) UpdatedAtLte(updatedAtLte string) *QueryAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("updated_at_lte", fmt.Sprint(updatedAtLte))
	return builder
}

func (builder *QueryAuthorizationReqBuilder) Build() *QueryAuthorizationReq {
	req := &QueryAuthorizationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryAuthorizationReq struct {
	apiReq *larkcore.ApiReq
}

type QueryAuthorizationRespData struct {
	Items []*RoleAuthorization `json:"items,omitempty"` // 查询的用户授权信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type QueryAuthorizationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryAuthorizationRespData `json:"data"` // 业务数据
}

func (resp *QueryAuthorizationResp) Success() bool {
	return resp.Code == 0
}

type RemoveRoleAssignAuthorizationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewRemoveRoleAssignAuthorizationReqBuilder() *RemoveRoleAssignAuthorizationReqBuilder {
	builder := &RemoveRoleAssignAuthorizationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员 ID
//
// 示例值：67489937334909845
func (builder *RemoveRoleAssignAuthorizationReqBuilder) EmploymentId(employmentId string) *RemoveRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *RemoveRoleAssignAuthorizationReqBuilder) UserIdType(userIdType string) *RemoveRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 角色 ID
//
// 示例值：67489937334909845
func (builder *RemoveRoleAssignAuthorizationReqBuilder) RoleId(roleId string) *RemoveRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("role_id", fmt.Sprint(roleId))
	return builder
}

func (builder *RemoveRoleAssignAuthorizationReqBuilder) Build() *RemoveRoleAssignAuthorizationReq {
	req := &RemoveRoleAssignAuthorizationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type RemoveRoleAssignAuthorizationReq struct {
	apiReq *larkcore.ApiReq
}

type RemoveRoleAssignAuthorizationRespData struct {
	AssignId *string `json:"assign_id,omitempty"` // 授权id
}

type RemoveRoleAssignAuthorizationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RemoveRoleAssignAuthorizationRespData `json:"data"` // 业务数据
}

func (resp *RemoveRoleAssignAuthorizationResp) Success() bool {
	return resp.Code == 0
}

type UpdateRoleAssignAuthorizationReqBodyBuilder struct {
	assignedOrganizationItems     [][]*AssignedOrganizationWithCode // 授权
	assignedOrganizationItemsFlag bool
}

func NewUpdateRoleAssignAuthorizationReqBodyBuilder() *UpdateRoleAssignAuthorizationReqBodyBuilder {
	builder := &UpdateRoleAssignAuthorizationReqBodyBuilder{}
	return builder
}

// 授权
//
//示例值：67489937334909845
func (builder *UpdateRoleAssignAuthorizationReqBodyBuilder) AssignedOrganizationItems(assignedOrganizationItems [][]*AssignedOrganizationWithCode) *UpdateRoleAssignAuthorizationReqBodyBuilder {
	builder.assignedOrganizationItems = assignedOrganizationItems
	builder.assignedOrganizationItemsFlag = true
	return builder
}

func (builder *UpdateRoleAssignAuthorizationReqBodyBuilder) Build() *UpdateRoleAssignAuthorizationReqBody {
	req := &UpdateRoleAssignAuthorizationReqBody{}
	if builder.assignedOrganizationItemsFlag {
		req.AssignedOrganizationItems = builder.assignedOrganizationItems
	}
	return req
}

type UpdateRoleAssignAuthorizationPathReqBodyBuilder struct {
	assignedOrganizationItems     [][]*AssignedOrganizationWithCode
	assignedOrganizationItemsFlag bool
}

func NewUpdateRoleAssignAuthorizationPathReqBodyBuilder() *UpdateRoleAssignAuthorizationPathReqBodyBuilder {
	builder := &UpdateRoleAssignAuthorizationPathReqBodyBuilder{}
	return builder
}

// 授权
//
// 示例值：67489937334909845
func (builder *UpdateRoleAssignAuthorizationPathReqBodyBuilder) AssignedOrganizationItems(assignedOrganizationItems [][]*AssignedOrganizationWithCode) *UpdateRoleAssignAuthorizationPathReqBodyBuilder {
	builder.assignedOrganizationItems = assignedOrganizationItems
	builder.assignedOrganizationItemsFlag = true
	return builder
}

func (builder *UpdateRoleAssignAuthorizationPathReqBodyBuilder) Build() (*UpdateRoleAssignAuthorizationReqBody, error) {
	req := &UpdateRoleAssignAuthorizationReqBody{}
	if builder.assignedOrganizationItemsFlag {
		req.AssignedOrganizationItems = builder.assignedOrganizationItems
	}
	return req, nil
}

type UpdateRoleAssignAuthorizationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *UpdateRoleAssignAuthorizationReqBody
}

func NewUpdateRoleAssignAuthorizationReqBuilder() *UpdateRoleAssignAuthorizationReqBuilder {
	builder := &UpdateRoleAssignAuthorizationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员 ID
//
// 示例值：67489937334909845
func (builder *UpdateRoleAssignAuthorizationReqBuilder) EmploymentId(employmentId string) *UpdateRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *UpdateRoleAssignAuthorizationReqBuilder) UserIdType(userIdType string) *UpdateRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 角色 ID
//
// 示例值：67489937334909845
func (builder *UpdateRoleAssignAuthorizationReqBuilder) RoleId(roleId string) *UpdateRoleAssignAuthorizationReqBuilder {
	builder.apiReq.QueryParams.Set("role_id", fmt.Sprint(roleId))
	return builder
}

// 覆盖更新组织类授权
func (builder *UpdateRoleAssignAuthorizationReqBuilder) Body(body *UpdateRoleAssignAuthorizationReqBody) *UpdateRoleAssignAuthorizationReqBuilder {
	builder.body = body
	return builder
}

func (builder *UpdateRoleAssignAuthorizationReqBuilder) Build() *UpdateRoleAssignAuthorizationReq {
	req := &UpdateRoleAssignAuthorizationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type UpdateRoleAssignAuthorizationReqBody struct {
	AssignedOrganizationItems [][]*AssignedOrganizationWithCode `json:"assigned_organization_items,omitempty"` // 授权
}

type UpdateRoleAssignAuthorizationReq struct {
	apiReq *larkcore.ApiReq
	Body   *UpdateRoleAssignAuthorizationReqBody `body:""`
}

type UpdateRoleAssignAuthorizationRespData struct {
	AssignId *string `json:"assign_id,omitempty"` // 授权id
}

type UpdateRoleAssignAuthorizationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UpdateRoleAssignAuthorizationRespData `json:"data"` // 业务数据
}

func (resp *UpdateRoleAssignAuthorizationResp) Success() bool {
	return resp.Code == 0
}

type ConvertCommonDataIdReqBodyBuilder struct {
	ids     []string // ID 列表（最多传入 100 个 ID，ID 长度限制 50 个字符）
	idsFlag bool
}

func NewConvertCommonDataIdReqBodyBuilder() *ConvertCommonDataIdReqBodyBuilder {
	builder := &ConvertCommonDataIdReqBodyBuilder{}
	return builder
}

// ID 列表（最多传入 100 个 ID，ID 长度限制 50 个字符）
//
//示例值：
func (builder *ConvertCommonDataIdReqBodyBuilder) Ids(ids []string) *ConvertCommonDataIdReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

func (builder *ConvertCommonDataIdReqBodyBuilder) Build() *ConvertCommonDataIdReqBody {
	req := &ConvertCommonDataIdReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	return req
}

type ConvertCommonDataIdPathReqBodyBuilder struct {
	ids     []string
	idsFlag bool
}

func NewConvertCommonDataIdPathReqBodyBuilder() *ConvertCommonDataIdPathReqBodyBuilder {
	builder := &ConvertCommonDataIdPathReqBodyBuilder{}
	return builder
}

// ID 列表（最多传入 100 个 ID，ID 长度限制 50 个字符）
//
// 示例值：
func (builder *ConvertCommonDataIdPathReqBodyBuilder) Ids(ids []string) *ConvertCommonDataIdPathReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

func (builder *ConvertCommonDataIdPathReqBodyBuilder) Build() (*ConvertCommonDataIdReqBody, error) {
	req := &ConvertCommonDataIdReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	return req, nil
}

type ConvertCommonDataIdReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ConvertCommonDataIdReqBody
}

func NewConvertCommonDataIdReqBuilder() *ConvertCommonDataIdReqBuilder {
	builder := &ConvertCommonDataIdReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// ID 转换类型
//
// 示例值：1
func (builder *ConvertCommonDataIdReqBuilder) IdTransformType(idTransformType int) *ConvertCommonDataIdReqBuilder {
	builder.apiReq.QueryParams.Set("id_transform_type", fmt.Sprint(idTransformType))
	return builder
}

// 要转换的ID类型
//
// 示例值：employment_id
func (builder *ConvertCommonDataIdReqBuilder) IdType(idType string) *ConvertCommonDataIdReqBuilder {
	builder.apiReq.QueryParams.Set("id_type", fmt.Sprint(idType))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *ConvertCommonDataIdReqBuilder) FeishuUserIdType(feishuUserIdType string) *ConvertCommonDataIdReqBuilder {
	builder.apiReq.QueryParams.Set("feishu_user_id_type", fmt.Sprint(feishuUserIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *ConvertCommonDataIdReqBuilder) FeishuDepartmentIdType(feishuDepartmentIdType string) *ConvertCommonDataIdReqBuilder {
	builder.apiReq.QueryParams.Set("feishu_department_id_type", fmt.Sprint(feishuDepartmentIdType))
	return builder
}

//
func (builder *ConvertCommonDataIdReqBuilder) Body(body *ConvertCommonDataIdReqBody) *ConvertCommonDataIdReqBuilder {
	builder.body = body
	return builder
}

func (builder *ConvertCommonDataIdReqBuilder) Build() *ConvertCommonDataIdReq {
	req := &ConvertCommonDataIdReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type ConvertCommonDataIdReqBody struct {
	Ids []string `json:"ids,omitempty"` // ID 列表（最多传入 100 个 ID，ID 长度限制 50 个字符）
}

type ConvertCommonDataIdReq struct {
	apiReq *larkcore.ApiReq
	Body   *ConvertCommonDataIdReqBody `body:""`
}

type ConvertCommonDataIdRespData struct {
	Items []*IdInfo `json:"items,omitempty"` // ID 信息列表
}

type ConvertCommonDataIdResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ConvertCommonDataIdRespData `json:"data"` // 业务数据
}

func (resp *ConvertCommonDataIdResp) Success() bool {
	return resp.Code == 0
}

type AddEnumOptionCommonDataMetaDataReqBodyBuilder struct {
	objectApiName     string // 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取
	objectApiNameFlag bool

	enumFieldApiName     string // 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取
	enumFieldApiNameFlag bool

	enumFieldOptions     []*EnumFieldOption // 新增枚举选项列表
	enumFieldOptionsFlag bool
}

func NewAddEnumOptionCommonDataMetaDataReqBodyBuilder() *AddEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder := &AddEnumOptionCommonDataMetaDataReqBodyBuilder{}
	return builder
}

// 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取
//
//示例值：probation_management
func (builder *AddEnumOptionCommonDataMetaDataReqBodyBuilder) ObjectApiName(objectApiName string) *AddEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取
//
//示例值：final_assessment_grade
func (builder *AddEnumOptionCommonDataMetaDataReqBodyBuilder) EnumFieldApiName(enumFieldApiName string) *AddEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder.enumFieldApiName = enumFieldApiName
	builder.enumFieldApiNameFlag = true
	return builder
}

// 新增枚举选项列表
//
//示例值：
func (builder *AddEnumOptionCommonDataMetaDataReqBodyBuilder) EnumFieldOptions(enumFieldOptions []*EnumFieldOption) *AddEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder.enumFieldOptions = enumFieldOptions
	builder.enumFieldOptionsFlag = true
	return builder
}

func (builder *AddEnumOptionCommonDataMetaDataReqBodyBuilder) Build() *AddEnumOptionCommonDataMetaDataReqBody {
	req := &AddEnumOptionCommonDataMetaDataReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.enumFieldApiNameFlag {
		req.EnumFieldApiName = &builder.enumFieldApiName
	}
	if builder.enumFieldOptionsFlag {
		req.EnumFieldOptions = builder.enumFieldOptions
	}
	return req
}

type AddEnumOptionCommonDataMetaDataPathReqBodyBuilder struct {
	objectApiName        string
	objectApiNameFlag    bool
	enumFieldApiName     string
	enumFieldApiNameFlag bool
	enumFieldOptions     []*EnumFieldOption
	enumFieldOptionsFlag bool
}

func NewAddEnumOptionCommonDataMetaDataPathReqBodyBuilder() *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder := &AddEnumOptionCommonDataMetaDataPathReqBodyBuilder{}
	return builder
}

// 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取
//
// 示例值：probation_management
func (builder *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder) ObjectApiName(objectApiName string) *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取
//
// 示例值：final_assessment_grade
func (builder *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder) EnumFieldApiName(enumFieldApiName string) *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder.enumFieldApiName = enumFieldApiName
	builder.enumFieldApiNameFlag = true
	return builder
}

// 新增枚举选项列表
//
// 示例值：
func (builder *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder) EnumFieldOptions(enumFieldOptions []*EnumFieldOption) *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder.enumFieldOptions = enumFieldOptions
	builder.enumFieldOptionsFlag = true
	return builder
}

func (builder *AddEnumOptionCommonDataMetaDataPathReqBodyBuilder) Build() (*AddEnumOptionCommonDataMetaDataReqBody, error) {
	req := &AddEnumOptionCommonDataMetaDataReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.enumFieldApiNameFlag {
		req.EnumFieldApiName = &builder.enumFieldApiName
	}
	if builder.enumFieldOptionsFlag {
		req.EnumFieldOptions = builder.enumFieldOptions
	}
	return req, nil
}

type AddEnumOptionCommonDataMetaDataReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *AddEnumOptionCommonDataMetaDataReqBody
}

func NewAddEnumOptionCommonDataMetaDataReqBuilder() *AddEnumOptionCommonDataMetaDataReqBuilder {
	builder := &AddEnumOptionCommonDataMetaDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：6727817538283013641
func (builder *AddEnumOptionCommonDataMetaDataReqBuilder) ClientToken(clientToken string) *AddEnumOptionCommonDataMetaDataReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

//
func (builder *AddEnumOptionCommonDataMetaDataReqBuilder) Body(body *AddEnumOptionCommonDataMetaDataReqBody) *AddEnumOptionCommonDataMetaDataReqBuilder {
	builder.body = body
	return builder
}

func (builder *AddEnumOptionCommonDataMetaDataReqBuilder) Build() *AddEnumOptionCommonDataMetaDataReq {
	req := &AddEnumOptionCommonDataMetaDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type AddEnumOptionCommonDataMetaDataReqBody struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取

	EnumFieldApiName *string `json:"enum_field_api_name,omitempty"` // 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取

	EnumFieldOptions []*EnumFieldOption `json:"enum_field_options,omitempty"` // 新增枚举选项列表
}

type AddEnumOptionCommonDataMetaDataReq struct {
	apiReq *larkcore.ApiReq
	Body   *AddEnumOptionCommonDataMetaDataReqBody `body:""`
}

type AddEnumOptionCommonDataMetaDataRespData struct {
	EnumFieldApiName *string `json:"enum_field_api_name,omitempty"` // 枚举字段 API name

	EnumFieldOptions []*EnumFieldOption `json:"enum_field_options,omitempty"` // 枚举全部选项列表
}

type AddEnumOptionCommonDataMetaDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *AddEnumOptionCommonDataMetaDataRespData `json:"data"` // 业务数据
}

func (resp *AddEnumOptionCommonDataMetaDataResp) Success() bool {
	return resp.Code == 0
}

type EditEnumOptionCommonDataMetaDataReqBodyBuilder struct {
	objectApiName     string // 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取
	objectApiNameFlag bool

	enumFieldApiName     string // 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取
	enumFieldApiNameFlag bool

	enumFieldOption     *EnumFieldOption // 枚举选项
	enumFieldOptionFlag bool
}

func NewEditEnumOptionCommonDataMetaDataReqBodyBuilder() *EditEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder := &EditEnumOptionCommonDataMetaDataReqBodyBuilder{}
	return builder
}

// 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取
//
//示例值：probation_management
func (builder *EditEnumOptionCommonDataMetaDataReqBodyBuilder) ObjectApiName(objectApiName string) *EditEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取
//
//示例值：final_assessment_grade
func (builder *EditEnumOptionCommonDataMetaDataReqBodyBuilder) EnumFieldApiName(enumFieldApiName string) *EditEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder.enumFieldApiName = enumFieldApiName
	builder.enumFieldApiNameFlag = true
	return builder
}

// 枚举选项
//
//示例值：
func (builder *EditEnumOptionCommonDataMetaDataReqBodyBuilder) EnumFieldOption(enumFieldOption *EnumFieldOption) *EditEnumOptionCommonDataMetaDataReqBodyBuilder {
	builder.enumFieldOption = enumFieldOption
	builder.enumFieldOptionFlag = true
	return builder
}

func (builder *EditEnumOptionCommonDataMetaDataReqBodyBuilder) Build() *EditEnumOptionCommonDataMetaDataReqBody {
	req := &EditEnumOptionCommonDataMetaDataReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.enumFieldApiNameFlag {
		req.EnumFieldApiName = &builder.enumFieldApiName
	}
	if builder.enumFieldOptionFlag {
		req.EnumFieldOption = builder.enumFieldOption
	}
	return req
}

type EditEnumOptionCommonDataMetaDataPathReqBodyBuilder struct {
	objectApiName        string
	objectApiNameFlag    bool
	enumFieldApiName     string
	enumFieldApiNameFlag bool
	enumFieldOption      *EnumFieldOption
	enumFieldOptionFlag  bool
}

func NewEditEnumOptionCommonDataMetaDataPathReqBodyBuilder() *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder := &EditEnumOptionCommonDataMetaDataPathReqBodyBuilder{}
	return builder
}

// 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取
//
// 示例值：probation_management
func (builder *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder) ObjectApiName(objectApiName string) *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取
//
// 示例值：final_assessment_grade
func (builder *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder) EnumFieldApiName(enumFieldApiName string) *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder.enumFieldApiName = enumFieldApiName
	builder.enumFieldApiNameFlag = true
	return builder
}

// 枚举选项
//
// 示例值：
func (builder *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder) EnumFieldOption(enumFieldOption *EnumFieldOption) *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder {
	builder.enumFieldOption = enumFieldOption
	builder.enumFieldOptionFlag = true
	return builder
}

func (builder *EditEnumOptionCommonDataMetaDataPathReqBodyBuilder) Build() (*EditEnumOptionCommonDataMetaDataReqBody, error) {
	req := &EditEnumOptionCommonDataMetaDataReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.enumFieldApiNameFlag {
		req.EnumFieldApiName = &builder.enumFieldApiName
	}
	if builder.enumFieldOptionFlag {
		req.EnumFieldOption = builder.enumFieldOption
	}
	return req, nil
}

type EditEnumOptionCommonDataMetaDataReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *EditEnumOptionCommonDataMetaDataReqBody
}

func NewEditEnumOptionCommonDataMetaDataReqBuilder() *EditEnumOptionCommonDataMetaDataReqBuilder {
	builder := &EditEnumOptionCommonDataMetaDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：6727817538283013641
func (builder *EditEnumOptionCommonDataMetaDataReqBuilder) ClientToken(clientToken string) *EditEnumOptionCommonDataMetaDataReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

//
func (builder *EditEnumOptionCommonDataMetaDataReqBuilder) Body(body *EditEnumOptionCommonDataMetaDataReqBody) *EditEnumOptionCommonDataMetaDataReqBuilder {
	builder.body = body
	return builder
}

func (builder *EditEnumOptionCommonDataMetaDataReqBuilder) Build() *EditEnumOptionCommonDataMetaDataReq {
	req := &EditEnumOptionCommonDataMetaDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type EditEnumOptionCommonDataMetaDataReqBody struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 所属对象 API name，可通过[获取飞书人事对象列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/list_object_api_name)接口中返回的 `object_api_name` 字段获取

	EnumFieldApiName *string `json:"enum_field_api_name,omitempty"` // 枚举字段 API name，可通过[获取自定义字段列表](https://open.feishu.cn/document/server-docs/corehr-v1/basic-infomation/custom_field/query)接口中返回的 `custom_api_name` 字段获取

	EnumFieldOption *EnumFieldOption `json:"enum_field_option,omitempty"` // 枚举选项
}

type EditEnumOptionCommonDataMetaDataReq struct {
	apiReq *larkcore.ApiReq
	Body   *EditEnumOptionCommonDataMetaDataReqBody `body:""`
}

type EditEnumOptionCommonDataMetaDataRespData struct {
	EnumFieldApiName *string `json:"enum_field_api_name,omitempty"` // 枚举字段 API name

	EnumFieldOptions []*EnumFieldOption `json:"enum_field_options,omitempty"` // 枚举全部选项列表
}

type EditEnumOptionCommonDataMetaDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *EditEnumOptionCommonDataMetaDataRespData `json:"data"` // 业务数据
}

func (resp *EditEnumOptionCommonDataMetaDataResp) Success() bool {
	return resp.Code == 0
}

type CreateCompanyReqBuilder struct {
	apiReq  *larkcore.ApiReq
	company *Company
}

func NewCreateCompanyReqBuilder() *CreateCompanyReqBuilder {
	builder := &CreateCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateCompanyReqBuilder) ClientToken(clientToken string) *CreateCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建公司
func (builder *CreateCompanyReqBuilder) Company(company *Company) *CreateCompanyReqBuilder {
	builder.company = company
	return builder
}

func (builder *CreateCompanyReqBuilder) Build() *CreateCompanyReq {
	req := &CreateCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.company
	return req
}

type CreateCompanyReq struct {
	apiReq  *larkcore.ApiReq
	Company *Company `body:""`
}

type CreateCompanyRespData struct {
	Company *Company `json:"company,omitempty"` // 创建成功的公司信息
}

type CreateCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateCompanyRespData `json:"data"` // 业务数据
}

func (resp *CreateCompanyResp) Success() bool {
	return resp.Code == 0
}

type DeleteCompanyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteCompanyReqBuilder() *DeleteCompanyReqBuilder {
	builder := &DeleteCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的公司ID
//
// 示例值：341432424
func (builder *DeleteCompanyReqBuilder) CompanyId(companyId string) *DeleteCompanyReqBuilder {
	builder.apiReq.PathParams.Set("company_id", fmt.Sprint(companyId))
	return builder
}

func (builder *DeleteCompanyReqBuilder) Build() *DeleteCompanyReq {
	req := &DeleteCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteCompanyReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteCompanyResp) Success() bool {
	return resp.Code == 0
}

type GetCompanyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetCompanyReqBuilder() *GetCompanyReqBuilder {
	builder := &GetCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 公司 ID
//
// 示例值：151515
func (builder *GetCompanyReqBuilder) CompanyId(companyId string) *GetCompanyReqBuilder {
	builder.apiReq.PathParams.Set("company_id", fmt.Sprint(companyId))
	return builder
}

func (builder *GetCompanyReqBuilder) Build() *GetCompanyReq {
	req := &GetCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetCompanyReq struct {
	apiReq *larkcore.ApiReq
}

type GetCompanyRespData struct {
	Company *Company `json:"company,omitempty"` // 公司信息
}

type GetCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetCompanyRespData `json:"data"` // 业务数据
}

func (resp *GetCompanyResp) Success() bool {
	return resp.Code == 0
}

type ListCompanyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListCompanyReqBuilder() *ListCompanyReqBuilder {
	builder := &ListCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListCompanyReqBuilder) PageToken(pageToken string) *ListCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListCompanyReqBuilder) PageSize(pageSize string) *ListCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListCompanyReqBuilder) Build() *ListCompanyReq {
	req := &ListCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListCompanyReq struct {
	apiReq *larkcore.ApiReq
}

type ListCompanyRespData struct {
	Items []*Company `json:"items,omitempty"` // 查询的公司信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListCompanyRespData `json:"data"` // 业务数据
}

func (resp *ListCompanyResp) Success() bool {
	return resp.Code == 0
}

type PatchCompanyReqBuilder struct {
	apiReq  *larkcore.ApiReq
	company *Company
}

func NewPatchCompanyReqBuilder() *PatchCompanyReqBuilder {
	builder := &PatchCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要更新的公司 ID
//
// 示例值：1616161616
func (builder *PatchCompanyReqBuilder) CompanyId(companyId string) *PatchCompanyReqBuilder {
	builder.apiReq.PathParams.Set("company_id", fmt.Sprint(companyId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchCompanyReqBuilder) ClientToken(clientToken string) *PatchCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新公司数据
func (builder *PatchCompanyReqBuilder) Company(company *Company) *PatchCompanyReqBuilder {
	builder.company = company
	return builder
}

func (builder *PatchCompanyReqBuilder) Build() *PatchCompanyReq {
	req := &PatchCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.company
	return req
}

type PatchCompanyReq struct {
	apiReq  *larkcore.ApiReq
	Company *Company `body:""`
}

type PatchCompanyRespData struct {
	Company *Company `json:"company,omitempty"` //
}

type PatchCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchCompanyRespData `json:"data"` // 业务数据
}

func (resp *PatchCompanyResp) Success() bool {
	return resp.Code == 0
}

type MatchCompensationStandardReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewMatchCompensationStandardReqBuilder() *MatchCompensationStandardReqBuilder {
	builder := &MatchCompensationStandardReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：open_id
func (builder *MatchCompensationStandardReqBuilder) UserIdType(userIdType string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：
func (builder *MatchCompensationStandardReqBuilder) DepartmentIdType(departmentIdType string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 雇员ID
//
// 示例值：7124293751317038636
func (builder *MatchCompensationStandardReqBuilder) EmploymentId(employmentId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 薪资标准的关联对象，项目或者指标
//
// 示例值：
func (builder *MatchCompensationStandardReqBuilder) ReferenceObjectApi(referenceObjectApi string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("reference_object_api", fmt.Sprint(referenceObjectApi))
	return builder
}

// 薪资标准关联对象ID
//
// 示例值：7156853394442044972
func (builder *MatchCompensationStandardReqBuilder) ReferenceObjectId(referenceObjectId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("reference_object_id", fmt.Sprint(referenceObjectId))
	return builder
}

// 部门ID
//
// 示例值：od-53899868dd0da32292a2d809f0518c8f
func (builder *MatchCompensationStandardReqBuilder) DepartmentId(departmentId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

// 工作地点ID
//
// 示例值：7094869485965870636
func (builder *MatchCompensationStandardReqBuilder) WorkLocationId(workLocationId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("work_location_id", fmt.Sprint(workLocationId))
	return builder
}

// 公司ID
//
// 示例值：7091599096804394540
func (builder *MatchCompensationStandardReqBuilder) CompanyId(companyId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("company_id", fmt.Sprint(companyId))
	return builder
}

// 职务序列ID
//
// 示例值：7039313681989502508
func (builder *MatchCompensationStandardReqBuilder) JobFamilyId(jobFamilyId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("job_family_id", fmt.Sprint(jobFamilyId))
	return builder
}

// 职务ID
//
// 示例值：7342883436321097257
func (builder *MatchCompensationStandardReqBuilder) JobId(jobId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("job_id", fmt.Sprint(jobId))
	return builder
}

// 职级ID
//
// 示例值：7086415175263258156
func (builder *MatchCompensationStandardReqBuilder) JobLevelId(jobLevelId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("job_level_id", fmt.Sprint(jobLevelId))
	return builder
}

// 人员类型ID
//
// 示例值：7039310401359775276
func (builder *MatchCompensationStandardReqBuilder) EmployeeTypeId(employeeTypeId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("employee_type_id", fmt.Sprint(employeeTypeId))
	return builder
}

// 招聘类型
//
// 示例值：experienced_professionals
func (builder *MatchCompensationStandardReqBuilder) RecruitmentType(recruitmentType string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("recruitment_type", fmt.Sprint(recruitmentType))
	return builder
}

// 定调薪原因ID
//
// 示例值：6967639606963471117
func (builder *MatchCompensationStandardReqBuilder) CpstChangeReasonId(cpstChangeReasonId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("cpst_change_reason_id", fmt.Sprint(cpstChangeReasonId))
	return builder
}

// 薪资方案ID
//
// 示例值：6967639606963471118
func (builder *MatchCompensationStandardReqBuilder) CpstPlanId(cpstPlanId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("cpst_plan_id", fmt.Sprint(cpstPlanId))
	return builder
}

// 薪级薪等ID
//
// 示例值：6967639606963471119
func (builder *MatchCompensationStandardReqBuilder) CpstSalaryLevelId(cpstSalaryLevelId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("cpst_salary_level_id", fmt.Sprint(cpstSalaryLevelId))
	return builder
}

// 生效时间
//
// 示例值：1660924800000
func (builder *MatchCompensationStandardReqBuilder) EffectiveTime(effectiveTime string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("effective_time", fmt.Sprint(effectiveTime))
	return builder
}

// 绩效评估项ID
//
// 示例值：7382324314454492716
func (builder *MatchCompensationStandardReqBuilder) PerformanceIndicatorId(performanceIndicatorId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("performance_indicator_id", fmt.Sprint(performanceIndicatorId))
	return builder
}

// 绩效等级ID
//
// 示例值：7382324475995670060
func (builder *MatchCompensationStandardReqBuilder) PerformanceScoreGradeId(performanceScoreGradeId string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("performance_score_grade_id", fmt.Sprint(performanceScoreGradeId))
	return builder
}

// 自定义组织1 IDs
//
// 示例值：7530538330711508524
func (builder *MatchCompensationStandardReqBuilder) CustomOrg1Ids(customOrg1Ids string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("custom_org_1_ids", fmt.Sprint(customOrg1Ids))
	return builder
}

// 自定义组织2 IDs
//
// 示例值：7530538330711508524
func (builder *MatchCompensationStandardReqBuilder) CustomOrg2Ids(customOrg2Ids string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("custom_org_2_ids", fmt.Sprint(customOrg2Ids))
	return builder
}

// 自定义组织3 IDs
//
// 示例值：7530538330711508524
func (builder *MatchCompensationStandardReqBuilder) CustomOrg3Ids(customOrg3Ids string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("custom_org_3_ids", fmt.Sprint(customOrg3Ids))
	return builder
}

// 自定义组织4 IDs
//
// 示例值：7530538330711508524
func (builder *MatchCompensationStandardReqBuilder) CustomOrg4Ids(customOrg4Ids string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("custom_org_4_ids", fmt.Sprint(customOrg4Ids))
	return builder
}

// 自定义组织5 IDs
//
// 示例值：7530538330711508524
func (builder *MatchCompensationStandardReqBuilder) CustomOrg5Ids(customOrg5Ids string) *MatchCompensationStandardReqBuilder {
	builder.apiReq.QueryParams.Set("custom_org_5_ids", fmt.Sprint(customOrg5Ids))
	return builder
}

func (builder *MatchCompensationStandardReqBuilder) Build() *MatchCompensationStandardReq {
	req := &MatchCompensationStandardReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type MatchCompensationStandardReq struct {
	apiReq *larkcore.ApiReq
}

type MatchCompensationStandardRespData struct {
	StandardId *string `json:"standard_id,omitempty"` // 薪资标准表ID

	Grade *CpstGrade `json:"grade,omitempty"` // 薪资等级

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间
}

type MatchCompensationStandardResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *MatchCompensationStandardRespData `json:"data"` // 业务数据
}

func (resp *MatchCompensationStandardResp) Success() bool {
	return resp.Code == 0
}

type CreateContractReqBuilder struct {
	apiReq   *larkcore.ApiReq
	contract *Contract
}

func NewCreateContractReqBuilder() *CreateContractReqBuilder {
	builder := &CreateContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateContractReqBuilder) ClientToken(clientToken string) *CreateContractReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建合同
func (builder *CreateContractReqBuilder) Contract(contract *Contract) *CreateContractReqBuilder {
	builder.contract = contract
	return builder
}

func (builder *CreateContractReqBuilder) Build() *CreateContractReq {
	req := &CreateContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.contract
	return req
}

type CreateContractReq struct {
	apiReq   *larkcore.ApiReq
	Contract *Contract `body:""`
}

type CreateContractRespData struct {
	Contract *Contract `json:"contract,omitempty"` // 创建成功的合同信息
}

type CreateContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateContractRespData `json:"data"` // 业务数据
}

func (resp *CreateContractResp) Success() bool {
	return resp.Code == 0
}

type DeleteContractReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteContractReqBuilder() *DeleteContractReqBuilder {
	builder := &DeleteContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的合同 ID
//
// 示例值：4137834332
func (builder *DeleteContractReqBuilder) ContractId(contractId string) *DeleteContractReqBuilder {
	builder.apiReq.PathParams.Set("contract_id", fmt.Sprint(contractId))
	return builder
}

func (builder *DeleteContractReqBuilder) Build() *DeleteContractReq {
	req := &DeleteContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteContractReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteContractResp) Success() bool {
	return resp.Code == 0
}

type GetContractReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetContractReqBuilder() *GetContractReqBuilder {
	builder := &GetContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 合同ID
//
// 示例值：151515
func (builder *GetContractReqBuilder) ContractId(contractId string) *GetContractReqBuilder {
	builder.apiReq.PathParams.Set("contract_id", fmt.Sprint(contractId))
	return builder
}

func (builder *GetContractReqBuilder) Build() *GetContractReq {
	req := &GetContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetContractReq struct {
	apiReq *larkcore.ApiReq
}

type GetContractRespData struct {
	Contract *Contract `json:"contract,omitempty"` // 合同信息
}

type GetContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetContractRespData `json:"data"` // 业务数据
}

func (resp *GetContractResp) Success() bool {
	return resp.Code == 0
}

type ListContractReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListContractReqBuilder() *ListContractReqBuilder {
	builder := &ListContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListContractReqBuilder) PageToken(pageToken string) *ListContractReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListContractReqBuilder) PageSize(pageSize string) *ListContractReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListContractReqBuilder) Build() *ListContractReq {
	req := &ListContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListContractReq struct {
	apiReq *larkcore.ApiReq
}

type ListContractRespData struct {
	Items []*Contract `json:"items,omitempty"` // 查询的合同信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListContractRespData `json:"data"` // 业务数据
}

func (resp *ListContractResp) Success() bool {
	return resp.Code == 0
}

type PatchContractReqBuilder struct {
	apiReq   *larkcore.ApiReq
	contract *Contract
}

func NewPatchContractReqBuilder() *PatchContractReqBuilder {
	builder := &PatchContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 合同ID
//
// 示例值：1616161616
func (builder *PatchContractReqBuilder) ContractId(contractId string) *PatchContractReqBuilder {
	builder.apiReq.PathParams.Set("contract_id", fmt.Sprint(contractId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchContractReqBuilder) ClientToken(clientToken string) *PatchContractReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新合同
func (builder *PatchContractReqBuilder) Contract(contract *Contract) *PatchContractReqBuilder {
	builder.contract = contract
	return builder
}

func (builder *PatchContractReqBuilder) Build() *PatchContractReq {
	req := &PatchContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.contract
	return req
}

type PatchContractReq struct {
	apiReq   *larkcore.ApiReq
	Contract *Contract `body:""`
}

type PatchContractRespData struct {
	Contract *Contract `json:"contract,omitempty"` // 合同
}

type PatchContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchContractRespData `json:"data"` // 业务数据
}

func (resp *PatchContractResp) Success() bool {
	return resp.Code == 0
}

type GetCountryRegionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetCountryRegionReqBuilder() *GetCountryRegionReqBuilder {
	builder := &GetCountryRegionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 国家/地区 ID
//
// 示例值：67489937334909845
func (builder *GetCountryRegionReqBuilder) CountryRegionId(countryRegionId string) *GetCountryRegionReqBuilder {
	builder.apiReq.PathParams.Set("country_region_id", fmt.Sprint(countryRegionId))
	return builder
}

func (builder *GetCountryRegionReqBuilder) Build() *GetCountryRegionReq {
	req := &GetCountryRegionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetCountryRegionReq struct {
	apiReq *larkcore.ApiReq
}

type GetCountryRegionRespData struct {
	CountryRegion *CountryRegion `json:"country_region,omitempty"` // 国家/地区信息
}

type GetCountryRegionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetCountryRegionRespData `json:"data"` // 业务数据
}

func (resp *GetCountryRegionResp) Success() bool {
	return resp.Code == 0
}

type ListCountryRegionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListCountryRegionReqBuilder() *ListCountryRegionReqBuilder {
	builder := &ListCountryRegionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListCountryRegionReqBuilder) PageToken(pageToken string) *ListCountryRegionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListCountryRegionReqBuilder) PageSize(pageSize string) *ListCountryRegionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListCountryRegionReqBuilder) Build() *ListCountryRegionReq {
	req := &ListCountryRegionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListCountryRegionReq struct {
	apiReq *larkcore.ApiReq
}

type ListCountryRegionRespData struct {
	Items []*CountryRegion `json:"items,omitempty"` // 国家/地区信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListCountryRegionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListCountryRegionRespData `json:"data"` // 业务数据
}

func (resp *ListCountryRegionResp) Success() bool {
	return resp.Code == 0
}

type GetCurrencyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetCurrencyReqBuilder() *GetCurrencyReqBuilder {
	builder := &GetCurrencyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 货币 ID
//
// 示例值：67489937334909845
func (builder *GetCurrencyReqBuilder) CurrencyId(currencyId string) *GetCurrencyReqBuilder {
	builder.apiReq.PathParams.Set("currency_id", fmt.Sprint(currencyId))
	return builder
}

func (builder *GetCurrencyReqBuilder) Build() *GetCurrencyReq {
	req := &GetCurrencyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetCurrencyReq struct {
	apiReq *larkcore.ApiReq
}

type GetCurrencyRespData struct {
	Currency *Currency `json:"currency,omitempty"` // 货币信息
}

type GetCurrencyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetCurrencyRespData `json:"data"` // 业务数据
}

func (resp *GetCurrencyResp) Success() bool {
	return resp.Code == 0
}

type ListCurrencyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListCurrencyReqBuilder() *ListCurrencyReqBuilder {
	builder := &ListCurrencyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListCurrencyReqBuilder) PageToken(pageToken string) *ListCurrencyReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListCurrencyReqBuilder) PageSize(pageSize string) *ListCurrencyReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListCurrencyReqBuilder) Build() *ListCurrencyReq {
	req := &ListCurrencyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListCurrencyReq struct {
	apiReq *larkcore.ApiReq
}

type ListCurrencyRespData struct {
	Items []*Currency `json:"items,omitempty"` // 货币信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListCurrencyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListCurrencyRespData `json:"data"` // 业务数据
}

func (resp *ListCurrencyResp) Success() bool {
	return resp.Code == 0
}

type GetByParamCustomFieldReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetByParamCustomFieldReqBuilder() *GetByParamCustomFieldReqBuilder {
	builder := &GetByParamCustomFieldReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 所属对象 apiname
//
// 示例值：offboarding_info
func (builder *GetByParamCustomFieldReqBuilder) ObjectApiName(objectApiName string) *GetByParamCustomFieldReqBuilder {
	builder.apiReq.QueryParams.Set("object_api_name", fmt.Sprint(objectApiName))
	return builder
}

// 自定义字段 apiname
//
// 示例值：custom_field_33
func (builder *GetByParamCustomFieldReqBuilder) CustomApiName(customApiName string) *GetByParamCustomFieldReqBuilder {
	builder.apiReq.QueryParams.Set("custom_api_name", fmt.Sprint(customApiName))
	return builder
}

func (builder *GetByParamCustomFieldReqBuilder) Build() *GetByParamCustomFieldReq {
	req := &GetByParamCustomFieldReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetByParamCustomFieldReq struct {
	apiReq *larkcore.ApiReq
}

type GetByParamCustomFieldRespData struct {
	Data *CustomField `json:"data,omitempty"` // 自定义字段详情
}

type GetByParamCustomFieldResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetByParamCustomFieldRespData `json:"data"` // 业务数据
}

func (resp *GetByParamCustomFieldResp) Success() bool {
	return resp.Code == 0
}

type ListObjectApiNameCustomFieldReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListObjectApiNameCustomFieldReqBuilder() *ListObjectApiNameCustomFieldReqBuilder {
	builder := &ListObjectApiNameCustomFieldReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：11
func (builder *ListObjectApiNameCustomFieldReqBuilder) PageToken(pageToken string) *ListObjectApiNameCustomFieldReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListObjectApiNameCustomFieldReqBuilder) PageSize(pageSize string) *ListObjectApiNameCustomFieldReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListObjectApiNameCustomFieldReqBuilder) Build() *ListObjectApiNameCustomFieldReq {
	req := &ListObjectApiNameCustomFieldReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListObjectApiNameCustomFieldReq struct {
	apiReq *larkcore.ApiReq
}

type ListObjectApiNameCustomFieldRespData struct {
	Items []*Object `json:"items,omitempty"` // 对象列表

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListObjectApiNameCustomFieldResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListObjectApiNameCustomFieldRespData `json:"data"` // 业务数据
}

func (resp *ListObjectApiNameCustomFieldResp) Success() bool {
	return resp.Code == 0
}

type QueryCustomFieldReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryCustomFieldReqBuilder() *QueryCustomFieldReqBuilder {
	builder := &QueryCustomFieldReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 所属对象 apiname，支持一个或多个;;当前数量限制为 20 个
//
// 示例值：["offboarding_info"]
func (builder *QueryCustomFieldReqBuilder) ObjectApiNameList(objectApiNameList []string) *QueryCustomFieldReqBuilder {
	for _, v := range objectApiNameList {
		builder.apiReq.QueryParams.Add("object_api_name_list", fmt.Sprint(v))
	}
	return builder
}

func (builder *QueryCustomFieldReqBuilder) Build() *QueryCustomFieldReq {
	req := &QueryCustomFieldReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryCustomFieldReq struct {
	apiReq *larkcore.ApiReq
}

type QueryCustomFieldRespData struct {
	Items []*CustomField `json:"items,omitempty"` // 自定义字段列表
}

type QueryCustomFieldResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryCustomFieldRespData `json:"data"` // 业务数据
}

func (resp *QueryCustomFieldResp) Success() bool {
	return resp.Code == 0
}

type CreateDepartmentReqBuilder struct {
	apiReq           *larkcore.ApiReq
	departmentCreate *DepartmentCreate
}

func NewCreateDepartmentReqBuilder() *CreateDepartmentReqBuilder {
	builder := &CreateDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateDepartmentReqBuilder) ClientToken(clientToken string) *CreateDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *CreateDepartmentReqBuilder) UserIdType(userIdType string) *CreateDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *CreateDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *CreateDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 创建部门
func (builder *CreateDepartmentReqBuilder) DepartmentCreate(departmentCreate *DepartmentCreate) *CreateDepartmentReqBuilder {
	builder.departmentCreate = departmentCreate
	return builder
}

func (builder *CreateDepartmentReqBuilder) Build() *CreateDepartmentReq {
	req := &CreateDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.departmentCreate
	return req
}

type CreateDepartmentReq struct {
	apiReq           *larkcore.ApiReq
	DepartmentCreate *DepartmentCreate `body:""`
}

type CreateDepartmentRespData struct {
	Department *DepartmentCreate `json:"department,omitempty"` // 创建成功的部门信息
}

type CreateDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateDepartmentRespData `json:"data"` // 业务数据
}

func (resp *CreateDepartmentResp) Success() bool {
	return resp.Code == 0
}

type DeleteDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteDepartmentReqBuilder() *DeleteDepartmentReqBuilder {
	builder := &DeleteDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的部门 ID
//
// 示例值：341143141
func (builder *DeleteDepartmentReqBuilder) DepartmentId(departmentId string) *DeleteDepartmentReqBuilder {
	builder.apiReq.PathParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

func (builder *DeleteDepartmentReqBuilder) Build() *DeleteDepartmentReq {
	req := &DeleteDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteDepartmentReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteDepartmentResp) Success() bool {
	return resp.Code == 0
}

type GetDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetDepartmentReqBuilder() *GetDepartmentReqBuilder {
	builder := &GetDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 部门 ID
//
// 示例值：45456564
func (builder *GetDepartmentReqBuilder) DepartmentId(departmentId string) *GetDepartmentReqBuilder {
	builder.apiReq.PathParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *GetDepartmentReqBuilder) UserIdType(userIdType string) *GetDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *GetDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *GetDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *GetDepartmentReqBuilder) Build() *GetDepartmentReq {
	req := &GetDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetDepartmentReq struct {
	apiReq *larkcore.ApiReq
}

type GetDepartmentRespData struct {
	Department *Department `json:"department,omitempty"` // 部门信息
}

type GetDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetDepartmentRespData `json:"data"` // 业务数据
}

func (resp *GetDepartmentResp) Success() bool {
	return resp.Code == 0
}

type ListDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListDepartmentReqBuilder() *ListDepartmentReqBuilder {
	builder := &ListDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值："6966234786251671053"
func (builder *ListDepartmentReqBuilder) PageToken(pageToken string) *ListDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListDepartmentReqBuilder) PageSize(pageSize string) *ListDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 部门ID列表
//
// 示例值：["6966234786251671053"]
func (builder *ListDepartmentReqBuilder) DepartmentIdList(departmentIdList []string) *ListDepartmentReqBuilder {
	for _, v := range departmentIdList {
		builder.apiReq.QueryParams.Add("department_id_list", fmt.Sprint(v))
	}
	return builder
}

// 部门名称列表，需精确匹配
//
// 示例值：["校验部门"]
func (builder *ListDepartmentReqBuilder) NameList(nameList []string) *ListDepartmentReqBuilder {
	for _, v := range nameList {
		builder.apiReq.QueryParams.Add("name_list", fmt.Sprint(v))
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *ListDepartmentReqBuilder) UserIdType(userIdType string) *ListDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *ListDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *ListDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *ListDepartmentReqBuilder) Build() *ListDepartmentReq {
	req := &ListDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListDepartmentReq struct {
	apiReq *larkcore.ApiReq
}

type ListDepartmentRespData struct {
	Items []*Department `json:"items,omitempty"` // 查询的部门信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListDepartmentRespData `json:"data"` // 业务数据
}

func (resp *ListDepartmentResp) Success() bool {
	return resp.Code == 0
}

type PatchDepartmentReqBuilder struct {
	apiReq     *larkcore.ApiReq
	department *Department
}

func NewPatchDepartmentReqBuilder() *PatchDepartmentReqBuilder {
	builder := &PatchDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要更新的部门ID，同部门实体在CoreHR内部的唯一键
//
// 示例值：6969828847121885087
func (builder *PatchDepartmentReqBuilder) DepartmentId(departmentId string) *PatchDepartmentReqBuilder {
	builder.apiReq.PathParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchDepartmentReqBuilder) ClientToken(clientToken string) *PatchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchDepartmentReqBuilder) UserIdType(userIdType string) *PatchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *PatchDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *PatchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 更新部门
func (builder *PatchDepartmentReqBuilder) Department(department *Department) *PatchDepartmentReqBuilder {
	builder.department = department
	return builder
}

func (builder *PatchDepartmentReqBuilder) Build() *PatchDepartmentReq {
	req := &PatchDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.department
	return req
}

type PatchDepartmentReq struct {
	apiReq     *larkcore.ApiReq
	Department *Department `body:""`
}

type PatchDepartmentRespData struct {
	Department *Department `json:"department,omitempty"` // 部门
}

type PatchDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchDepartmentRespData `json:"data"` // 业务数据
}

func (resp *PatchDepartmentResp) Success() bool {
	return resp.Code == 0
}

type CreateEmployeeTypeReqBuilder struct {
	apiReq       *larkcore.ApiReq
	employeeType *EmployeeType
}

func NewCreateEmployeeTypeReqBuilder() *CreateEmployeeTypeReqBuilder {
	builder := &CreateEmployeeTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateEmployeeTypeReqBuilder) ClientToken(clientToken string) *CreateEmployeeTypeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建人员类型
func (builder *CreateEmployeeTypeReqBuilder) EmployeeType(employeeType *EmployeeType) *CreateEmployeeTypeReqBuilder {
	builder.employeeType = employeeType
	return builder
}

func (builder *CreateEmployeeTypeReqBuilder) Build() *CreateEmployeeTypeReq {
	req := &CreateEmployeeTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employeeType
	return req
}

type CreateEmployeeTypeReq struct {
	apiReq       *larkcore.ApiReq
	EmployeeType *EmployeeType `body:""`
}

type CreateEmployeeTypeRespData struct {
	EmployeeType *EmployeeType `json:"employee_type,omitempty"` // 创建成功的人员类型信息
}

type CreateEmployeeTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateEmployeeTypeRespData `json:"data"` // 业务数据
}

func (resp *CreateEmployeeTypeResp) Success() bool {
	return resp.Code == 0
}

type DeleteEmployeeTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteEmployeeTypeReqBuilder() *DeleteEmployeeTypeReqBuilder {
	builder := &DeleteEmployeeTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的人员类型ID
//
// 示例值：434343434
func (builder *DeleteEmployeeTypeReqBuilder) EmployeeTypeId(employeeTypeId string) *DeleteEmployeeTypeReqBuilder {
	builder.apiReq.PathParams.Set("employee_type_id", fmt.Sprint(employeeTypeId))
	return builder
}

func (builder *DeleteEmployeeTypeReqBuilder) Build() *DeleteEmployeeTypeReq {
	req := &DeleteEmployeeTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteEmployeeTypeReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteEmployeeTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteEmployeeTypeResp) Success() bool {
	return resp.Code == 0
}

type GetEmployeeTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetEmployeeTypeReqBuilder() *GetEmployeeTypeReqBuilder {
	builder := &GetEmployeeTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员类型ID
//
// 示例值：1
func (builder *GetEmployeeTypeReqBuilder) EmployeeTypeId(employeeTypeId string) *GetEmployeeTypeReqBuilder {
	builder.apiReq.PathParams.Set("employee_type_id", fmt.Sprint(employeeTypeId))
	return builder
}

func (builder *GetEmployeeTypeReqBuilder) Build() *GetEmployeeTypeReq {
	req := &GetEmployeeTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetEmployeeTypeReq struct {
	apiReq *larkcore.ApiReq
}

type GetEmployeeTypeRespData struct {
	EmployeeType *EmployeeType `json:"employee_type,omitempty"` // 雇员类型
}

type GetEmployeeTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetEmployeeTypeRespData `json:"data"` // 业务数据
}

func (resp *GetEmployeeTypeResp) Success() bool {
	return resp.Code == 0
}

type ListEmployeeTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListEmployeeTypeReqBuilder() *ListEmployeeTypeReqBuilder {
	builder := &ListEmployeeTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListEmployeeTypeReqBuilder) PageToken(pageToken string) *ListEmployeeTypeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListEmployeeTypeReqBuilder) PageSize(pageSize string) *ListEmployeeTypeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListEmployeeTypeReqBuilder) Build() *ListEmployeeTypeReq {
	req := &ListEmployeeTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListEmployeeTypeReq struct {
	apiReq *larkcore.ApiReq
}

type ListEmployeeTypeRespData struct {
	Items []*EmployeeType `json:"items,omitempty"` // 查询的雇员类型信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListEmployeeTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListEmployeeTypeRespData `json:"data"` // 业务数据
}

func (resp *ListEmployeeTypeResp) Success() bool {
	return resp.Code == 0
}

type PatchEmployeeTypeReqBuilder struct {
	apiReq       *larkcore.ApiReq
	employeeType *EmployeeType
}

func NewPatchEmployeeTypeReqBuilder() *PatchEmployeeTypeReqBuilder {
	builder := &PatchEmployeeTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员类型 ID
//
// 示例值：6969828847931885087
func (builder *PatchEmployeeTypeReqBuilder) EmployeeTypeId(employeeTypeId string) *PatchEmployeeTypeReqBuilder {
	builder.apiReq.PathParams.Set("employee_type_id", fmt.Sprint(employeeTypeId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchEmployeeTypeReqBuilder) ClientToken(clientToken string) *PatchEmployeeTypeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新人员类型数据
func (builder *PatchEmployeeTypeReqBuilder) EmployeeType(employeeType *EmployeeType) *PatchEmployeeTypeReqBuilder {
	builder.employeeType = employeeType
	return builder
}

func (builder *PatchEmployeeTypeReqBuilder) Build() *PatchEmployeeTypeReq {
	req := &PatchEmployeeTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employeeType
	return req
}

type PatchEmployeeTypeReq struct {
	apiReq       *larkcore.ApiReq
	EmployeeType *EmployeeType `body:""`
}

type PatchEmployeeTypeRespData struct {
	EmployeeType *EmployeeType `json:"employee_type,omitempty"` // 人员类型
}

type PatchEmployeeTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchEmployeeTypeRespData `json:"data"` // 业务数据
}

func (resp *PatchEmployeeTypeResp) Success() bool {
	return resp.Code == 0
}

type CreateEmploymentReqBuilder struct {
	apiReq           *larkcore.ApiReq
	employmentCreate *EmploymentCreate
}

func NewCreateEmploymentReqBuilder() *CreateEmploymentReqBuilder {
	builder := &CreateEmploymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateEmploymentReqBuilder) ClientToken(clientToken string) *CreateEmploymentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建人员的雇佣信息
func (builder *CreateEmploymentReqBuilder) EmploymentCreate(employmentCreate *EmploymentCreate) *CreateEmploymentReqBuilder {
	builder.employmentCreate = employmentCreate
	return builder
}

func (builder *CreateEmploymentReqBuilder) Build() *CreateEmploymentReq {
	req := &CreateEmploymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employmentCreate
	return req
}

type CreateEmploymentReq struct {
	apiReq           *larkcore.ApiReq
	EmploymentCreate *EmploymentCreate `body:""`
}

type CreateEmploymentRespData struct {
	Employment *EmploymentCreate `json:"employment,omitempty"` // 创建人员的雇佣信息成功返回信息
}

type CreateEmploymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateEmploymentRespData `json:"data"` // 业务数据
}

func (resp *CreateEmploymentResp) Success() bool {
	return resp.Code == 0
}

type DeleteEmploymentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteEmploymentReqBuilder() *DeleteEmploymentReqBuilder {
	builder := &DeleteEmploymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的雇佣信息对应的ID
//
// 示例值：65536878783232
func (builder *DeleteEmploymentReqBuilder) EmploymentId(employmentId string) *DeleteEmploymentReqBuilder {
	builder.apiReq.PathParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *DeleteEmploymentReqBuilder) UserIdType(userIdType string) *DeleteEmploymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *DeleteEmploymentReqBuilder) Build() *DeleteEmploymentReq {
	req := &DeleteEmploymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type DeleteEmploymentReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteEmploymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteEmploymentResp) Success() bool {
	return resp.Code == 0
}

type PatchEmploymentReqBuilder struct {
	apiReq     *larkcore.ApiReq
	employment *Employment
}

func NewPatchEmploymentReqBuilder() *PatchEmploymentReqBuilder {
	builder := &PatchEmploymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 雇员ID
//
// 示例值：1616161616
func (builder *PatchEmploymentReqBuilder) EmploymentId(employmentId string) *PatchEmploymentReqBuilder {
	builder.apiReq.PathParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchEmploymentReqBuilder) ClientToken(clientToken string) *PatchEmploymentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchEmploymentReqBuilder) UserIdType(userIdType string) *PatchEmploymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：department_id
func (builder *PatchEmploymentReqBuilder) DepartmentIdType(departmentIdType string) *PatchEmploymentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 更新雇佣信息
func (builder *PatchEmploymentReqBuilder) Employment(employment *Employment) *PatchEmploymentReqBuilder {
	builder.employment = employment
	return builder
}

func (builder *PatchEmploymentReqBuilder) Build() *PatchEmploymentReq {
	req := &PatchEmploymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employment
	return req
}

type PatchEmploymentReq struct {
	apiReq     *larkcore.ApiReq
	Employment *Employment `body:""`
}

type PatchEmploymentRespData struct {
	Employment *Employment `json:"employment,omitempty"` // 雇佣信息
}

type PatchEmploymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchEmploymentRespData `json:"data"` // 业务数据
}

func (resp *PatchEmploymentResp) Success() bool {
	return resp.Code == 0
}

type GetFileReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetFileReqBuilder() *GetFileReqBuilder {
	builder := &GetFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 上传文件ID
//
// 示例值：150018109586e8ea745e47ae8feb3722dbe1d03a181336393633393133303431393831343930373235150100
func (builder *GetFileReqBuilder) Id(id string) *GetFileReqBuilder {
	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
	return builder
}

func (builder *GetFileReqBuilder) Build() *GetFileReq {
	req := &GetFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetFileReq struct {
	apiReq *larkcore.ApiReq
}

type GetFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	File     io.Reader `json:"-"`
	FileName string    `json:"-"`
}

func (resp *GetFileResp) Success() bool {
	return resp.Code == 0
}

func (resp *GetFileResp) WriteFile(fileName string) error {
	bs, err := ioutil.ReadAll(resp.File)
	if err != nil {
		return err
	}

	err = ioutil.WriteFile(fileName, bs, 0666)
	if err != nil {
		return err
	}
	return nil
}

type CreateJobReqBuilder struct {
	apiReq *larkcore.ApiReq
	job    *Job
}

func NewCreateJobReqBuilder() *CreateJobReqBuilder {
	builder := &CreateJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateJobReqBuilder) ClientToken(clientToken string) *CreateJobReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建职务
func (builder *CreateJobReqBuilder) Job(job *Job) *CreateJobReqBuilder {
	builder.job = job
	return builder
}

func (builder *CreateJobReqBuilder) Build() *CreateJobReq {
	req := &CreateJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.job
	return req
}

type CreateJobReq struct {
	apiReq *larkcore.ApiReq
	Job    *Job `body:""`
}

type CreateJobRespData struct {
	Job *Job `json:"job,omitempty"` // 创建成功的Job信息
}

type CreateJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobRespData `json:"data"` // 业务数据
}

func (resp *CreateJobResp) Success() bool {
	return resp.Code == 0
}

type DeleteJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteJobReqBuilder() *DeleteJobReqBuilder {
	builder := &DeleteJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的职务 ID
//
// 示例值：67163716371
func (builder *DeleteJobReqBuilder) JobId(jobId string) *DeleteJobReqBuilder {
	builder.apiReq.PathParams.Set("job_id", fmt.Sprint(jobId))
	return builder
}

func (builder *DeleteJobReqBuilder) Build() *DeleteJobReq {
	req := &DeleteJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteJobReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteJobResp) Success() bool {
	return resp.Code == 0
}

type GetJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetJobReqBuilder() *GetJobReqBuilder {
	builder := &GetJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 职务 ID
//
// 示例值：151515
func (builder *GetJobReqBuilder) JobId(jobId string) *GetJobReqBuilder {
	builder.apiReq.PathParams.Set("job_id", fmt.Sprint(jobId))
	return builder
}

func (builder *GetJobReqBuilder) Build() *GetJobReq {
	req := &GetJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetJobReq struct {
	apiReq *larkcore.ApiReq
}

type GetJobRespData struct {
	Job *Job `json:"job,omitempty"` // 职务信息
}

type GetJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetJobRespData `json:"data"` // 业务数据
}

func (resp *GetJobResp) Success() bool {
	return resp.Code == 0
}

type ListJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListJobReqBuilder() *ListJobReqBuilder {
	builder := &ListJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListJobReqBuilder) PageToken(pageToken string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListJobReqBuilder) PageSize(pageSize string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 名称
//
// 示例值：keyword
func (builder *ListJobReqBuilder) Name(name string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("name", fmt.Sprint(name))
	return builder
}

// 语言
//
// 示例值：zh
func (builder *ListJobReqBuilder) QueryLanguage(queryLanguage string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("query_language", fmt.Sprint(queryLanguage))
	return builder
}

func (builder *ListJobReqBuilder) Build() *ListJobReq {
	req := &ListJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListJobReq struct {
	apiReq *larkcore.ApiReq
}

type ListJobRespData struct {
	Items []*Job `json:"items,omitempty"` // 查询的职务信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListJobRespData `json:"data"` // 业务数据
}

func (resp *ListJobResp) Success() bool {
	return resp.Code == 0
}

type PatchJobReqBuilder struct {
	apiReq *larkcore.ApiReq
	job    *Job
}

func NewPatchJobReqBuilder() *PatchJobReqBuilder {
	builder := &PatchJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 职务ID
//
// 示例值：1616161616
func (builder *PatchJobReqBuilder) JobId(jobId string) *PatchJobReqBuilder {
	builder.apiReq.PathParams.Set("job_id", fmt.Sprint(jobId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchJobReqBuilder) ClientToken(clientToken string) *PatchJobReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新职务
func (builder *PatchJobReqBuilder) Job(job *Job) *PatchJobReqBuilder {
	builder.job = job
	return builder
}

func (builder *PatchJobReqBuilder) Build() *PatchJobReq {
	req := &PatchJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.job
	return req
}

type PatchJobReq struct {
	apiReq *larkcore.ApiReq
	Job    *Job `body:""`
}

type PatchJobRespData struct {
	Job *Job `json:"job,omitempty"` // 职务
}

type PatchJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchJobRespData `json:"data"` // 业务数据
}

func (resp *PatchJobResp) Success() bool {
	return resp.Code == 0
}

type CreateJobChangeReqBodyBuilder struct {
	transferMode     int // 异动方式
	transferModeFlag bool

	employmentId     string // 雇员id
	employmentIdFlag bool

	transferTypeUniqueIdentifier     string // 异动类型唯一标识
	transferTypeUniqueIdentifierFlag bool

	flowId     string // 异动流程ID
	flowIdFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	transferInfo     *TransferInfo // 异动详细信息
	transferInfoFlag bool

	transferKey     string // 异动记录标识符
	transferKeyFlag bool

	initiatorId     string // 异动发起人 ID
	initiatorIdFlag bool
}

func NewCreateJobChangeReqBodyBuilder() *CreateJobChangeReqBodyBuilder {
	builder := &CreateJobChangeReqBodyBuilder{}
	return builder
}

// 异动方式
//
//示例值：2
func (builder *CreateJobChangeReqBodyBuilder) TransferMode(transferMode int) *CreateJobChangeReqBodyBuilder {
	builder.transferMode = transferMode
	builder.transferModeFlag = true
	return builder
}

// 雇员id
//
//示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangeReqBodyBuilder) EmploymentId(employmentId string) *CreateJobChangeReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 异动类型唯一标识
//
//示例值：internal_transfer
func (builder *CreateJobChangeReqBodyBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *CreateJobChangeReqBodyBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动流程ID
//
//示例值：people_6963913041981490725_6983885526583627531
func (builder *CreateJobChangeReqBodyBuilder) FlowId(flowId string) *CreateJobChangeReqBodyBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 生效日期
//
//示例值：2022-03-01
func (builder *CreateJobChangeReqBodyBuilder) EffectiveDate(effectiveDate string) *CreateJobChangeReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 异动详细信息
//
//示例值：
func (builder *CreateJobChangeReqBodyBuilder) TransferInfo(transferInfo *TransferInfo) *CreateJobChangeReqBodyBuilder {
	builder.transferInfo = transferInfo
	builder.transferInfoFlag = true
	return builder
}

// 异动记录标识符
//
//示例值：transfer_3627531
func (builder *CreateJobChangeReqBodyBuilder) TransferKey(transferKey string) *CreateJobChangeReqBodyBuilder {
	builder.transferKey = transferKey
	builder.transferKeyFlag = true
	return builder
}

// 异动发起人 ID
//
//示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangeReqBodyBuilder) InitiatorId(initiatorId string) *CreateJobChangeReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

func (builder *CreateJobChangeReqBodyBuilder) Build() *CreateJobChangeReqBody {
	req := &CreateJobChangeReqBody{}
	if builder.transferModeFlag {
		req.TransferMode = &builder.transferMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier
	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.transferInfoFlag {
		req.TransferInfo = builder.transferInfo
	}
	if builder.transferKeyFlag {
		req.TransferKey = &builder.transferKey
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	return req
}

type CreateJobChangePathReqBodyBuilder struct {
	transferMode                     int
	transferModeFlag                 bool
	employmentId                     string
	employmentIdFlag                 bool
	transferTypeUniqueIdentifier     string
	transferTypeUniqueIdentifierFlag bool
	flowId                           string
	flowIdFlag                       bool
	effectiveDate                    string
	effectiveDateFlag                bool
	transferInfo                     *TransferInfo
	transferInfoFlag                 bool
	transferKey                      string
	transferKeyFlag                  bool
	initiatorId                      string
	initiatorIdFlag                  bool
}

func NewCreateJobChangePathReqBodyBuilder() *CreateJobChangePathReqBodyBuilder {
	builder := &CreateJobChangePathReqBodyBuilder{}
	return builder
}

// 异动方式
//
// 示例值：2
func (builder *CreateJobChangePathReqBodyBuilder) TransferMode(transferMode int) *CreateJobChangePathReqBodyBuilder {
	builder.transferMode = transferMode
	builder.transferModeFlag = true
	return builder
}

// 雇员id
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangePathReqBodyBuilder) EmploymentId(employmentId string) *CreateJobChangePathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 异动类型唯一标识
//
// 示例值：internal_transfer
func (builder *CreateJobChangePathReqBodyBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *CreateJobChangePathReqBodyBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动流程ID
//
// 示例值：people_6963913041981490725_6983885526583627531
func (builder *CreateJobChangePathReqBodyBuilder) FlowId(flowId string) *CreateJobChangePathReqBodyBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 生效日期
//
// 示例值：2022-03-01
func (builder *CreateJobChangePathReqBodyBuilder) EffectiveDate(effectiveDate string) *CreateJobChangePathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 异动详细信息
//
// 示例值：
func (builder *CreateJobChangePathReqBodyBuilder) TransferInfo(transferInfo *TransferInfo) *CreateJobChangePathReqBodyBuilder {
	builder.transferInfo = transferInfo
	builder.transferInfoFlag = true
	return builder
}

// 异动记录标识符
//
// 示例值：transfer_3627531
func (builder *CreateJobChangePathReqBodyBuilder) TransferKey(transferKey string) *CreateJobChangePathReqBodyBuilder {
	builder.transferKey = transferKey
	builder.transferKeyFlag = true
	return builder
}

// 异动发起人 ID
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangePathReqBodyBuilder) InitiatorId(initiatorId string) *CreateJobChangePathReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

func (builder *CreateJobChangePathReqBodyBuilder) Build() (*CreateJobChangeReqBody, error) {
	req := &CreateJobChangeReqBody{}
	if builder.transferModeFlag {
		req.TransferMode = &builder.transferMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier
	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.transferInfoFlag {
		req.TransferInfo = builder.transferInfo
	}
	if builder.transferKeyFlag {
		req.TransferKey = &builder.transferKey
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	return req, nil
}

type CreateJobChangeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateJobChangeReqBody
}

func NewCreateJobChangeReqBuilder() *CreateJobChangeReqBuilder {
	builder := &CreateJobChangeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：open_id
func (builder *CreateJobChangeReqBuilder) UserIdType(userIdType string) *CreateJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *CreateJobChangeReqBuilder) DepartmentIdType(departmentIdType string) *CreateJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 创建员工异动信息
func (builder *CreateJobChangeReqBuilder) Body(body *CreateJobChangeReqBody) *CreateJobChangeReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateJobChangeReqBuilder) Build() *CreateJobChangeReq {
	req := &CreateJobChangeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateJobChangeReqBody struct {
	TransferMode *int `json:"transfer_mode,omitempty"` // 异动方式

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员id

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	FlowId *string `json:"flow_id,omitempty"` // 异动流程ID

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	TransferInfo *TransferInfo `json:"transfer_info,omitempty"` // 异动详细信息

	TransferKey *string `json:"transfer_key,omitempty"` // 异动记录标识符

	InitiatorId *string `json:"initiator_id,omitempty"` // 异动发起人 ID
}

type CreateJobChangeReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateJobChangeReqBody `body:""`
}

type CreateJobChangeRespData struct {
	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	Status *int `json:"status,omitempty"` // 异动状态

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因

	ProcessId *string `json:"process_id,omitempty"` // 异动流程 id

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	TransferInfo *TransferInfo `json:"transfer_info,omitempty"` // 异动详细信息
}

type CreateJobChangeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobChangeRespData `json:"data"` // 业务数据
}

func (resp *CreateJobChangeResp) Success() bool {
	return resp.Code == 0
}

type CreateJobDataReqBuilder struct {
	apiReq  *larkcore.ApiReq
	jobData *JobData
}

func NewCreateJobDataReqBuilder() *CreateJobDataReqBuilder {
	builder := &CreateJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateJobDataReqBuilder) ClientToken(clientToken string) *CreateJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *CreateJobDataReqBuilder) UserIdType(userIdType string) *CreateJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *CreateJobDataReqBuilder) DepartmentIdType(departmentIdType string) *CreateJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 在系统中第一次创建员工任职数据，通常在员工入职或者做数据批量导入的时候使用，【任职原因】只支持填写“入职”
func (builder *CreateJobDataReqBuilder) JobData(jobData *JobData) *CreateJobDataReqBuilder {
	builder.jobData = jobData
	return builder
}

func (builder *CreateJobDataReqBuilder) Build() *CreateJobDataReq {
	req := &CreateJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobData
	return req
}

type CreateJobDataReq struct {
	apiReq  *larkcore.ApiReq
	JobData *JobData `body:""`
}

type CreateJobDataRespData struct {
	JobData *JobData `json:"job_data,omitempty"` // 创建成功返回job data信息
}

type CreateJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobDataRespData `json:"data"` // 业务数据
}

func (resp *CreateJobDataResp) Success() bool {
	return resp.Code == 0
}

type DeleteJobDataReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteJobDataReqBuilder() *DeleteJobDataReqBuilder {
	builder := &DeleteJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的任职信息 ID
//
// 示例值：467642764726472
func (builder *DeleteJobDataReqBuilder) JobDataId(jobDataId string) *DeleteJobDataReqBuilder {
	builder.apiReq.PathParams.Set("job_data_id", fmt.Sprint(jobDataId))
	return builder
}

func (builder *DeleteJobDataReqBuilder) Build() *DeleteJobDataReq {
	req := &DeleteJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteJobDataReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteJobDataResp) Success() bool {
	return resp.Code == 0
}

type GetJobDataReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetJobDataReqBuilder() *GetJobDataReqBuilder {
	builder := &GetJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 任职信息 ID
//
// 示例值：151515
func (builder *GetJobDataReqBuilder) JobDataId(jobDataId string) *GetJobDataReqBuilder {
	builder.apiReq.PathParams.Set("job_data_id", fmt.Sprint(jobDataId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *GetJobDataReqBuilder) UserIdType(userIdType string) *GetJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *GetJobDataReqBuilder) DepartmentIdType(departmentIdType string) *GetJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *GetJobDataReqBuilder) Build() *GetJobDataReq {
	req := &GetJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetJobDataReq struct {
	apiReq *larkcore.ApiReq
}

type GetJobDataRespData struct {
	JobData *JobData `json:"job_data,omitempty"` // 任职信息
}

type GetJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetJobDataRespData `json:"data"` // 业务数据
}

func (resp *GetJobDataResp) Success() bool {
	return resp.Code == 0
}

type ListJobDataReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListJobDataReqBuilder() *ListJobDataReqBuilder {
	builder := &ListJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：6994718879515739656
func (builder *ListJobDataReqBuilder) PageToken(pageToken string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListJobDataReqBuilder) PageSize(pageSize string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 雇佣 ID
//
// 示例值：7072306364927985196
func (builder *ListJobDataReqBuilder) EmploymentId(employmentId string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("employment_id", fmt.Sprint(employmentId))
	return builder
}

// 任职信息 ID 列表，最大 100 个（不传则默认查询全部任职信息）
//
// 示例值：["6919733291281024526", "6919733291281024527"]
func (builder *ListJobDataReqBuilder) JobDataIdList(jobDataIdList []string) *ListJobDataReqBuilder {
	for _, v := range jobDataIdList {
		builder.apiReq.QueryParams.Add("job_data_id_list", fmt.Sprint(v))
	}
	return builder
}

// 部门 ID
//
// 示例值：6887868781834536462
func (builder *ListJobDataReqBuilder) DepartmentId(departmentId string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

// 职务 ID
//
// 示例值：6893014062142064135
func (builder *ListJobDataReqBuilder) JobId(jobId string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("job_id", fmt.Sprint(jobId))
	return builder
}

// 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
//
// 示例值：false
func (builder *ListJobDataReqBuilder) GetAllVersion(getAllVersion bool) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("get_all_version", fmt.Sprint(getAllVersion))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *ListJobDataReqBuilder) UserIdType(userIdType string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *ListJobDataReqBuilder) DepartmentIdType(departmentIdType string) *ListJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *ListJobDataReqBuilder) Build() *ListJobDataReq {
	req := &ListJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListJobDataReq struct {
	apiReq *larkcore.ApiReq
}

type ListJobDataRespData struct {
	Items []*JobData `json:"items,omitempty"` // 查询的任职信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListJobDataRespData `json:"data"` // 业务数据
}

func (resp *ListJobDataResp) Success() bool {
	return resp.Code == 0
}

type PatchJobDataReqBuilder struct {
	apiReq  *larkcore.ApiReq
	jobData *JobData
}

func NewPatchJobDataReqBuilder() *PatchJobDataReqBuilder {
	builder := &PatchJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 任职信息ID
//
// 示例值：151515
func (builder *PatchJobDataReqBuilder) JobDataId(jobDataId string) *PatchJobDataReqBuilder {
	builder.apiReq.PathParams.Set("job_data_id", fmt.Sprint(jobDataId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchJobDataReqBuilder) ClientToken(clientToken string) *PatchJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchJobDataReqBuilder) UserIdType(userIdType string) *PatchJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *PatchJobDataReqBuilder) DepartmentIdType(departmentIdType string) *PatchJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 是否强校验。值为 true 时，会对入参进行业务校验，并产生异动记录、发送异动事件。;- 默认值：false;- 仅在新增任职版本时生效，当 version_id 不为空时该字段不生效
//
// 示例值：false
func (builder *PatchJobDataReqBuilder) StrictVerify(strictVerify string) *PatchJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("strict_verify", fmt.Sprint(strictVerify))
	return builder
}

// 更新任职信息
func (builder *PatchJobDataReqBuilder) JobData(jobData *JobData) *PatchJobDataReqBuilder {
	builder.jobData = jobData
	return builder
}

func (builder *PatchJobDataReqBuilder) Build() *PatchJobDataReq {
	req := &PatchJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobData
	return req
}

type PatchJobDataReq struct {
	apiReq  *larkcore.ApiReq
	JobData *JobData `body:""`
}

type PatchJobDataRespData struct {
	JobData *JobData `json:"job_data,omitempty"` // 任职信息
}

type PatchJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchJobDataRespData `json:"data"` // 业务数据
}

func (resp *PatchJobDataResp) Success() bool {
	return resp.Code == 0
}

type CreateJobFamilyReqBuilder struct {
	apiReq    *larkcore.ApiReq
	jobFamily *JobFamily
}

func NewCreateJobFamilyReqBuilder() *CreateJobFamilyReqBuilder {
	builder := &CreateJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateJobFamilyReqBuilder) ClientToken(clientToken string) *CreateJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建职务序列
func (builder *CreateJobFamilyReqBuilder) JobFamily(jobFamily *JobFamily) *CreateJobFamilyReqBuilder {
	builder.jobFamily = jobFamily
	return builder
}

func (builder *CreateJobFamilyReqBuilder) Build() *CreateJobFamilyReq {
	req := &CreateJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobFamily
	return req
}

type CreateJobFamilyReq struct {
	apiReq    *larkcore.ApiReq
	JobFamily *JobFamily `body:""`
}

type CreateJobFamilyRespData struct {
	JobFamily *JobFamily `json:"job_family,omitempty"` // 创建成功的职务序列信息
}

type CreateJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *CreateJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type DeleteJobFamilyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteJobFamilyReqBuilder() *DeleteJobFamilyReqBuilder {
	builder := &DeleteJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的职务序列 ID
//
// 示例值：5425424525
func (builder *DeleteJobFamilyReqBuilder) JobFamilyId(jobFamilyId string) *DeleteJobFamilyReqBuilder {
	builder.apiReq.PathParams.Set("job_family_id", fmt.Sprint(jobFamilyId))
	return builder
}

func (builder *DeleteJobFamilyReqBuilder) Build() *DeleteJobFamilyReq {
	req := &DeleteJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteJobFamilyReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type GetJobFamilyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetJobFamilyReqBuilder() *GetJobFamilyReqBuilder {
	builder := &GetJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 职务序列 ID
//
// 示例值：1554548
func (builder *GetJobFamilyReqBuilder) JobFamilyId(jobFamilyId string) *GetJobFamilyReqBuilder {
	builder.apiReq.PathParams.Set("job_family_id", fmt.Sprint(jobFamilyId))
	return builder
}

func (builder *GetJobFamilyReqBuilder) Build() *GetJobFamilyReq {
	req := &GetJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetJobFamilyReq struct {
	apiReq *larkcore.ApiReq
}

type GetJobFamilyRespData struct {
	JobFamily *JobFamily `json:"job_family,omitempty"` // 职务序列信息
}

type GetJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *GetJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type ListJobFamilyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListJobFamilyReqBuilder() *ListJobFamilyReqBuilder {
	builder := &ListJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListJobFamilyReqBuilder) PageToken(pageToken string) *ListJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListJobFamilyReqBuilder) PageSize(pageSize string) *ListJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListJobFamilyReqBuilder) Build() *ListJobFamilyReq {
	req := &ListJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListJobFamilyReq struct {
	apiReq *larkcore.ApiReq
}

type ListJobFamilyRespData struct {
	Items []*JobFamily `json:"items,omitempty"` // 查询的职务序列信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *ListJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type PatchJobFamilyReqBuilder struct {
	apiReq    *larkcore.ApiReq
	jobFamily *JobFamily
}

func NewPatchJobFamilyReqBuilder() *PatchJobFamilyReqBuilder {
	builder := &PatchJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 序列ID
//
// 示例值：1616161616
func (builder *PatchJobFamilyReqBuilder) JobFamilyId(jobFamilyId string) *PatchJobFamilyReqBuilder {
	builder.apiReq.PathParams.Set("job_family_id", fmt.Sprint(jobFamilyId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchJobFamilyReqBuilder) ClientToken(clientToken string) *PatchJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新职务序列
func (builder *PatchJobFamilyReqBuilder) JobFamily(jobFamily *JobFamily) *PatchJobFamilyReqBuilder {
	builder.jobFamily = jobFamily
	return builder
}

func (builder *PatchJobFamilyReqBuilder) Build() *PatchJobFamilyReq {
	req := &PatchJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobFamily
	return req
}

type PatchJobFamilyReq struct {
	apiReq    *larkcore.ApiReq
	JobFamily *JobFamily `body:""`
}

type PatchJobFamilyRespData struct {
	JobFamily *JobFamily `json:"job_family,omitempty"` // 职务序列
}

type PatchJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *PatchJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type CreateJobLevelReqBuilder struct {
	apiReq   *larkcore.ApiReq
	jobLevel *JobLevel
}

func NewCreateJobLevelReqBuilder() *CreateJobLevelReqBuilder {
	builder := &CreateJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateJobLevelReqBuilder) ClientToken(clientToken string) *CreateJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建职务级别
func (builder *CreateJobLevelReqBuilder) JobLevel(jobLevel *JobLevel) *CreateJobLevelReqBuilder {
	builder.jobLevel = jobLevel
	return builder
}

func (builder *CreateJobLevelReqBuilder) Build() *CreateJobLevelReq {
	req := &CreateJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobLevel
	return req
}

type CreateJobLevelReq struct {
	apiReq   *larkcore.ApiReq
	JobLevel *JobLevel `body:""`
}

type CreateJobLevelRespData struct {
	JobLevel *JobLevel `json:"job_level,omitempty"` // 创建成功的职务级别信息
}

type CreateJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobLevelRespData `json:"data"` // 业务数据
}

func (resp *CreateJobLevelResp) Success() bool {
	return resp.Code == 0
}

type DeleteJobLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteJobLevelReqBuilder() *DeleteJobLevelReqBuilder {
	builder := &DeleteJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的职务级别 ID
//
// 示例值：5423452542
func (builder *DeleteJobLevelReqBuilder) JobLevelId(jobLevelId string) *DeleteJobLevelReqBuilder {
	builder.apiReq.PathParams.Set("job_level_id", fmt.Sprint(jobLevelId))
	return builder
}

func (builder *DeleteJobLevelReqBuilder) Build() *DeleteJobLevelReq {
	req := &DeleteJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteJobLevelReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteJobLevelResp) Success() bool {
	return resp.Code == 0
}

type GetJobLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetJobLevelReqBuilder() *GetJobLevelReqBuilder {
	builder := &GetJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 职务级别 ID
//
// 示例值：1515
func (builder *GetJobLevelReqBuilder) JobLevelId(jobLevelId string) *GetJobLevelReqBuilder {
	builder.apiReq.PathParams.Set("job_level_id", fmt.Sprint(jobLevelId))
	return builder
}

func (builder *GetJobLevelReqBuilder) Build() *GetJobLevelReq {
	req := &GetJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetJobLevelReq struct {
	apiReq *larkcore.ApiReq
}

type GetJobLevelRespData struct {
	JobLevel *JobLevel `json:"job_level,omitempty"` // 职务级别信息
}

type GetJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetJobLevelRespData `json:"data"` // 业务数据
}

func (resp *GetJobLevelResp) Success() bool {
	return resp.Code == 0
}

type ListJobLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListJobLevelReqBuilder() *ListJobLevelReqBuilder {
	builder := &ListJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListJobLevelReqBuilder) PageToken(pageToken string) *ListJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListJobLevelReqBuilder) PageSize(pageSize string) *ListJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListJobLevelReqBuilder) Build() *ListJobLevelReq {
	req := &ListJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListJobLevelReq struct {
	apiReq *larkcore.ApiReq
}

type ListJobLevelRespData struct {
	Items []*JobLevel `json:"items,omitempty"` // 查询的职务级别信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListJobLevelRespData `json:"data"` // 业务数据
}

func (resp *ListJobLevelResp) Success() bool {
	return resp.Code == 0
}

type PatchJobLevelReqBuilder struct {
	apiReq   *larkcore.ApiReq
	jobLevel *JobLevel
}

func NewPatchJobLevelReqBuilder() *PatchJobLevelReqBuilder {
	builder := &PatchJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 级别ID
//
// 示例值：1616161616
func (builder *PatchJobLevelReqBuilder) JobLevelId(jobLevelId string) *PatchJobLevelReqBuilder {
	builder.apiReq.PathParams.Set("job_level_id", fmt.Sprint(jobLevelId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchJobLevelReqBuilder) ClientToken(clientToken string) *PatchJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新职务级别
func (builder *PatchJobLevelReqBuilder) JobLevel(jobLevel *JobLevel) *PatchJobLevelReqBuilder {
	builder.jobLevel = jobLevel
	return builder
}

func (builder *PatchJobLevelReqBuilder) Build() *PatchJobLevelReq {
	req := &PatchJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobLevel
	return req
}

type PatchJobLevelReq struct {
	apiReq   *larkcore.ApiReq
	JobLevel *JobLevel `body:""`
}

type PatchJobLevelRespData struct {
	JobLevel *JobLevel `json:"job_level,omitempty"` // 职务级别
}

type PatchJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchJobLevelRespData `json:"data"` // 业务数据
}

func (resp *PatchJobLevelResp) Success() bool {
	return resp.Code == 0
}

type CalendarByScopeLeaveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewCalendarByScopeLeaveReqBuilder() *CalendarByScopeLeaveReqBuilder {
	builder := &CalendarByScopeLeaveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户所属部门的ID列表
//
// 示例值："6722331851580982798"
func (builder *CalendarByScopeLeaveReqBuilder) WkDepartmentId(wkDepartmentId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_department_id", fmt.Sprint(wkDepartmentId))
	return builder
}

// 国家/地区 ID
//
// 示例值："6722331851580982798"
func (builder *CalendarByScopeLeaveReqBuilder) WkCountryRegionId(wkCountryRegionId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_country_region_id", fmt.Sprint(wkCountryRegionId))
	return builder
}

// 人员类型
//
// 示例值："6722331851580982798"
func (builder *CalendarByScopeLeaveReqBuilder) WkEmployeeTypeId(wkEmployeeTypeId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_employee_type_id", fmt.Sprint(wkEmployeeTypeId))
	return builder
}

// 工作地点
//
// 示例值："6722331851580982798"
func (builder *CalendarByScopeLeaveReqBuilder) WkWorkLocationId(wkWorkLocationId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_work_location_id", fmt.Sprint(wkWorkLocationId))
	return builder
}

// 工时制度
//
// 示例值："11344254"
func (builder *CalendarByScopeLeaveReqBuilder) WkWorkingHoursTypeId(wkWorkingHoursTypeId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_working_hours_type_id", fmt.Sprint(wkWorkingHoursTypeId))
	return builder
}

// 职务序列
//
// 示例值："12345"
func (builder *CalendarByScopeLeaveReqBuilder) WkJobFamilyId(wkJobFamilyId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_job_family_id", fmt.Sprint(wkJobFamilyId))
	return builder
}

// 公司 ID
//
// 示例值："24465434"
func (builder *CalendarByScopeLeaveReqBuilder) WkCompanyId(wkCompanyId string) *CalendarByScopeLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wk_company_id", fmt.Sprint(wkCompanyId))
	return builder
}

func (builder *CalendarByScopeLeaveReqBuilder) Build() *CalendarByScopeLeaveReq {
	req := &CalendarByScopeLeaveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type CalendarByScopeLeaveReq struct {
	apiReq *larkcore.ApiReq
}

type CalendarByScopeLeaveRespData struct {
	CalendarWkId *string `json:"calendar_wk_id,omitempty"` // 工作日历id
}

type CalendarByScopeLeaveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CalendarByScopeLeaveRespData `json:"data"` // 业务数据
}

func (resp *CalendarByScopeLeaveResp) Success() bool {
	return resp.Code == 0
}

type LeaveBalancesLeaveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewLeaveBalancesLeaveReqBuilder() *LeaveBalancesLeaveReqBuilder {
	builder := &LeaveBalancesLeaveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
func (builder *LeaveBalancesLeaveReqBuilder) PageToken(pageToken string) *LeaveBalancesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大20
//
// 示例值：20
func (builder *LeaveBalancesLeaveReqBuilder) PageSize(pageSize string) *LeaveBalancesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 查询截止日期，即截止到某天余额数据的日期（不传则默认为当天）
//
// 示例值：2022-07-29
func (builder *LeaveBalancesLeaveReqBuilder) AsOfDate(asOfDate string) *LeaveBalancesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("as_of_date", fmt.Sprint(asOfDate))
	return builder
}

// 员工 ID 列表，最大 100 个（不传则默认查询全部员工）
//
// 示例值：["6919733291281024526"]
func (builder *LeaveBalancesLeaveReqBuilder) EmploymentIdList(employmentIdList []string) *LeaveBalancesLeaveReqBuilder {
	for _, v := range employmentIdList {
		builder.apiReq.QueryParams.Add("employment_id_list", fmt.Sprint(v))
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *LeaveBalancesLeaveReqBuilder) UserIdType(userIdType string) *LeaveBalancesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 查询时区
//
// 示例值：Asia/Shanghai
func (builder *LeaveBalancesLeaveReqBuilder) TimeZone(timeZone string) *LeaveBalancesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("time_zone", fmt.Sprint(timeZone))
	return builder
}

// 是否获取离职折算字段
//
// 示例值：true
func (builder *LeaveBalancesLeaveReqBuilder) IncludeOffboard(includeOffboard bool) *LeaveBalancesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("include_offboard", fmt.Sprint(includeOffboard))
	return builder
}

func (builder *LeaveBalancesLeaveReqBuilder) Build() *LeaveBalancesLeaveReq {
	req := &LeaveBalancesLeaveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type LeaveBalancesLeaveReq struct {
	apiReq *larkcore.ApiReq
}

type LeaveBalancesLeaveRespData struct {
	EmploymentLeaveBalanceList []*EmploymentLeaveBalance `json:"employment_leave_balance_list,omitempty"` // 员工假期余额信息列表

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type LeaveBalancesLeaveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *LeaveBalancesLeaveRespData `json:"data"` // 业务数据
}

func (resp *LeaveBalancesLeaveResp) Success() bool {
	return resp.Code == 0
}

type LeaveRequestHistoryLeaveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewLeaveRequestHistoryLeaveReqBuilder() *LeaveRequestHistoryLeaveReqBuilder {
	builder := &LeaveRequestHistoryLeaveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
func (builder *LeaveRequestHistoryLeaveReqBuilder) PageToken(pageToken string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *LeaveRequestHistoryLeaveReqBuilder) PageSize(pageSize string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 员工 ID 列表，最大 100 个（不传则默认查询全部员工）
//
// 示例值：["6919733291281024526"]
func (builder *LeaveRequestHistoryLeaveReqBuilder) EmploymentIdList(employmentIdList []string) *LeaveRequestHistoryLeaveReqBuilder {
	for _, v := range employmentIdList {
		builder.apiReq.QueryParams.Add("employment_id_list", fmt.Sprint(v))
	}
	return builder
}

// 休假发起人 ID 列表，最大 100 个
//
// 示例值：["6919733291281024526"]
func (builder *LeaveRequestHistoryLeaveReqBuilder) InitiatorIdList(initiatorIdList []string) *LeaveRequestHistoryLeaveReqBuilder {
	for _, v := range initiatorIdList {
		builder.apiReq.QueryParams.Add("initiator_id_list", fmt.Sprint(v))
	}
	return builder
}

// 请假记录的状态;;可选值有：;;- 1：已通过;;- 2：审批中;;- 3：审批中（更正）;;- 4：审批中（取消休假）;;- 5：审批中（返岗）;;- 6：已返岗;;- 7：已拒绝;;- 8：已取消;;- 9：已撤回
//
// 示例值：["1", "2"]
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveRequestStatus(leaveRequestStatus []string) *LeaveRequestHistoryLeaveReqBuilder {
	for _, v := range leaveRequestStatus {
		builder.apiReq.QueryParams.Add("leave_request_status", fmt.Sprint(v))
	}
	return builder
}

// 假期类型 ID 列表，枚举值可通过【获取假期类型列表】接口获取
//
// 示例值：["1"]
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveTypeIdList(leaveTypeIdList []string) *LeaveRequestHistoryLeaveReqBuilder {
	for _, v := range leaveTypeIdList {
		builder.apiReq.QueryParams.Add("leave_type_id_list", fmt.Sprint(v))
	}
	return builder
}

// 休假开始时间晚于等于的日期
//
// 示例值：2022-07-20 morning
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveStartDateMin(leaveStartDateMin string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_start_date_min", fmt.Sprint(leaveStartDateMin))
	return builder
}

// 休假开始时间早于等于的日期
//
// 示例值：2022-07-20 morning
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveStartDateMax(leaveStartDateMax string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_start_date_max", fmt.Sprint(leaveStartDateMax))
	return builder
}

// 休假结束时间晚于等于的日期
//
// 示例值：2022-07-20 morning
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveEndDateMin(leaveEndDateMin string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_end_date_min", fmt.Sprint(leaveEndDateMin))
	return builder
}

// 休假结束时间早于等于的日期
//
// 示例值：2022-07-20 morning
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveEndDateMax(leaveEndDateMax string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_end_date_max", fmt.Sprint(leaveEndDateMax))
	return builder
}

// 休假发起时间晚于等于的日期
//
// 示例值：2022-07-20 morning
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveSubmitDateMin(leaveSubmitDateMin string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_submit_date_min", fmt.Sprint(leaveSubmitDateMin))
	return builder
}

// 休假发起时间早于等于的日期
//
// 示例值：2022-07-20 morning
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveSubmitDateMax(leaveSubmitDateMax string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_submit_date_max", fmt.Sprint(leaveSubmitDateMax))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *LeaveRequestHistoryLeaveReqBuilder) UserIdType(userIdType string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 请假记录更新时间晚于等于的时间
//
// 示例值：2022-10-24 10:00:00
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveUpdateTimeMin(leaveUpdateTimeMin string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_update_time_min", fmt.Sprint(leaveUpdateTimeMin))
	return builder
}

// 请假记录更新时间早于等于的时间
//
// 示例值：2022-10-24 10:00:00
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveUpdateTimeMax(leaveUpdateTimeMax string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_update_time_max", fmt.Sprint(leaveUpdateTimeMax))
	return builder
}

// 是否返回请假详情，若为true，将在每条请假记录的details字段返回请假详情
//
// 示例值：false
func (builder *LeaveRequestHistoryLeaveReqBuilder) ReturnDetail(returnDetail bool) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("return_detail", fmt.Sprint(returnDetail))
	return builder
}

// 指定过滤长/短假类型，0表示不过滤，1表示仅获取短假，2表示仅获取长假, 默认0
//
// 示例值：1
func (builder *LeaveRequestHistoryLeaveReqBuilder) LeaveTermType(leaveTermType int) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("leave_term_type", fmt.Sprint(leaveTermType))
	return builder
}

// 请假记录所在时区
//
// 示例值：Asia/Shanghai
func (builder *LeaveRequestHistoryLeaveReqBuilder) TimeZone(timeZone string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("time_zone", fmt.Sprint(timeZone))
	return builder
}

// 请假记录数据源，1表示中国大陆休假，2表示海外休假，不传或0表示不过滤
//
// 示例值：1
func (builder *LeaveRequestHistoryLeaveReqBuilder) DataSource(dataSource int) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("data_source", fmt.Sprint(dataSource))
	return builder
}

// 请假记录DB更新时间晚于等于的时间
//
// 示例值：2022-10-24 10:00:00
func (builder *LeaveRequestHistoryLeaveReqBuilder) DbUpdateTimeMin(dbUpdateTimeMin string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("db_update_time_min", fmt.Sprint(dbUpdateTimeMin))
	return builder
}

// 请假记录DB更新时间早于等于的时间
//
// 示例值：2022-10-24 10:00:00
func (builder *LeaveRequestHistoryLeaveReqBuilder) DbUpdateTimeMax(dbUpdateTimeMax string) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("db_update_time_max", fmt.Sprint(dbUpdateTimeMax))
	return builder
}

// WorkDay专用 是否返回0值的请假记录，若为true，将返回0值的请假记录
//
// 示例值：false
func (builder *LeaveRequestHistoryLeaveReqBuilder) WdNeedAmountZeroRecords(wdNeedAmountZeroRecords bool) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wd_need_amount_zero_records", fmt.Sprint(wdNeedAmountZeroRecords))
	return builder
}

// WorkDay专用 是否拒绝和取消的请假记录，若为true，将返回拒绝和取消的请假记录
//
// 示例值：false
func (builder *LeaveRequestHistoryLeaveReqBuilder) WdNeedDeniedAndCanceledRecord(wdNeedDeniedAndCanceledRecord bool) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wd_need_denied_and_canceled_record", fmt.Sprint(wdNeedDeniedAndCanceledRecord))
	return builder
}

// WorkDay专用 扣薪类型, 1不参与算薪 2影响算薪 3不影响算薪
//
// 示例值：1
func (builder *LeaveRequestHistoryLeaveReqBuilder) WdPaidType(wdPaidType int) *LeaveRequestHistoryLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("wd_paid_type", fmt.Sprint(wdPaidType))
	return builder
}

func (builder *LeaveRequestHistoryLeaveReqBuilder) Build() *LeaveRequestHistoryLeaveReq {
	req := &LeaveRequestHistoryLeaveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type LeaveRequestHistoryLeaveReq struct {
	apiReq *larkcore.ApiReq
}

type LeaveRequestHistoryLeaveRespData struct {
	LeaveRequestList []*LeaveRequest `json:"leave_request_list,omitempty"` // 请假记录信息列表

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type LeaveRequestHistoryLeaveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *LeaveRequestHistoryLeaveRespData `json:"data"` // 业务数据
}

func (resp *LeaveRequestHistoryLeaveResp) Success() bool {
	return resp.Code == 0
}

type LeaveTypesLeaveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewLeaveTypesLeaveReqBuilder() *LeaveTypesLeaveReqBuilder {
	builder := &LeaveTypesLeaveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
func (builder *LeaveTypesLeaveReqBuilder) PageToken(pageToken string) *LeaveTypesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *LeaveTypesLeaveReqBuilder) PageSize(pageSize string) *LeaveTypesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 假期类型状态（不传则为全部）;;可选值有：;;- 1：已启用;;- 2：已停用
//
// 示例值：1
func (builder *LeaveTypesLeaveReqBuilder) Status(status string) *LeaveTypesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("status", fmt.Sprint(status))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *LeaveTypesLeaveReqBuilder) UserIdType(userIdType string) *LeaveTypesLeaveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *LeaveTypesLeaveReqBuilder) Build() *LeaveTypesLeaveReq {
	req := &LeaveTypesLeaveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type LeaveTypesLeaveReq struct {
	apiReq *larkcore.ApiReq
}

type LeaveTypesLeaveRespData struct {
	LeaveTypeList []*LeaveType `json:"leave_type_list,omitempty"` // 假期类型列表

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type LeaveTypesLeaveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *LeaveTypesLeaveRespData `json:"data"` // 业务数据
}

func (resp *LeaveTypesLeaveResp) Success() bool {
	return resp.Code == 0
}

type WorkCalendarLeaveReqBuilder struct {
	apiReq             *larkcore.ApiReq
	workCalendarFilter *WorkCalendarFilter
}

func NewWorkCalendarLeaveReqBuilder() *WorkCalendarLeaveReqBuilder {
	builder := &WorkCalendarLeaveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *WorkCalendarLeaveReqBuilder) WorkCalendarFilter(workCalendarFilter *WorkCalendarFilter) *WorkCalendarLeaveReqBuilder {
	builder.workCalendarFilter = workCalendarFilter
	return builder
}

func (builder *WorkCalendarLeaveReqBuilder) Build() *WorkCalendarLeaveReq {
	req := &WorkCalendarLeaveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.workCalendarFilter
	return req
}

type WorkCalendarLeaveReq struct {
	apiReq             *larkcore.ApiReq
	WorkCalendarFilter *WorkCalendarFilter `body:""`
}

type WorkCalendarLeaveRespData struct {
	WorkCalendars []*WorkCalendarDetail `json:"work_calendars,omitempty"` // 工作日历列表

	Count *int `json:"count,omitempty"` // 入参count=true，则返回符合条件的工作日历总数
}

type WorkCalendarLeaveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *WorkCalendarLeaveRespData `json:"data"` // 业务数据
}

func (resp *WorkCalendarLeaveResp) Success() bool {
	return resp.Code == 0
}

type WorkCalendarDateLeaveReqBuilder struct {
	apiReq                   *larkcore.ApiReq
	calendarDateByDateFilter *CalendarDateByDateFilter
}

func NewWorkCalendarDateLeaveReqBuilder() *WorkCalendarDateLeaveReqBuilder {
	builder := &WorkCalendarDateLeaveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *WorkCalendarDateLeaveReqBuilder) CalendarDateByDateFilter(calendarDateByDateFilter *CalendarDateByDateFilter) *WorkCalendarDateLeaveReqBuilder {
	builder.calendarDateByDateFilter = calendarDateByDateFilter
	return builder
}

func (builder *WorkCalendarDateLeaveReqBuilder) Build() *WorkCalendarDateLeaveReq {
	req := &WorkCalendarDateLeaveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.calendarDateByDateFilter
	return req
}

type WorkCalendarDateLeaveReq struct {
	apiReq                   *larkcore.ApiReq
	CalendarDateByDateFilter *CalendarDateByDateFilter `body:""`
}

type WorkCalendarDateLeaveRespData struct {
	CalendarDates []*WkCalendarDate `json:"calendar_dates,omitempty"` // 日期类型列表
}

type WorkCalendarDateLeaveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *WorkCalendarDateLeaveRespData `json:"data"` // 业务数据
}

func (resp *WorkCalendarDateLeaveResp) Success() bool {
	return resp.Code == 0
}

type CreateLeaveGrantingRecordReqBodyBuilder struct {
	leaveTypeId     string // 假期类型 ID，枚举值可通过【获取假期类型列表】接口获取（若假期类型下存在假期子类，此处仅支持传入假期子类的 ID）
	leaveTypeIdFlag bool

	employmentId     string // 员工 ID
	employmentIdFlag bool

	grantingQuantity     string // 授予数量
	grantingQuantityFlag bool

	grantingUnit     int // 授予时长单位;;可选值有：;;- 1: 天;- 2: 小时
	grantingUnitFlag bool

	effectiveDate     string // 生效时间
	effectiveDateFlag bool

	expirationDate     string // 失效时间
	expirationDateFlag bool

	sectionType     int // 是否参与折算
	sectionTypeFlag bool

	reason     []*I18n // 授予原因
	reasonFlag bool

	externalId     string // 自定义外部 ID，可用于避免数据重复写入（不能超过 64 字符）
	externalIdFlag bool
}

func NewCreateLeaveGrantingRecordReqBodyBuilder() *CreateLeaveGrantingRecordReqBodyBuilder {
	builder := &CreateLeaveGrantingRecordReqBodyBuilder{}
	return builder
}

// 假期类型 ID，枚举值可通过【获取假期类型列表】接口获取（若假期类型下存在假期子类，此处仅支持传入假期子类的 ID）
//
//示例值：7111688079785723436
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) LeaveTypeId(leaveTypeId string) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 员工 ID
//
//示例值：6982509313466189342
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) EmploymentId(employmentId string) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 授予数量
//
//示例值：0.5
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) GrantingQuantity(grantingQuantity string) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.grantingQuantity = grantingQuantity
	builder.grantingQuantityFlag = true
	return builder
}

// 授予时长单位;;可选值有：;;- 1: 天;- 2: 小时
//
//示例值：1
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) GrantingUnit(grantingUnit int) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.grantingUnit = grantingUnit
	builder.grantingUnitFlag = true
	return builder
}

// 生效时间
//
//示例值：2022-01-01
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) EffectiveDate(effectiveDate string) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间
//
//示例值：2022-01-01
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) ExpirationDate(expirationDate string) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否参与折算
//
//示例值：1
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) SectionType(sectionType int) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.sectionType = sectionType
	builder.sectionTypeFlag = true
	return builder
}

// 授予原因
//
//示例值：
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) Reason(reason []*I18n) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 自定义外部 ID，可用于避免数据重复写入（不能超过 64 字符）
//
//示例值：111
func (builder *CreateLeaveGrantingRecordReqBodyBuilder) ExternalId(externalId string) *CreateLeaveGrantingRecordReqBodyBuilder {
	builder.externalId = externalId
	builder.externalIdFlag = true
	return builder
}

func (builder *CreateLeaveGrantingRecordReqBodyBuilder) Build() *CreateLeaveGrantingRecordReqBody {
	req := &CreateLeaveGrantingRecordReqBody{}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.grantingQuantityFlag {
		req.GrantingQuantity = &builder.grantingQuantity
	}
	if builder.grantingUnitFlag {
		req.GrantingUnit = &builder.grantingUnit
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate
	}
	if builder.sectionTypeFlag {
		req.SectionType = &builder.sectionType
	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.externalIdFlag {
		req.ExternalId = &builder.externalId
	}
	return req
}

type CreateLeaveGrantingRecordPathReqBodyBuilder struct {
	leaveTypeId          string
	leaveTypeIdFlag      bool
	employmentId         string
	employmentIdFlag     bool
	grantingQuantity     string
	grantingQuantityFlag bool
	grantingUnit         int
	grantingUnitFlag     bool
	effectiveDate        string
	effectiveDateFlag    bool
	expirationDate       string
	expirationDateFlag   bool
	sectionType          int
	sectionTypeFlag      bool
	reason               []*I18n
	reasonFlag           bool
	externalId           string
	externalIdFlag       bool
}

func NewCreateLeaveGrantingRecordPathReqBodyBuilder() *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder := &CreateLeaveGrantingRecordPathReqBodyBuilder{}
	return builder
}

// 假期类型 ID，枚举值可通过【获取假期类型列表】接口获取（若假期类型下存在假期子类，此处仅支持传入假期子类的 ID）
//
// 示例值：7111688079785723436
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) LeaveTypeId(leaveTypeId string) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 员工 ID
//
// 示例值：6982509313466189342
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) EmploymentId(employmentId string) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 授予数量
//
// 示例值：0.5
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) GrantingQuantity(grantingQuantity string) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.grantingQuantity = grantingQuantity
	builder.grantingQuantityFlag = true
	return builder
}

// 授予时长单位;;可选值有：;;- 1: 天;- 2: 小时
//
// 示例值：1
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) GrantingUnit(grantingUnit int) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.grantingUnit = grantingUnit
	builder.grantingUnitFlag = true
	return builder
}

// 生效时间
//
// 示例值：2022-01-01
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) EffectiveDate(effectiveDate string) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2022-01-01
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) ExpirationDate(expirationDate string) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否参与折算
//
// 示例值：1
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) SectionType(sectionType int) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.sectionType = sectionType
	builder.sectionTypeFlag = true
	return builder
}

// 授予原因
//
// 示例值：
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) Reason(reason []*I18n) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 自定义外部 ID，可用于避免数据重复写入（不能超过 64 字符）
//
// 示例值：111
func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) ExternalId(externalId string) *CreateLeaveGrantingRecordPathReqBodyBuilder {
	builder.externalId = externalId
	builder.externalIdFlag = true
	return builder
}

func (builder *CreateLeaveGrantingRecordPathReqBodyBuilder) Build() (*CreateLeaveGrantingRecordReqBody, error) {
	req := &CreateLeaveGrantingRecordReqBody{}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.grantingQuantityFlag {
		req.GrantingQuantity = &builder.grantingQuantity
	}
	if builder.grantingUnitFlag {
		req.GrantingUnit = &builder.grantingUnit
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate
	}
	if builder.sectionTypeFlag {
		req.SectionType = &builder.sectionType
	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.externalIdFlag {
		req.ExternalId = &builder.externalId
	}
	return req, nil
}

type CreateLeaveGrantingRecordReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateLeaveGrantingRecordReqBody
}

func NewCreateLeaveGrantingRecordReqBuilder() *CreateLeaveGrantingRecordReqBuilder {
	builder := &CreateLeaveGrantingRecordReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：open_id
func (builder *CreateLeaveGrantingRecordReqBuilder) UserIdType(userIdType string) *CreateLeaveGrantingRecordReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 向飞书人事休假系统写入假期授予记录
func (builder *CreateLeaveGrantingRecordReqBuilder) Body(body *CreateLeaveGrantingRecordReqBody) *CreateLeaveGrantingRecordReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateLeaveGrantingRecordReqBuilder) Build() *CreateLeaveGrantingRecordReq {
	req := &CreateLeaveGrantingRecordReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateLeaveGrantingRecordReqBody struct {
	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型 ID，枚举值可通过【获取假期类型列表】接口获取（若假期类型下存在假期子类，此处仅支持传入假期子类的 ID）

	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	GrantingQuantity *string `json:"granting_quantity,omitempty"` // 授予数量

	GrantingUnit *int `json:"granting_unit,omitempty"` // 授予时长单位;;可选值有：;;- 1: 天;- 2: 小时

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间

	SectionType *int `json:"section_type,omitempty"` // 是否参与折算

	Reason []*I18n `json:"reason,omitempty"` // 授予原因

	ExternalId *string `json:"external_id,omitempty"` // 自定义外部 ID，可用于避免数据重复写入（不能超过 64 字符）
}

type CreateLeaveGrantingRecordReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateLeaveGrantingRecordReqBody `body:""`
}

type CreateLeaveGrantingRecordRespData struct {
	LeaveGrantingRecord *LeaveGrantingRecord `json:"leave_granting_record,omitempty"` // 假期授予记录
}

type CreateLeaveGrantingRecordResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateLeaveGrantingRecordRespData `json:"data"` // 业务数据
}

func (resp *CreateLeaveGrantingRecordResp) Success() bool {
	return resp.Code == 0
}

type DeleteLeaveGrantingRecordReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteLeaveGrantingRecordReqBuilder() *DeleteLeaveGrantingRecordReqBuilder {
	builder := &DeleteLeaveGrantingRecordReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 假期授予记录 ID
//
// 示例值：6893014062142064135
func (builder *DeleteLeaveGrantingRecordReqBuilder) LeaveGrantingRecordId(leaveGrantingRecordId string) *DeleteLeaveGrantingRecordReqBuilder {
	builder.apiReq.PathParams.Set("leave_granting_record_id", fmt.Sprint(leaveGrantingRecordId))
	return builder
}

func (builder *DeleteLeaveGrantingRecordReqBuilder) Build() *DeleteLeaveGrantingRecordReq {
	req := &DeleteLeaveGrantingRecordReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteLeaveGrantingRecordReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteLeaveGrantingRecordResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteLeaveGrantingRecordResp) Success() bool {
	return resp.Code == 0
}

type CreateLocationReqBuilder struct {
	apiReq   *larkcore.ApiReq
	location *Location
}

func NewCreateLocationReqBuilder() *CreateLocationReqBuilder {
	builder := &CreateLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateLocationReqBuilder) ClientToken(clientToken string) *CreateLocationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建地点
func (builder *CreateLocationReqBuilder) Location(location *Location) *CreateLocationReqBuilder {
	builder.location = location
	return builder
}

func (builder *CreateLocationReqBuilder) Build() *CreateLocationReq {
	req := &CreateLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.location
	return req
}

type CreateLocationReq struct {
	apiReq   *larkcore.ApiReq
	Location *Location `body:""`
}

type CreateLocationRespData struct {
	Location *Location `json:"location,omitempty"` // 创建成功的地点信息
}

type CreateLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateLocationRespData `json:"data"` // 业务数据
}

func (resp *CreateLocationResp) Success() bool {
	return resp.Code == 0
}

type DeleteLocationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteLocationReqBuilder() *DeleteLocationReqBuilder {
	builder := &DeleteLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的地点 ID
//
// 示例值：4312443243
func (builder *DeleteLocationReqBuilder) LocationId(locationId string) *DeleteLocationReqBuilder {
	builder.apiReq.PathParams.Set("location_id", fmt.Sprint(locationId))
	return builder
}

func (builder *DeleteLocationReqBuilder) Build() *DeleteLocationReq {
	req := &DeleteLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteLocationReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteLocationResp) Success() bool {
	return resp.Code == 0
}

type GetLocationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetLocationReqBuilder() *GetLocationReqBuilder {
	builder := &GetLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 地点 ID
//
// 示例值：1215
func (builder *GetLocationReqBuilder) LocationId(locationId string) *GetLocationReqBuilder {
	builder.apiReq.PathParams.Set("location_id", fmt.Sprint(locationId))
	return builder
}

func (builder *GetLocationReqBuilder) Build() *GetLocationReq {
	req := &GetLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetLocationReq struct {
	apiReq *larkcore.ApiReq
}

type GetLocationRespData struct {
	Location *Location `json:"location,omitempty"` // 地点信息
}

type GetLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetLocationRespData `json:"data"` // 业务数据
}

func (resp *GetLocationResp) Success() bool {
	return resp.Code == 0
}

type ListLocationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListLocationReqBuilder() *ListLocationReqBuilder {
	builder := &ListLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListLocationReqBuilder) PageToken(pageToken string) *ListLocationReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListLocationReqBuilder) PageSize(pageSize string) *ListLocationReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListLocationReqBuilder) Build() *ListLocationReq {
	req := &ListLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListLocationReq struct {
	apiReq *larkcore.ApiReq
}

type ListLocationRespData struct {
	Items []*Location `json:"items,omitempty"` // 查询的地点信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListLocationRespData `json:"data"` // 业务数据
}

func (resp *ListLocationResp) Success() bool {
	return resp.Code == 0
}

type CreateNationalIdTypeReqBuilder struct {
	apiReq         *larkcore.ApiReq
	nationalIdType *NationalIdType
}

func NewCreateNationalIdTypeReqBuilder() *CreateNationalIdTypeReqBuilder {
	builder := &CreateNationalIdTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateNationalIdTypeReqBuilder) ClientToken(clientToken string) *CreateNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建国家证件类型
func (builder *CreateNationalIdTypeReqBuilder) NationalIdType(nationalIdType *NationalIdType) *CreateNationalIdTypeReqBuilder {
	builder.nationalIdType = nationalIdType
	return builder
}

func (builder *CreateNationalIdTypeReqBuilder) Build() *CreateNationalIdTypeReq {
	req := &CreateNationalIdTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.nationalIdType
	return req
}

type CreateNationalIdTypeReq struct {
	apiReq         *larkcore.ApiReq
	NationalIdType *NationalIdType `body:""`
}

type CreateNationalIdTypeRespData struct {
	NationalIdType *NationalIdType `json:"national_id_type,omitempty"` // 创建成功的国家证件类型数据
}

type CreateNationalIdTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateNationalIdTypeRespData `json:"data"` // 业务数据
}

func (resp *CreateNationalIdTypeResp) Success() bool {
	return resp.Code == 0
}

type DeleteNationalIdTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteNationalIdTypeReqBuilder() *DeleteNationalIdTypeReqBuilder {
	builder := &DeleteNationalIdTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的国家证件类型 ID
//
// 示例值：27837817381
func (builder *DeleteNationalIdTypeReqBuilder) NationalIdTypeId(nationalIdTypeId string) *DeleteNationalIdTypeReqBuilder {
	builder.apiReq.PathParams.Set("national_id_type_id", fmt.Sprint(nationalIdTypeId))
	return builder
}

func (builder *DeleteNationalIdTypeReqBuilder) Build() *DeleteNationalIdTypeReq {
	req := &DeleteNationalIdTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteNationalIdTypeReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteNationalIdTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteNationalIdTypeResp) Success() bool {
	return resp.Code == 0
}

type GetNationalIdTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetNationalIdTypeReqBuilder() *GetNationalIdTypeReqBuilder {
	builder := &GetNationalIdTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 证件类型 ID
//
// 示例值：121515
func (builder *GetNationalIdTypeReqBuilder) NationalIdTypeId(nationalIdTypeId string) *GetNationalIdTypeReqBuilder {
	builder.apiReq.PathParams.Set("national_id_type_id", fmt.Sprint(nationalIdTypeId))
	return builder
}

func (builder *GetNationalIdTypeReqBuilder) Build() *GetNationalIdTypeReq {
	req := &GetNationalIdTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetNationalIdTypeReq struct {
	apiReq *larkcore.ApiReq
}

type GetNationalIdTypeRespData struct {
	NationalIdType *NationalIdType `json:"national_id_type,omitempty"` // 国家证件类型信息
}

type GetNationalIdTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetNationalIdTypeRespData `json:"data"` // 业务数据
}

func (resp *GetNationalIdTypeResp) Success() bool {
	return resp.Code == 0
}

type ListNationalIdTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListNationalIdTypeReqBuilder() *ListNationalIdTypeReqBuilder {
	builder := &ListNationalIdTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListNationalIdTypeReqBuilder) PageToken(pageToken string) *ListNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListNationalIdTypeReqBuilder) PageSize(pageSize string) *ListNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 证件类型
//
// 示例值：regular_passport
func (builder *ListNationalIdTypeReqBuilder) IdentificationType(identificationType string) *ListNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("identification_type", fmt.Sprint(identificationType))
	return builder
}

// 证件类型编码
//
// 示例值：MYS-ID
func (builder *ListNationalIdTypeReqBuilder) Code(code string) *ListNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("code", fmt.Sprint(code))
	return builder
}

// 国家地区ID
//
// 示例值：6862995749043439111
func (builder *ListNationalIdTypeReqBuilder) CountryRegionId(countryRegionId string) *ListNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("country_region_id", fmt.Sprint(countryRegionId))
	return builder
}

func (builder *ListNationalIdTypeReqBuilder) Build() *ListNationalIdTypeReq {
	req := &ListNationalIdTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListNationalIdTypeReq struct {
	apiReq *larkcore.ApiReq
}

type ListNationalIdTypeRespData struct {
	Items []*NationalIdType `json:"items,omitempty"` // 查询的国家证件类型信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListNationalIdTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListNationalIdTypeRespData `json:"data"` // 业务数据
}

func (resp *ListNationalIdTypeResp) Success() bool {
	return resp.Code == 0
}

type PatchNationalIdTypeReqBuilder struct {
	apiReq         *larkcore.ApiReq
	nationalIdType *NationalIdType
}

func NewPatchNationalIdTypeReqBuilder() *PatchNationalIdTypeReqBuilder {
	builder := &PatchNationalIdTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 证件类型ID
//
// 示例值：1616161616
func (builder *PatchNationalIdTypeReqBuilder) NationalIdTypeId(nationalIdTypeId string) *PatchNationalIdTypeReqBuilder {
	builder.apiReq.PathParams.Set("national_id_type_id", fmt.Sprint(nationalIdTypeId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchNationalIdTypeReqBuilder) ClientToken(clientToken string) *PatchNationalIdTypeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新国家证件类型
func (builder *PatchNationalIdTypeReqBuilder) NationalIdType(nationalIdType *NationalIdType) *PatchNationalIdTypeReqBuilder {
	builder.nationalIdType = nationalIdType
	return builder
}

func (builder *PatchNationalIdTypeReqBuilder) Build() *PatchNationalIdTypeReq {
	req := &PatchNationalIdTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.nationalIdType
	return req
}

type PatchNationalIdTypeReq struct {
	apiReq         *larkcore.ApiReq
	NationalIdType *NationalIdType `body:""`
}

type PatchNationalIdTypeRespData struct {
	NationalIdType *NationalIdType `json:"national_id_type,omitempty"` // 国家证件类型
}

type PatchNationalIdTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchNationalIdTypeRespData `json:"data"` // 业务数据
}

func (resp *PatchNationalIdTypeResp) Success() bool {
	return resp.Code == 0
}

type QueryOffboardingReqBodyBuilder struct {
	active     bool // 是否启用
	activeFlag bool

	offboardingReasonUniqueIdentifier     []string // 离职原因唯一标识列表，用于过滤，最大20个
	offboardingReasonUniqueIdentifierFlag bool
}

func NewQueryOffboardingReqBodyBuilder() *QueryOffboardingReqBodyBuilder {
	builder := &QueryOffboardingReqBodyBuilder{}
	return builder
}

// 是否启用
//
//示例值：true
func (builder *QueryOffboardingReqBodyBuilder) Active(active bool) *QueryOffboardingReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 离职原因唯一标识列表，用于过滤，最大20个
//
//示例值：["reason_for_offboarding_option"]
func (builder *QueryOffboardingReqBodyBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier []string) *QueryOffboardingReqBodyBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

func (builder *QueryOffboardingReqBodyBuilder) Build() *QueryOffboardingReqBody {
	req := &QueryOffboardingReqBody{}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = builder.offboardingReasonUniqueIdentifier
	}
	return req
}

type QueryOffboardingPathReqBodyBuilder struct {
	active                                bool
	activeFlag                            bool
	offboardingReasonUniqueIdentifier     []string
	offboardingReasonUniqueIdentifierFlag bool
}

func NewQueryOffboardingPathReqBodyBuilder() *QueryOffboardingPathReqBodyBuilder {
	builder := &QueryOffboardingPathReqBodyBuilder{}
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *QueryOffboardingPathReqBodyBuilder) Active(active bool) *QueryOffboardingPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 离职原因唯一标识列表，用于过滤，最大20个
//
// 示例值：["reason_for_offboarding_option"]
func (builder *QueryOffboardingPathReqBodyBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier []string) *QueryOffboardingPathReqBodyBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

func (builder *QueryOffboardingPathReqBodyBuilder) Build() (*QueryOffboardingReqBody, error) {
	req := &QueryOffboardingReqBody{}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = builder.offboardingReasonUniqueIdentifier
	}
	return req, nil
}

type QueryOffboardingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryOffboardingReqBody
}

func NewQueryOffboardingReqBuilder() *QueryOffboardingReqBuilder {
	builder := &QueryOffboardingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 查询「飞书人事」-「离职设置」中的离职原因
func (builder *QueryOffboardingReqBuilder) Body(body *QueryOffboardingReqBody) *QueryOffboardingReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryOffboardingReqBuilder) Build() *QueryOffboardingReq {
	req := &QueryOffboardingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type QueryOffboardingReqBody struct {
	Active *bool `json:"active,omitempty"` // 是否启用

	OffboardingReasonUniqueIdentifier []string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因唯一标识列表，用于过滤，最大20个
}

type QueryOffboardingReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryOffboardingReqBody `body:""`
}

type QueryOffboardingRespData struct {
	Items []*OffboardingReason `json:"items,omitempty"` // 离职原因列表
}

type QueryOffboardingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryOffboardingRespData `json:"data"` // 业务数据
}

func (resp *QueryOffboardingResp) Success() bool {
	return resp.Code == 0
}

type SearchOffboardingReqBodyBuilder struct {
	employmentIds     []string // 雇佣 ID 列表，为空默认查询所有离职人员
	employmentIdsFlag bool

	applyInitiatingTimeStart     string // 离职审批发起时间-搜索范围开始，需要与搜索范围结束一同使用
	applyInitiatingTimeStartFlag bool

	applyInitiatingTimeEnd     string // 离职审批发起时间 - 搜索范围结束
	applyInitiatingTimeEndFlag bool

	applyFinishedTimeStart     string // 离职审批结束时间 - 搜索范围开始，需要与搜索范围结束一同使用
	applyFinishedTimeStartFlag bool

	applyFinishedTimeEnd     string // 离职审批结束时间 - 搜索范围结束
	applyFinishedTimeEndFlag bool

	expectedOffboardingDateStart     string // 期望离职日期-搜索范围开始，需要与搜索范围结束一同使用
	expectedOffboardingDateStartFlag bool

	expectedOffboardingDateEnd     string // 期望离职日期 - 搜索范围结束
	expectedOffboardingDateEndFlag bool

	offboardingDateStart     string // 离职日期-搜索范围开始，需要与搜索范围结束一同使用
	offboardingDateStartFlag bool

	offboardingDateEnd     string // 离职日期 - 搜索范围结束
	offboardingDateEndFlag bool

	statuses     []string // 离职状态，多个状态之间为「或」的关系
	statusesFlag bool

	reasons     []string // 离职原因列表 , 可以通过【查询员工离职原因列表】接口获取 ，查询时不返回下级原因相关的离职信息
	reasonsFlag bool

	employeeReasons     []string // 离职原因（员工）列表 , 可以通过【查询员工离职原因列表】接口获取，查询时不返回下级原因相关的离职信息
	employeeReasonsFlag bool
}

func NewSearchOffboardingReqBodyBuilder() *SearchOffboardingReqBodyBuilder {
	builder := &SearchOffboardingReqBodyBuilder{}
	return builder
}

// 雇佣 ID 列表，为空默认查询所有离职人员
//
//示例值：
func (builder *SearchOffboardingReqBodyBuilder) EmploymentIds(employmentIds []string) *SearchOffboardingReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 离职审批发起时间-搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-01-01 11:22:33
func (builder *SearchOffboardingReqBodyBuilder) ApplyInitiatingTimeStart(applyInitiatingTimeStart string) *SearchOffboardingReqBodyBuilder {
	builder.applyInitiatingTimeStart = applyInitiatingTimeStart
	builder.applyInitiatingTimeStartFlag = true
	return builder
}

// 离职审批发起时间 - 搜索范围结束
//
//示例值：2022-01-01 11:22:33
func (builder *SearchOffboardingReqBodyBuilder) ApplyInitiatingTimeEnd(applyInitiatingTimeEnd string) *SearchOffboardingReqBodyBuilder {
	builder.applyInitiatingTimeEnd = applyInitiatingTimeEnd
	builder.applyInitiatingTimeEndFlag = true
	return builder
}

// 离职审批结束时间 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：1641007353
func (builder *SearchOffboardingReqBodyBuilder) ApplyFinishedTimeStart(applyFinishedTimeStart string) *SearchOffboardingReqBodyBuilder {
	builder.applyFinishedTimeStart = applyFinishedTimeStart
	builder.applyFinishedTimeStartFlag = true
	return builder
}

// 离职审批结束时间 - 搜索范围结束
//
//示例值：1641007353
func (builder *SearchOffboardingReqBodyBuilder) ApplyFinishedTimeEnd(applyFinishedTimeEnd string) *SearchOffboardingReqBodyBuilder {
	builder.applyFinishedTimeEnd = applyFinishedTimeEnd
	builder.applyFinishedTimeEndFlag = true
	return builder
}

// 期望离职日期-搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-01-01
func (builder *SearchOffboardingReqBodyBuilder) ExpectedOffboardingDateStart(expectedOffboardingDateStart string) *SearchOffboardingReqBodyBuilder {
	builder.expectedOffboardingDateStart = expectedOffboardingDateStart
	builder.expectedOffboardingDateStartFlag = true
	return builder
}

// 期望离职日期 - 搜索范围结束
//
//示例值：2022-01-01
func (builder *SearchOffboardingReqBodyBuilder) ExpectedOffboardingDateEnd(expectedOffboardingDateEnd string) *SearchOffboardingReqBodyBuilder {
	builder.expectedOffboardingDateEnd = expectedOffboardingDateEnd
	builder.expectedOffboardingDateEndFlag = true
	return builder
}

// 离职日期-搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-01-01
func (builder *SearchOffboardingReqBodyBuilder) OffboardingDateStart(offboardingDateStart string) *SearchOffboardingReqBodyBuilder {
	builder.offboardingDateStart = offboardingDateStart
	builder.offboardingDateStartFlag = true
	return builder
}

// 离职日期 - 搜索范围结束
//
//示例值：2022-01-01
func (builder *SearchOffboardingReqBodyBuilder) OffboardingDateEnd(offboardingDateEnd string) *SearchOffboardingReqBodyBuilder {
	builder.offboardingDateEnd = offboardingDateEnd
	builder.offboardingDateEndFlag = true
	return builder
}

// 离职状态，多个状态之间为「或」的关系
//
//示例值：
func (builder *SearchOffboardingReqBodyBuilder) Statuses(statuses []string) *SearchOffboardingReqBodyBuilder {
	builder.statuses = statuses
	builder.statusesFlag = true
	return builder
}

// 离职原因列表 , 可以通过【查询员工离职原因列表】接口获取 ，查询时不返回下级原因相关的离职信息
//
//示例值：
func (builder *SearchOffboardingReqBodyBuilder) Reasons(reasons []string) *SearchOffboardingReqBodyBuilder {
	builder.reasons = reasons
	builder.reasonsFlag = true
	return builder
}

// 离职原因（员工）列表 , 可以通过【查询员工离职原因列表】接口获取，查询时不返回下级原因相关的离职信息
//
//示例值：
func (builder *SearchOffboardingReqBodyBuilder) EmployeeReasons(employeeReasons []string) *SearchOffboardingReqBodyBuilder {
	builder.employeeReasons = employeeReasons
	builder.employeeReasonsFlag = true
	return builder
}

func (builder *SearchOffboardingReqBodyBuilder) Build() *SearchOffboardingReqBody {
	req := &SearchOffboardingReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.applyInitiatingTimeStartFlag {
		req.ApplyInitiatingTimeStart = &builder.applyInitiatingTimeStart
	}
	if builder.applyInitiatingTimeEndFlag {
		req.ApplyInitiatingTimeEnd = &builder.applyInitiatingTimeEnd
	}
	if builder.applyFinishedTimeStartFlag {
		req.ApplyFinishedTimeStart = &builder.applyFinishedTimeStart
	}
	if builder.applyFinishedTimeEndFlag {
		req.ApplyFinishedTimeEnd = &builder.applyFinishedTimeEnd
	}
	if builder.expectedOffboardingDateStartFlag {
		req.ExpectedOffboardingDateStart = &builder.expectedOffboardingDateStart
	}
	if builder.expectedOffboardingDateEndFlag {
		req.ExpectedOffboardingDateEnd = &builder.expectedOffboardingDateEnd
	}
	if builder.offboardingDateStartFlag {
		req.OffboardingDateStart = &builder.offboardingDateStart
	}
	if builder.offboardingDateEndFlag {
		req.OffboardingDateEnd = &builder.offboardingDateEnd
	}
	if builder.statusesFlag {
		req.Statuses = builder.statuses
	}
	if builder.reasonsFlag {
		req.Reasons = builder.reasons
	}
	if builder.employeeReasonsFlag {
		req.EmployeeReasons = builder.employeeReasons
	}
	return req
}

type SearchOffboardingPathReqBodyBuilder struct {
	employmentIds                    []string
	employmentIdsFlag                bool
	applyInitiatingTimeStart         string
	applyInitiatingTimeStartFlag     bool
	applyInitiatingTimeEnd           string
	applyInitiatingTimeEndFlag       bool
	applyFinishedTimeStart           string
	applyFinishedTimeStartFlag       bool
	applyFinishedTimeEnd             string
	applyFinishedTimeEndFlag         bool
	expectedOffboardingDateStart     string
	expectedOffboardingDateStartFlag bool
	expectedOffboardingDateEnd       string
	expectedOffboardingDateEndFlag   bool
	offboardingDateStart             string
	offboardingDateStartFlag         bool
	offboardingDateEnd               string
	offboardingDateEndFlag           bool
	statuses                         []string
	statusesFlag                     bool
	reasons                          []string
	reasonsFlag                      bool
	employeeReasons                  []string
	employeeReasonsFlag              bool
}

func NewSearchOffboardingPathReqBodyBuilder() *SearchOffboardingPathReqBodyBuilder {
	builder := &SearchOffboardingPathReqBodyBuilder{}
	return builder
}

// 雇佣 ID 列表，为空默认查询所有离职人员
//
// 示例值：
func (builder *SearchOffboardingPathReqBodyBuilder) EmploymentIds(employmentIds []string) *SearchOffboardingPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 离职审批发起时间-搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-01-01 11:22:33
func (builder *SearchOffboardingPathReqBodyBuilder) ApplyInitiatingTimeStart(applyInitiatingTimeStart string) *SearchOffboardingPathReqBodyBuilder {
	builder.applyInitiatingTimeStart = applyInitiatingTimeStart
	builder.applyInitiatingTimeStartFlag = true
	return builder
}

// 离职审批发起时间 - 搜索范围结束
//
// 示例值：2022-01-01 11:22:33
func (builder *SearchOffboardingPathReqBodyBuilder) ApplyInitiatingTimeEnd(applyInitiatingTimeEnd string) *SearchOffboardingPathReqBodyBuilder {
	builder.applyInitiatingTimeEnd = applyInitiatingTimeEnd
	builder.applyInitiatingTimeEndFlag = true
	return builder
}

// 离职审批结束时间 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：1641007353
func (builder *SearchOffboardingPathReqBodyBuilder) ApplyFinishedTimeStart(applyFinishedTimeStart string) *SearchOffboardingPathReqBodyBuilder {
	builder.applyFinishedTimeStart = applyFinishedTimeStart
	builder.applyFinishedTimeStartFlag = true
	return builder
}

// 离职审批结束时间 - 搜索范围结束
//
// 示例值：1641007353
func (builder *SearchOffboardingPathReqBodyBuilder) ApplyFinishedTimeEnd(applyFinishedTimeEnd string) *SearchOffboardingPathReqBodyBuilder {
	builder.applyFinishedTimeEnd = applyFinishedTimeEnd
	builder.applyFinishedTimeEndFlag = true
	return builder
}

// 期望离职日期-搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-01-01
func (builder *SearchOffboardingPathReqBodyBuilder) ExpectedOffboardingDateStart(expectedOffboardingDateStart string) *SearchOffboardingPathReqBodyBuilder {
	builder.expectedOffboardingDateStart = expectedOffboardingDateStart
	builder.expectedOffboardingDateStartFlag = true
	return builder
}

// 期望离职日期 - 搜索范围结束
//
// 示例值：2022-01-01
func (builder *SearchOffboardingPathReqBodyBuilder) ExpectedOffboardingDateEnd(expectedOffboardingDateEnd string) *SearchOffboardingPathReqBodyBuilder {
	builder.expectedOffboardingDateEnd = expectedOffboardingDateEnd
	builder.expectedOffboardingDateEndFlag = true
	return builder
}

// 离职日期-搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-01-01
func (builder *SearchOffboardingPathReqBodyBuilder) OffboardingDateStart(offboardingDateStart string) *SearchOffboardingPathReqBodyBuilder {
	builder.offboardingDateStart = offboardingDateStart
	builder.offboardingDateStartFlag = true
	return builder
}

// 离职日期 - 搜索范围结束
//
// 示例值：2022-01-01
func (builder *SearchOffboardingPathReqBodyBuilder) OffboardingDateEnd(offboardingDateEnd string) *SearchOffboardingPathReqBodyBuilder {
	builder.offboardingDateEnd = offboardingDateEnd
	builder.offboardingDateEndFlag = true
	return builder
}

// 离职状态，多个状态之间为「或」的关系
//
// 示例值：
func (builder *SearchOffboardingPathReqBodyBuilder) Statuses(statuses []string) *SearchOffboardingPathReqBodyBuilder {
	builder.statuses = statuses
	builder.statusesFlag = true
	return builder
}

// 离职原因列表 , 可以通过【查询员工离职原因列表】接口获取 ，查询时不返回下级原因相关的离职信息
//
// 示例值：
func (builder *SearchOffboardingPathReqBodyBuilder) Reasons(reasons []string) *SearchOffboardingPathReqBodyBuilder {
	builder.reasons = reasons
	builder.reasonsFlag = true
	return builder
}

// 离职原因（员工）列表 , 可以通过【查询员工离职原因列表】接口获取，查询时不返回下级原因相关的离职信息
//
// 示例值：
func (builder *SearchOffboardingPathReqBodyBuilder) EmployeeReasons(employeeReasons []string) *SearchOffboardingPathReqBodyBuilder {
	builder.employeeReasons = employeeReasons
	builder.employeeReasonsFlag = true
	return builder
}

func (builder *SearchOffboardingPathReqBodyBuilder) Build() (*SearchOffboardingReqBody, error) {
	req := &SearchOffboardingReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.applyInitiatingTimeStartFlag {
		req.ApplyInitiatingTimeStart = &builder.applyInitiatingTimeStart
	}
	if builder.applyInitiatingTimeEndFlag {
		req.ApplyInitiatingTimeEnd = &builder.applyInitiatingTimeEnd
	}
	if builder.applyFinishedTimeStartFlag {
		req.ApplyFinishedTimeStart = &builder.applyFinishedTimeStart
	}
	if builder.applyFinishedTimeEndFlag {
		req.ApplyFinishedTimeEnd = &builder.applyFinishedTimeEnd
	}
	if builder.expectedOffboardingDateStartFlag {
		req.ExpectedOffboardingDateStart = &builder.expectedOffboardingDateStart
	}
	if builder.expectedOffboardingDateEndFlag {
		req.ExpectedOffboardingDateEnd = &builder.expectedOffboardingDateEnd
	}
	if builder.offboardingDateStartFlag {
		req.OffboardingDateStart = &builder.offboardingDateStart
	}
	if builder.offboardingDateEndFlag {
		req.OffboardingDateEnd = &builder.offboardingDateEnd
	}
	if builder.statusesFlag {
		req.Statuses = builder.statuses
	}
	if builder.reasonsFlag {
		req.Reasons = builder.reasons
	}
	if builder.employeeReasonsFlag {
		req.EmployeeReasons = builder.employeeReasons
	}
	return req, nil
}

type SearchOffboardingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchOffboardingReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchOffboardingReqBuilder() *SearchOffboardingReqBuilder {
	builder := &SearchOffboardingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchOffboardingReqBuilder) Limit(limit int) *SearchOffboardingReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchOffboardingReqBuilder) PageSize(pageSize int) *SearchOffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchOffboardingReqBuilder) PageToken(pageToken string) *SearchOffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchOffboardingReqBuilder) UserIdType(userIdType string) *SearchOffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据 雇佣 ID 查询员工离职信息
func (builder *SearchOffboardingReqBuilder) Body(body *SearchOffboardingReqBody) *SearchOffboardingReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchOffboardingReqBuilder) Build() *SearchOffboardingReq {
	req := &SearchOffboardingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchOffboardingReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 雇佣 ID 列表，为空默认查询所有离职人员

	ApplyInitiatingTimeStart *string `json:"apply_initiating_time_start,omitempty"` // 离职审批发起时间-搜索范围开始，需要与搜索范围结束一同使用

	ApplyInitiatingTimeEnd *string `json:"apply_initiating_time_end,omitempty"` // 离职审批发起时间 - 搜索范围结束

	ApplyFinishedTimeStart *string `json:"apply_finished_time_start,omitempty"` // 离职审批结束时间 - 搜索范围开始，需要与搜索范围结束一同使用

	ApplyFinishedTimeEnd *string `json:"apply_finished_time_end,omitempty"` // 离职审批结束时间 - 搜索范围结束

	ExpectedOffboardingDateStart *string `json:"expected_offboarding_date_start,omitempty"` // 期望离职日期-搜索范围开始，需要与搜索范围结束一同使用

	ExpectedOffboardingDateEnd *string `json:"expected_offboarding_date_end,omitempty"` // 期望离职日期 - 搜索范围结束

	OffboardingDateStart *string `json:"offboarding_date_start,omitempty"` // 离职日期-搜索范围开始，需要与搜索范围结束一同使用

	OffboardingDateEnd *string `json:"offboarding_date_end,omitempty"` // 离职日期 - 搜索范围结束

	Statuses []string `json:"statuses,omitempty"` // 离职状态，多个状态之间为「或」的关系

	Reasons []string `json:"reasons,omitempty"` // 离职原因列表 , 可以通过【查询员工离职原因列表】接口获取 ，查询时不返回下级原因相关的离职信息

	EmployeeReasons []string `json:"employee_reasons,omitempty"` // 离职原因（员工）列表 , 可以通过【查询员工离职原因列表】接口获取，查询时不返回下级原因相关的离职信息
}

type SearchOffboardingReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchOffboardingReqBody `body:""`
	Limit  int                       // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchOffboardingRespData struct {
	Items []*Offboarding `json:"items,omitempty"` // 查询的员工离职信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchOffboardingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchOffboardingRespData `json:"data"` // 业务数据
}

func (resp *SearchOffboardingResp) Success() bool {
	return resp.Code == 0
}

type SubmitOffboardingReqBodyBuilder struct {
	offboardingMode     int // 离职方式
	offboardingModeFlag bool

	employmentId     string // 雇员 id
	employmentIdFlag bool

	offboardingDate     string // 离职日期
	offboardingDateFlag bool

	offboardingReasonUniqueIdentifier     string // 离职原因，可通过接口;[【查询员工离职原因列表】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/offboarding/query)获取
	offboardingReasonUniqueIdentifierFlag bool

	offboardingReasonExplanation     string // 离职原因说明，长度限制6000
	offboardingReasonExplanationFlag bool

	initiatorId     string // 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程
	initiatorIdFlag bool

	addBlockList     bool // 是否加入离职屏蔽名单
	addBlockListFlag bool

	blockReason     string // 屏蔽原因
	blockReasonFlag bool

	blockReasonExplanation     string // 屏蔽原因说明
	blockReasonExplanationFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewSubmitOffboardingReqBodyBuilder() *SubmitOffboardingReqBodyBuilder {
	builder := &SubmitOffboardingReqBodyBuilder{}
	return builder
}

// 离职方式
//
//示例值：1
func (builder *SubmitOffboardingReqBodyBuilder) OffboardingMode(offboardingMode int) *SubmitOffboardingReqBodyBuilder {
	builder.offboardingMode = offboardingMode
	builder.offboardingModeFlag = true
	return builder
}

// 雇员 id
//
//示例值：6982509313466189342
func (builder *SubmitOffboardingReqBodyBuilder) EmploymentId(employmentId string) *SubmitOffboardingReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 离职日期
//
//示例值：2022-05-18
func (builder *SubmitOffboardingReqBodyBuilder) OffboardingDate(offboardingDate string) *SubmitOffboardingReqBodyBuilder {
	builder.offboardingDate = offboardingDate
	builder.offboardingDateFlag = true
	return builder
}

// 离职原因，可通过接口;[【查询员工离职原因列表】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/offboarding/query)获取
//
//示例值：reason_for_offboarding_option8
func (builder *SubmitOffboardingReqBodyBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier string) *SubmitOffboardingReqBodyBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 离职原因说明，长度限制6000
//
//示例值：离职原因说明
func (builder *SubmitOffboardingReqBodyBuilder) OffboardingReasonExplanation(offboardingReasonExplanation string) *SubmitOffboardingReqBodyBuilder {
	builder.offboardingReasonExplanation = offboardingReasonExplanation
	builder.offboardingReasonExplanationFlag = true
	return builder
}

// 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程
//
//示例值：6982509313466189341
func (builder *SubmitOffboardingReqBodyBuilder) InitiatorId(initiatorId string) *SubmitOffboardingReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 是否加入离职屏蔽名单
//
//示例值：false
func (builder *SubmitOffboardingReqBodyBuilder) AddBlockList(addBlockList bool) *SubmitOffboardingReqBodyBuilder {
	builder.addBlockList = addBlockList
	builder.addBlockListFlag = true
	return builder
}

// 屏蔽原因
//
//示例值：红线
func (builder *SubmitOffboardingReqBodyBuilder) BlockReason(blockReason string) *SubmitOffboardingReqBodyBuilder {
	builder.blockReason = blockReason
	builder.blockReasonFlag = true
	return builder
}

// 屏蔽原因说明
//
//示例值：xx 年 xx 月 xx 日因 xx 原因红线
func (builder *SubmitOffboardingReqBodyBuilder) BlockReasonExplanation(blockReasonExplanation string) *SubmitOffboardingReqBodyBuilder {
	builder.blockReasonExplanation = blockReasonExplanation
	builder.blockReasonExplanationFlag = true
	return builder
}

// 自定义字段
//
//示例值：
func (builder *SubmitOffboardingReqBodyBuilder) CustomFields(customFields []*ObjectFieldData) *SubmitOffboardingReqBodyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *SubmitOffboardingReqBodyBuilder) Build() *SubmitOffboardingReqBody {
	req := &SubmitOffboardingReqBody{}
	if builder.offboardingModeFlag {
		req.OffboardingMode = &builder.offboardingMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.offboardingDateFlag {
		req.OffboardingDate = &builder.offboardingDate
	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = &builder.offboardingReasonUniqueIdentifier
	}
	if builder.offboardingReasonExplanationFlag {
		req.OffboardingReasonExplanation = &builder.offboardingReasonExplanation
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.addBlockListFlag {
		req.AddBlockList = &builder.addBlockList
	}
	if builder.blockReasonFlag {
		req.BlockReason = &builder.blockReason
	}
	if builder.blockReasonExplanationFlag {
		req.BlockReasonExplanation = &builder.blockReasonExplanation
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type SubmitOffboardingPathReqBodyBuilder struct {
	offboardingMode                       int
	offboardingModeFlag                   bool
	employmentId                          string
	employmentIdFlag                      bool
	offboardingDate                       string
	offboardingDateFlag                   bool
	offboardingReasonUniqueIdentifier     string
	offboardingReasonUniqueIdentifierFlag bool
	offboardingReasonExplanation          string
	offboardingReasonExplanationFlag      bool
	initiatorId                           string
	initiatorIdFlag                       bool
	addBlockList                          bool
	addBlockListFlag                      bool
	blockReason                           string
	blockReasonFlag                       bool
	blockReasonExplanation                string
	blockReasonExplanationFlag            bool
	customFields                          []*ObjectFieldData
	customFieldsFlag                      bool
}

func NewSubmitOffboardingPathReqBodyBuilder() *SubmitOffboardingPathReqBodyBuilder {
	builder := &SubmitOffboardingPathReqBodyBuilder{}
	return builder
}

// 离职方式
//
// 示例值：1
func (builder *SubmitOffboardingPathReqBodyBuilder) OffboardingMode(offboardingMode int) *SubmitOffboardingPathReqBodyBuilder {
	builder.offboardingMode = offboardingMode
	builder.offboardingModeFlag = true
	return builder
}

// 雇员 id
//
// 示例值：6982509313466189342
func (builder *SubmitOffboardingPathReqBodyBuilder) EmploymentId(employmentId string) *SubmitOffboardingPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 离职日期
//
// 示例值：2022-05-18
func (builder *SubmitOffboardingPathReqBodyBuilder) OffboardingDate(offboardingDate string) *SubmitOffboardingPathReqBodyBuilder {
	builder.offboardingDate = offboardingDate
	builder.offboardingDateFlag = true
	return builder
}

// 离职原因，可通过接口;[【查询员工离职原因列表】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/offboarding/query)获取
//
// 示例值：reason_for_offboarding_option8
func (builder *SubmitOffboardingPathReqBodyBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier string) *SubmitOffboardingPathReqBodyBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 离职原因说明，长度限制6000
//
// 示例值：离职原因说明
func (builder *SubmitOffboardingPathReqBodyBuilder) OffboardingReasonExplanation(offboardingReasonExplanation string) *SubmitOffboardingPathReqBodyBuilder {
	builder.offboardingReasonExplanation = offboardingReasonExplanation
	builder.offboardingReasonExplanationFlag = true
	return builder
}

// 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程
//
// 示例值：6982509313466189341
func (builder *SubmitOffboardingPathReqBodyBuilder) InitiatorId(initiatorId string) *SubmitOffboardingPathReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 是否加入离职屏蔽名单
//
// 示例值：false
func (builder *SubmitOffboardingPathReqBodyBuilder) AddBlockList(addBlockList bool) *SubmitOffboardingPathReqBodyBuilder {
	builder.addBlockList = addBlockList
	builder.addBlockListFlag = true
	return builder
}

// 屏蔽原因
//
// 示例值：红线
func (builder *SubmitOffboardingPathReqBodyBuilder) BlockReason(blockReason string) *SubmitOffboardingPathReqBodyBuilder {
	builder.blockReason = blockReason
	builder.blockReasonFlag = true
	return builder
}

// 屏蔽原因说明
//
// 示例值：xx 年 xx 月 xx 日因 xx 原因红线
func (builder *SubmitOffboardingPathReqBodyBuilder) BlockReasonExplanation(blockReasonExplanation string) *SubmitOffboardingPathReqBodyBuilder {
	builder.blockReasonExplanation = blockReasonExplanation
	builder.blockReasonExplanationFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *SubmitOffboardingPathReqBodyBuilder) CustomFields(customFields []*ObjectFieldData) *SubmitOffboardingPathReqBodyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *SubmitOffboardingPathReqBodyBuilder) Build() (*SubmitOffboardingReqBody, error) {
	req := &SubmitOffboardingReqBody{}
	if builder.offboardingModeFlag {
		req.OffboardingMode = &builder.offboardingMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.offboardingDateFlag {
		req.OffboardingDate = &builder.offboardingDate
	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = &builder.offboardingReasonUniqueIdentifier
	}
	if builder.offboardingReasonExplanationFlag {
		req.OffboardingReasonExplanation = &builder.offboardingReasonExplanation
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.addBlockListFlag {
		req.AddBlockList = &builder.addBlockList
	}
	if builder.blockReasonFlag {
		req.BlockReason = &builder.blockReason
	}
	if builder.blockReasonExplanationFlag {
		req.BlockReasonExplanation = &builder.blockReasonExplanation
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req, nil
}

type SubmitOffboardingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SubmitOffboardingReqBody
}

func NewSubmitOffboardingReqBuilder() *SubmitOffboardingReqBuilder {
	builder := &SubmitOffboardingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *SubmitOffboardingReqBuilder) UserIdType(userIdType string) *SubmitOffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 操作员工直接离职
func (builder *SubmitOffboardingReqBuilder) Body(body *SubmitOffboardingReqBody) *SubmitOffboardingReqBuilder {
	builder.body = body
	return builder
}

func (builder *SubmitOffboardingReqBuilder) Build() *SubmitOffboardingReq {
	req := &SubmitOffboardingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SubmitOffboardingReqBody struct {
	OffboardingMode *int `json:"offboarding_mode,omitempty"` // 离职方式

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	OffboardingDate *string `json:"offboarding_date,omitempty"` // 离职日期

	OffboardingReasonUniqueIdentifier *string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因，可通过接口;[【查询员工离职原因列表】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/offboarding/query)获取

	OffboardingReasonExplanation *string `json:"offboarding_reason_explanation,omitempty"` // 离职原因说明，长度限制6000

	InitiatorId *string `json:"initiator_id,omitempty"` // 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程

	AddBlockList *bool `json:"add_block_list,omitempty"` // 是否加入离职屏蔽名单

	BlockReason *string `json:"block_reason,omitempty"` // 屏蔽原因

	BlockReasonExplanation *string `json:"block_reason_explanation,omitempty"` // 屏蔽原因说明

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type SubmitOffboardingReq struct {
	apiReq *larkcore.ApiReq
	Body   *SubmitOffboardingReqBody `body:""`
}

type SubmitOffboardingRespData struct {
	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	OffboardingReasonUniqueIdentifier *string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因

	OffboardingDate *string `json:"offboarding_date,omitempty"` // 离职日期

	OffboardingReasonExplanation *string `json:"offboarding_reason_explanation,omitempty"` // 离职原因说明

	AddBlockList *bool `json:"add_block_list,omitempty"` // 是否加入离职屏蔽名单

	BlockReason *string `json:"block_reason,omitempty"` // 屏蔽原因

	BlockReasonExplanation *string `json:"block_reason_explanation,omitempty"` // 屏蔽原因说明

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间
}

type SubmitOffboardingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SubmitOffboardingRespData `json:"data"` // 业务数据
}

func (resp *SubmitOffboardingResp) Success() bool {
	return resp.Code == 0
}

type CreatePersonReqBuilder struct {
	apiReq *larkcore.ApiReq
	person *Person
}

func NewCreatePersonReqBuilder() *CreatePersonReqBuilder {
	builder := &CreatePersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreatePersonReqBuilder) ClientToken(clientToken string) *CreatePersonReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建人员的个人信息
func (builder *CreatePersonReqBuilder) Person(person *Person) *CreatePersonReqBuilder {
	builder.person = person
	return builder
}

func (builder *CreatePersonReqBuilder) Build() *CreatePersonReq {
	req := &CreatePersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.person
	return req
}

type CreatePersonReq struct {
	apiReq *larkcore.ApiReq
	Person *Person `body:""`
}

type CreatePersonRespData struct {
	Person *Person `json:"person,omitempty"` // 创建成功返回Person信息
}

type CreatePersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreatePersonRespData `json:"data"` // 业务数据
}

func (resp *CreatePersonResp) Success() bool {
	return resp.Code == 0
}

type DeletePersonReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeletePersonReqBuilder() *DeletePersonReqBuilder {
	builder := &DeletePersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的Person ID
//
// 示例值：654637829201
func (builder *DeletePersonReqBuilder) PersonId(personId string) *DeletePersonReqBuilder {
	builder.apiReq.PathParams.Set("person_id", fmt.Sprint(personId))
	return builder
}

func (builder *DeletePersonReqBuilder) Build() *DeletePersonReq {
	req := &DeletePersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeletePersonReq struct {
	apiReq *larkcore.ApiReq
}

type DeletePersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeletePersonResp) Success() bool {
	return resp.Code == 0
}

type GetPersonReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetPersonReqBuilder() *GetPersonReqBuilder {
	builder := &GetPersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// Person ID
//
// 示例值：1616161616
func (builder *GetPersonReqBuilder) PersonId(personId string) *GetPersonReqBuilder {
	builder.apiReq.PathParams.Set("person_id", fmt.Sprint(personId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetPersonReqBuilder) UserIdType(userIdType string) *GetPersonReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetPersonReqBuilder) Build() *GetPersonReq {
	req := &GetPersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetPersonReq struct {
	apiReq *larkcore.ApiReq
}

type GetPersonRespData struct {
	Person *Person `json:"person,omitempty"` // 个人信息
}

type GetPersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetPersonRespData `json:"data"` // 业务数据
}

func (resp *GetPersonResp) Success() bool {
	return resp.Code == 0
}

type PatchPersonReqBuilder struct {
	apiReq *larkcore.ApiReq
	person *Person
}

func NewPatchPersonReqBuilder() *PatchPersonReqBuilder {
	builder := &PatchPersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// person的ID
//
// 示例值：6969828847931885087
func (builder *PatchPersonReqBuilder) PersonId(personId string) *PatchPersonReqBuilder {
	builder.apiReq.PathParams.Set("person_id", fmt.Sprint(personId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchPersonReqBuilder) ClientToken(clientToken string) *PatchPersonReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新个人信息
func (builder *PatchPersonReqBuilder) Person(person *Person) *PatchPersonReqBuilder {
	builder.person = person
	return builder
}

func (builder *PatchPersonReqBuilder) Build() *PatchPersonReq {
	req := &PatchPersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.person
	return req
}

type PatchPersonReq struct {
	apiReq *larkcore.ApiReq
	Person *Person `body:""`
}

type PatchPersonRespData struct {
	Person *Person `json:"person,omitempty"` // 个人信息
}

type PatchPersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchPersonRespData `json:"data"` // 业务数据
}

func (resp *PatchPersonResp) Success() bool {
	return resp.Code == 0
}

type UploadPersonReqBodyBuilder struct {
	fileContent     io.Reader // 文件二进制内容
	fileContentFlag bool

	fileName     string // 文件名称
	fileNameFlag bool
}

func NewUploadPersonReqBodyBuilder() *UploadPersonReqBodyBuilder {
	builder := &UploadPersonReqBodyBuilder{}
	return builder
}

// 文件二进制内容
//
//示例值：file binary
func (builder *UploadPersonReqBodyBuilder) FileContent(fileContent io.Reader) *UploadPersonReqBodyBuilder {
	builder.fileContent = fileContent
	builder.fileContentFlag = true
	return builder
}

// 文件名称
//
//示例值：个人信息
func (builder *UploadPersonReqBodyBuilder) FileName(fileName string) *UploadPersonReqBodyBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

func (builder *UploadPersonReqBodyBuilder) Build() *UploadPersonReqBody {
	req := &UploadPersonReqBody{}
	if builder.fileContentFlag {
		req.FileContent = builder.fileContent
	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName
	}
	return req
}

type UploadPersonPathReqBodyBuilder struct {
	fileContentPath     string // 文件二进制内容
	fileContentPathFlag bool
	fileName            string
	fileNameFlag        bool
}

func NewUploadPersonPathReqBodyBuilder() *UploadPersonPathReqBodyBuilder {
	builder := &UploadPersonPathReqBodyBuilder{}
	return builder
}

// 文件二进制内容
//
// 示例值：file binary
func (builder *UploadPersonPathReqBodyBuilder) FileContentPath(fileContentPath string) *UploadPersonPathReqBodyBuilder {
	builder.fileContentPath = fileContentPath
	builder.fileContentPathFlag = true
	return builder
}

// 文件名称
//
// 示例值：个人信息
func (builder *UploadPersonPathReqBodyBuilder) FileName(fileName string) *UploadPersonPathReqBodyBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

func (builder *UploadPersonPathReqBodyBuilder) Build() (*UploadPersonReqBody, error) {
	req := &UploadPersonReqBody{}
	if builder.fileContentPathFlag {
		data, err := larkcore.File2Bytes(builder.fileContentPath)
		if err != nil {
			return nil, err
		}
		req.FileContent = bytes.NewBuffer(data)
	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName
	}
	return req, nil
}

type UploadPersonReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *UploadPersonReqBody
}

func NewUploadPersonReqBuilder() *UploadPersonReqBuilder {
	builder := &UploadPersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 上传文件
func (builder *UploadPersonReqBuilder) Body(body *UploadPersonReqBody) *UploadPersonReqBuilder {
	builder.body = body
	return builder
}

func (builder *UploadPersonReqBuilder) Build() *UploadPersonReq {
	req := &UploadPersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type UploadPersonReqBody struct {
	FileContent io.Reader `json:"file_content,omitempty"` // 文件二进制内容

	FileName *string `json:"file_name,omitempty"` // 文件名称
}

type UploadPersonReq struct {
	apiReq *larkcore.ApiReq
	Body   *UploadPersonReqBody `body:""`
}

type UploadPersonRespData struct {
	Id *string `json:"id,omitempty"` // 上传文件ID
}

type UploadPersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UploadPersonRespData `json:"data"` // 业务数据
}

func (resp *UploadPersonResp) Success() bool {
	return resp.Code == 0
}

type DeletePreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeletePreHireReqBuilder() *DeletePreHireReqBuilder {
	builder := &DeletePreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的待入职人员信息ID
//
// 示例值：76534545454
func (builder *DeletePreHireReqBuilder) PreHireId(preHireId string) *DeletePreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

func (builder *DeletePreHireReqBuilder) Build() *DeletePreHireReq {
	req := &DeletePreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeletePreHireReq struct {
	apiReq *larkcore.ApiReq
}

type DeletePreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeletePreHireResp) Success() bool {
	return resp.Code == 0
}

type GetPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetPreHireReqBuilder() *GetPreHireReqBuilder {
	builder := &GetPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 待入职ID
//
// 示例值：121215
func (builder *GetPreHireReqBuilder) PreHireId(preHireId string) *GetPreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

func (builder *GetPreHireReqBuilder) Build() *GetPreHireReq {
	req := &GetPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetPreHireReq struct {
	apiReq *larkcore.ApiReq
}

type GetPreHireRespData struct {
	PreHire *PreHire `json:"pre_hire,omitempty"` // 待入职信息
}

type GetPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetPreHireRespData `json:"data"` // 业务数据
}

func (resp *GetPreHireResp) Success() bool {
	return resp.Code == 0
}

type ListPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListPreHireReqBuilder() *ListPreHireReqBuilder {
	builder := &ListPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListPreHireReqBuilder) PageToken(pageToken string) *ListPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListPreHireReqBuilder) PageSize(pageSize string) *ListPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 待入职ID列表
//
// 示例值：
func (builder *ListPreHireReqBuilder) PreHireIds(preHireIds []string) *ListPreHireReqBuilder {
	for _, v := range preHireIds {
		builder.apiReq.QueryParams.Add("pre_hire_ids", fmt.Sprint(v))
	}
	return builder
}

func (builder *ListPreHireReqBuilder) Build() *ListPreHireReq {
	req := &ListPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListPreHireReq struct {
	apiReq *larkcore.ApiReq
}

type ListPreHireRespData struct {
	Items []*PreHireQuery `json:"items,omitempty"` // 查询的待入职信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListPreHireRespData `json:"data"` // 业务数据
}

func (resp *ListPreHireResp) Success() bool {
	return resp.Code == 0
}

type PatchPreHireReqBuilder struct {
	apiReq  *larkcore.ApiReq
	preHire *PreHire
}

func NewPatchPreHireReqBuilder() *PatchPreHireReqBuilder {
	builder := &PatchPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 待入职ID
//
// 示例值：1616161616
func (builder *PatchPreHireReqBuilder) PreHireId(preHireId string) *PatchPreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchPreHireReqBuilder) ClientToken(clientToken string) *PatchPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新待入职数据
func (builder *PatchPreHireReqBuilder) PreHire(preHire *PreHire) *PatchPreHireReqBuilder {
	builder.preHire = preHire
	return builder
}

func (builder *PatchPreHireReqBuilder) Build() *PatchPreHireReq {
	req := &PatchPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.preHire
	return req
}

type PatchPreHireReq struct {
	apiReq  *larkcore.ApiReq
	PreHire *PreHire `body:""`
}

type PatchPreHireRespData struct {
	PreHire *PreHire `json:"pre_hire,omitempty"` // 待入职数据
}

type PatchPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchPreHireRespData `json:"data"` // 业务数据
}

func (resp *PatchPreHireResp) Success() bool {
	return resp.Code == 0
}

type GetProcessFormVariableDataReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetProcessFormVariableDataReqBuilder() *GetProcessFormVariableDataReqBuilder {
	builder := &GetProcessFormVariableDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程ID
//
// 示例值：123456987
func (builder *GetProcessFormVariableDataReqBuilder) ProcessId(processId string) *GetProcessFormVariableDataReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

func (builder *GetProcessFormVariableDataReqBuilder) Build() *GetProcessFormVariableDataReq {
	req := &GetProcessFormVariableDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetProcessFormVariableDataReq struct {
	apiReq *larkcore.ApiReq
}

type GetProcessFormVariableDataRespData struct {
	FieldVariableValues []*FormFieldVariable `json:"field_variable_values,omitempty"` // 流程变量
}

type GetProcessFormVariableDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetProcessFormVariableDataRespData `json:"data"` // 业务数据
}

func (resp *GetProcessFormVariableDataResp) Success() bool {
	return resp.Code == 0
}

type ListSecurityGroupReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListSecurityGroupReqBuilder() *ListSecurityGroupReqBuilder {
	builder := &ListSecurityGroupReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：10
func (builder *ListSecurityGroupReqBuilder) PageToken(pageToken string) *ListSecurityGroupReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListSecurityGroupReqBuilder) PageSize(pageSize string) *ListSecurityGroupReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListSecurityGroupReqBuilder) Build() *ListSecurityGroupReq {
	req := &ListSecurityGroupReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListSecurityGroupReq struct {
	apiReq *larkcore.ApiReq
}

type ListSecurityGroupRespData struct {
	Items []*SecurityGroup `json:"items,omitempty"` // 查询的用户角色信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListSecurityGroupResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSecurityGroupRespData `json:"data"` // 业务数据
}

func (resp *ListSecurityGroupResp) Success() bool {
	return resp.Code == 0
}

type QuerySecurityGroupReqBodyBuilder struct {
	itemList     []*BpRoleOrganization // 角色列表，一次最多支持查询 50 个
	itemListFlag bool

	updatedAtGte     string // 授权时间大于
	updatedAtGteFlag bool

	updatedAtLte     string // 授权时间小于
	updatedAtLteFlag bool
}

func NewQuerySecurityGroupReqBodyBuilder() *QuerySecurityGroupReqBodyBuilder {
	builder := &QuerySecurityGroupReqBodyBuilder{}
	return builder
}

// 角色列表，一次最多支持查询 50 个
//
//示例值：
func (builder *QuerySecurityGroupReqBodyBuilder) ItemList(itemList []*BpRoleOrganization) *QuerySecurityGroupReqBodyBuilder {
	builder.itemList = itemList
	builder.itemListFlag = true
	return builder
}

// 授权时间大于
//
//示例值：1729773628
func (builder *QuerySecurityGroupReqBodyBuilder) UpdatedAtGte(updatedAtGte string) *QuerySecurityGroupReqBodyBuilder {
	builder.updatedAtGte = updatedAtGte
	builder.updatedAtGteFlag = true
	return builder
}

// 授权时间小于
//
//示例值：1729773628
func (builder *QuerySecurityGroupReqBodyBuilder) UpdatedAtLte(updatedAtLte string) *QuerySecurityGroupReqBodyBuilder {
	builder.updatedAtLte = updatedAtLte
	builder.updatedAtLteFlag = true
	return builder
}

func (builder *QuerySecurityGroupReqBodyBuilder) Build() *QuerySecurityGroupReqBody {
	req := &QuerySecurityGroupReqBody{}
	if builder.itemListFlag {
		req.ItemList = builder.itemList
	}
	if builder.updatedAtGteFlag {
		req.UpdatedAtGte = &builder.updatedAtGte
	}
	if builder.updatedAtLteFlag {
		req.UpdatedAtLte = &builder.updatedAtLte
	}
	return req
}

type QuerySecurityGroupPathReqBodyBuilder struct {
	itemList         []*BpRoleOrganization
	itemListFlag     bool
	updatedAtGte     string
	updatedAtGteFlag bool
	updatedAtLte     string
	updatedAtLteFlag bool
}

func NewQuerySecurityGroupPathReqBodyBuilder() *QuerySecurityGroupPathReqBodyBuilder {
	builder := &QuerySecurityGroupPathReqBodyBuilder{}
	return builder
}

// 角色列表，一次最多支持查询 50 个
//
// 示例值：
func (builder *QuerySecurityGroupPathReqBodyBuilder) ItemList(itemList []*BpRoleOrganization) *QuerySecurityGroupPathReqBodyBuilder {
	builder.itemList = itemList
	builder.itemListFlag = true
	return builder
}

// 授权时间大于
//
// 示例值：1729773628
func (builder *QuerySecurityGroupPathReqBodyBuilder) UpdatedAtGte(updatedAtGte string) *QuerySecurityGroupPathReqBodyBuilder {
	builder.updatedAtGte = updatedAtGte
	builder.updatedAtGteFlag = true
	return builder
}

// 授权时间小于
//
// 示例值：1729773628
func (builder *QuerySecurityGroupPathReqBodyBuilder) UpdatedAtLte(updatedAtLte string) *QuerySecurityGroupPathReqBodyBuilder {
	builder.updatedAtLte = updatedAtLte
	builder.updatedAtLteFlag = true
	return builder
}

func (builder *QuerySecurityGroupPathReqBodyBuilder) Build() (*QuerySecurityGroupReqBody, error) {
	req := &QuerySecurityGroupReqBody{}
	if builder.itemListFlag {
		req.ItemList = builder.itemList
	}
	if builder.updatedAtGteFlag {
		req.UpdatedAtGte = &builder.updatedAtGte
	}
	if builder.updatedAtLteFlag {
		req.UpdatedAtLte = &builder.updatedAtLte
	}
	return req, nil
}

type QuerySecurityGroupReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QuerySecurityGroupReqBody
}

func NewQuerySecurityGroupReqBuilder() *QuerySecurityGroupReqBuilder {
	builder := &QuerySecurityGroupReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QuerySecurityGroupReqBuilder) DepartmentIdType(departmentIdType string) *QuerySecurityGroupReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 通过部门或工作地点，查询对应的 HRBP/属地 BP
func (builder *QuerySecurityGroupReqBuilder) Body(body *QuerySecurityGroupReqBody) *QuerySecurityGroupReqBuilder {
	builder.body = body
	return builder
}

func (builder *QuerySecurityGroupReqBuilder) Build() *QuerySecurityGroupReq {
	req := &QuerySecurityGroupReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QuerySecurityGroupReqBody struct {
	ItemList []*BpRoleOrganization `json:"item_list,omitempty"` // 角色列表，一次最多支持查询 50 个

	UpdatedAtGte *string `json:"updated_at_gte,omitempty"` // 授权时间大于

	UpdatedAtLte *string `json:"updated_at_lte,omitempty"` // 授权时间小于
}

type QuerySecurityGroupReq struct {
	apiReq *larkcore.ApiReq
	Body   *QuerySecurityGroupReqBody `body:""`
}

type QuerySecurityGroupRespData struct {
	HrbpList []*Hrbp `json:"hrbp_list,omitempty"` // HRBP/属地 BP 信息
}

type QuerySecurityGroupResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QuerySecurityGroupRespData `json:"data"` // 业务数据
}

func (resp *QuerySecurityGroupResp) Success() bool {
	return resp.Code == 0
}

type GetSubdivisionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetSubdivisionReqBuilder() *GetSubdivisionReqBuilder {
	builder := &GetSubdivisionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 省份/行政区 ID
//
// 示例值：67489937334909845
func (builder *GetSubdivisionReqBuilder) SubdivisionId(subdivisionId string) *GetSubdivisionReqBuilder {
	builder.apiReq.PathParams.Set("subdivision_id", fmt.Sprint(subdivisionId))
	return builder
}

func (builder *GetSubdivisionReqBuilder) Build() *GetSubdivisionReq {
	req := &GetSubdivisionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetSubdivisionReq struct {
	apiReq *larkcore.ApiReq
}

type GetSubdivisionRespData struct {
	Subdivision *Subdivision `json:"subdivision,omitempty"` // 国家/地址信息
}

type GetSubdivisionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetSubdivisionRespData `json:"data"` // 业务数据
}

func (resp *GetSubdivisionResp) Success() bool {
	return resp.Code == 0
}

type ListSubdivisionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListSubdivisionReqBuilder() *ListSubdivisionReqBuilder {
	builder := &ListSubdivisionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListSubdivisionReqBuilder) PageToken(pageToken string) *ListSubdivisionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListSubdivisionReqBuilder) PageSize(pageSize string) *ListSubdivisionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 国家/地区id，填写后只查询该国家/地区下的省份/行政区
//
// 示例值：100
func (builder *ListSubdivisionReqBuilder) CountryRegionId(countryRegionId string) *ListSubdivisionReqBuilder {
	builder.apiReq.QueryParams.Set("country_region_id", fmt.Sprint(countryRegionId))
	return builder
}

func (builder *ListSubdivisionReqBuilder) Build() *ListSubdivisionReq {
	req := &ListSubdivisionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListSubdivisionReq struct {
	apiReq *larkcore.ApiReq
}

type ListSubdivisionRespData struct {
	Items []*Subdivision `json:"items,omitempty"` // 省份/行政区信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListSubdivisionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSubdivisionRespData `json:"data"` // 业务数据
}

func (resp *ListSubdivisionResp) Success() bool {
	return resp.Code == 0
}

type GetSubregionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetSubregionReqBuilder() *GetSubregionReqBuilder {
	builder := &GetSubregionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 城市/区域 ID
//
// 示例值：67489937334909845
func (builder *GetSubregionReqBuilder) SubregionId(subregionId string) *GetSubregionReqBuilder {
	builder.apiReq.PathParams.Set("subregion_id", fmt.Sprint(subregionId))
	return builder
}

func (builder *GetSubregionReqBuilder) Build() *GetSubregionReq {
	req := &GetSubregionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetSubregionReq struct {
	apiReq *larkcore.ApiReq
}

type GetSubregionRespData struct {
	Subregion *Subregion `json:"subregion,omitempty"` // 城市/区域信息
}

type GetSubregionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetSubregionRespData `json:"data"` // 业务数据
}

func (resp *GetSubregionResp) Success() bool {
	return resp.Code == 0
}

type ListSubregionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListSubregionReqBuilder() *ListSubregionReqBuilder {
	builder := &ListSubregionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListSubregionReqBuilder) PageToken(pageToken string) *ListSubregionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListSubregionReqBuilder) PageSize(pageSize string) *ListSubregionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 省份/行政区id，填写后只查询该省份/行政区下的城市/区域
//
// 示例值：100
func (builder *ListSubregionReqBuilder) SubdivisionId(subdivisionId string) *ListSubregionReqBuilder {
	builder.apiReq.QueryParams.Set("subdivision_id", fmt.Sprint(subdivisionId))
	return builder
}

func (builder *ListSubregionReqBuilder) Build() *ListSubregionReq {
	req := &ListSubregionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListSubregionReq struct {
	apiReq *larkcore.ApiReq
}

type ListSubregionRespData struct {
	Items []*Subregion `json:"items,omitempty"` // 城市/区域信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListSubregionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSubregionRespData `json:"data"` // 业务数据
}

func (resp *ListSubregionResp) Success() bool {
	return resp.Code == 0
}

type QueryTransferReasonReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryTransferReasonReqBuilder() *QueryTransferReasonReqBuilder {
	builder := &QueryTransferReasonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 异动原因状态
//
// 示例值：true
func (builder *QueryTransferReasonReqBuilder) Active(active bool) *QueryTransferReasonReqBuilder {
	builder.apiReq.QueryParams.Set("active", fmt.Sprint(active))
	return builder
}

// 异动原因唯一标识，多条时最多数量为10
//
// 示例值：voluntary_transfer
func (builder *QueryTransferReasonReqBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier []string) *QueryTransferReasonReqBuilder {
	for _, v := range transferReasonUniqueIdentifier {
		builder.apiReq.QueryParams.Add("transfer_reason_unique_identifier", fmt.Sprint(v))
	}
	return builder
}

func (builder *QueryTransferReasonReqBuilder) Build() *QueryTransferReasonReq {
	req := &QueryTransferReasonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryTransferReasonReq struct {
	apiReq *larkcore.ApiReq
}

type QueryTransferReasonRespData struct {
	Items []*TransferReason `json:"items,omitempty"` // 异动原因列表
}

type QueryTransferReasonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryTransferReasonRespData `json:"data"` // 业务数据
}

func (resp *QueryTransferReasonResp) Success() bool {
	return resp.Code == 0
}

type QueryTransferTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryTransferTypeReqBuilder() *QueryTransferTypeReqBuilder {
	builder := &QueryTransferTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 异动类型状态
//
// 示例值：true
func (builder *QueryTransferTypeReqBuilder) Active(active bool) *QueryTransferTypeReqBuilder {
	builder.apiReq.QueryParams.Set("active", fmt.Sprint(active))
	return builder
}

// 异动类型唯一标识，多条时最多数量为10
//
// 示例值：job_status_change
func (builder *QueryTransferTypeReqBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier []string) *QueryTransferTypeReqBuilder {
	for _, v := range transferTypeUniqueIdentifier {
		builder.apiReq.QueryParams.Add("transfer_type_unique_identifier", fmt.Sprint(v))
	}
	return builder
}

func (builder *QueryTransferTypeReqBuilder) Build() *QueryTransferTypeReq {
	req := &QueryTransferTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryTransferTypeReq struct {
	apiReq *larkcore.ApiReq
}

type QueryTransferTypeRespData struct {
	Items []*TransferType `json:"items,omitempty"` // 异动类型列表
}

type QueryTransferTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryTransferTypeRespData `json:"data"` // 业务数据
}

func (resp *QueryTransferTypeResp) Success() bool {
	return resp.Code == 0
}

type CreateWorkingHoursTypeReqBuilder struct {
	apiReq           *larkcore.ApiReq
	workingHoursType *WorkingHoursType
}

func NewCreateWorkingHoursTypeReqBuilder() *CreateWorkingHoursTypeReqBuilder {
	builder := &CreateWorkingHoursTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateWorkingHoursTypeReqBuilder) ClientToken(clientToken string) *CreateWorkingHoursTypeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建工时制度
func (builder *CreateWorkingHoursTypeReqBuilder) WorkingHoursType(workingHoursType *WorkingHoursType) *CreateWorkingHoursTypeReqBuilder {
	builder.workingHoursType = workingHoursType
	return builder
}

func (builder *CreateWorkingHoursTypeReqBuilder) Build() *CreateWorkingHoursTypeReq {
	req := &CreateWorkingHoursTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.workingHoursType
	return req
}

type CreateWorkingHoursTypeReq struct {
	apiReq           *larkcore.ApiReq
	WorkingHoursType *WorkingHoursType `body:""`
}

type CreateWorkingHoursTypeRespData struct {
	WorkingHoursType *WorkingHoursType `json:"working_hours_type,omitempty"` // 工时制度
}

type CreateWorkingHoursTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateWorkingHoursTypeRespData `json:"data"` // 业务数据
}

func (resp *CreateWorkingHoursTypeResp) Success() bool {
	return resp.Code == 0
}

type DeleteWorkingHoursTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteWorkingHoursTypeReqBuilder() *DeleteWorkingHoursTypeReqBuilder {
	builder := &DeleteWorkingHoursTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的工时制度 ID
//
// 示例值：325325254
func (builder *DeleteWorkingHoursTypeReqBuilder) WorkingHoursTypeId(workingHoursTypeId string) *DeleteWorkingHoursTypeReqBuilder {
	builder.apiReq.PathParams.Set("working_hours_type_id", fmt.Sprint(workingHoursTypeId))
	return builder
}

func (builder *DeleteWorkingHoursTypeReqBuilder) Build() *DeleteWorkingHoursTypeReq {
	req := &DeleteWorkingHoursTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteWorkingHoursTypeReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteWorkingHoursTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteWorkingHoursTypeResp) Success() bool {
	return resp.Code == 0
}

type GetWorkingHoursTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetWorkingHoursTypeReqBuilder() *GetWorkingHoursTypeReqBuilder {
	builder := &GetWorkingHoursTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 工时制度 ID
//
// 示例值：1212
func (builder *GetWorkingHoursTypeReqBuilder) WorkingHoursTypeId(workingHoursTypeId string) *GetWorkingHoursTypeReqBuilder {
	builder.apiReq.PathParams.Set("working_hours_type_id", fmt.Sprint(workingHoursTypeId))
	return builder
}

func (builder *GetWorkingHoursTypeReqBuilder) Build() *GetWorkingHoursTypeReq {
	req := &GetWorkingHoursTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetWorkingHoursTypeReq struct {
	apiReq *larkcore.ApiReq
}

type GetWorkingHoursTypeRespData struct {
	WorkingHoursType *WorkingHoursType `json:"working_hours_type,omitempty"` // 工时制度信息
}

type GetWorkingHoursTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetWorkingHoursTypeRespData `json:"data"` // 业务数据
}

func (resp *GetWorkingHoursTypeResp) Success() bool {
	return resp.Code == 0
}

type ListWorkingHoursTypeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListWorkingHoursTypeReqBuilder() *ListWorkingHoursTypeReqBuilder {
	builder := &ListWorkingHoursTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListWorkingHoursTypeReqBuilder) PageToken(pageToken string) *ListWorkingHoursTypeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListWorkingHoursTypeReqBuilder) PageSize(pageSize string) *ListWorkingHoursTypeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListWorkingHoursTypeReqBuilder) Build() *ListWorkingHoursTypeReq {
	req := &ListWorkingHoursTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListWorkingHoursTypeReq struct {
	apiReq *larkcore.ApiReq
}

type ListWorkingHoursTypeRespData struct {
	Items []*WorkingHoursType `json:"items,omitempty"` // 查询的工时制度信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListWorkingHoursTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListWorkingHoursTypeRespData `json:"data"` // 业务数据
}

func (resp *ListWorkingHoursTypeResp) Success() bool {
	return resp.Code == 0
}

type PatchWorkingHoursTypeReqBuilder struct {
	apiReq           *larkcore.ApiReq
	workingHoursType *WorkingHoursType
}

func NewPatchWorkingHoursTypeReqBuilder() *PatchWorkingHoursTypeReqBuilder {
	builder := &PatchWorkingHoursTypeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 工时制度ID
//
// 示例值：1616161616
func (builder *PatchWorkingHoursTypeReqBuilder) WorkingHoursTypeId(workingHoursTypeId string) *PatchWorkingHoursTypeReqBuilder {
	builder.apiReq.PathParams.Set("working_hours_type_id", fmt.Sprint(workingHoursTypeId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchWorkingHoursTypeReqBuilder) ClientToken(clientToken string) *PatchWorkingHoursTypeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新工时制度
func (builder *PatchWorkingHoursTypeReqBuilder) WorkingHoursType(workingHoursType *WorkingHoursType) *PatchWorkingHoursTypeReqBuilder {
	builder.workingHoursType = workingHoursType
	return builder
}

func (builder *PatchWorkingHoursTypeReqBuilder) Build() *PatchWorkingHoursTypeReq {
	req := &PatchWorkingHoursTypeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.workingHoursType
	return req
}

type PatchWorkingHoursTypeReq struct {
	apiReq           *larkcore.ApiReq
	WorkingHoursType *WorkingHoursType `body:""`
}

type PatchWorkingHoursTypeRespData struct {
	WorkingHoursType *WorkingHoursType `json:"working_hours_type,omitempty"` // 工时制度
}

type PatchWorkingHoursTypeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchWorkingHoursTypeRespData `json:"data"` // 业务数据
}

func (resp *PatchWorkingHoursTypeResp) Success() bool {
	return resp.Code == 0
}

type P2CommonDataIdUserMappingChangedV1Data struct {
	ChangeType *string `json:"change_type,omitempty"` // 变更类型，取值范围：insert、delete

	IdTransformType *int `json:"id_transform_type,omitempty"` // ID转换类型。1:飞书人事<->飞书，2:飞书人事<->PeopleAdmin，3:PeopleAdmin<->飞书

	CorehrId *string `json:"corehr_id,omitempty"` // 飞书人事ID，仅id_transform_type等于1、2时有值

	PeopleAdminId *string `json:"people_admin_id,omitempty"` // PeopleAdmin ID，仅id_transform_type等于2、3时有值

	FeishuId *UserId `json:"feishu_id,omitempty"` // 飞书ID，仅id_transform_type等于1、3时有值
}

type P2CommonDataIdUserMappingChangedV1 struct {
	*larkevent.EventV2Base                                         // 事件基础数据
	*larkevent.EventReq                                            // 请求原生数据
	Event                  *P2CommonDataIdUserMappingChangedV1Data `json:"event"` // 事件内容
}

func (m *P2CommonDataIdUserMappingChangedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CommonDataMetaDataUpdatedV1Data struct {
	ApiName *string `json:"api_name,omitempty"` // 对象 API Name

	FieldChanges []string `json:"field_changes,omitempty"` // 变更的字段

	MetadataType *string `json:"metadata_type,omitempty"` // 变更的元数据类型

	EnumValueChanges []string `json:"enum_value_changes,omitempty"` // 变更的枚举
}

type P2CommonDataMetaDataUpdatedV1 struct {
	*larkevent.EventV2Base                                    // 事件基础数据
	*larkevent.EventReq                                       // 请求原生数据
	Event                  *P2CommonDataMetaDataUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2CommonDataMetaDataUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ContractCreatedV1Data struct {
	ContractId *string `json:"contract_id,omitempty"` // ID
}

type P2ContractCreatedV1 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2ContractCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2ContractCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ContractDeletedV1Data struct {
	ContractId *string `json:"contract_id,omitempty"` // ID
}

type P2ContractDeletedV1 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2ContractDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2ContractDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ContractUpdatedV1Data struct {
	ContractId *string `json:"contract_id,omitempty"` // ID
}

type P2ContractUpdatedV1 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2ContractUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2ContractUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2DepartmentCreatedV1Data struct {
	DepartmentId *string `json:"department_id,omitempty"` // 新建部门的 ID
}

type P2DepartmentCreatedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2DepartmentCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2DepartmentCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2DepartmentDeletedV1Data struct {
	DepartmentId *string `json:"department_id,omitempty"` // 被删除部门的 ID

	Code *string `json:"code,omitempty"` // 部门编码
}

type P2DepartmentDeletedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2DepartmentDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2DepartmentDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2DepartmentUpdatedV1Data struct {
	DepartmentId *string `json:"department_id,omitempty"` // 被更新部门的 ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2DepartmentUpdatedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2DepartmentUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2DepartmentUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2EmploymentConvertedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 主对象ID
}

type P2EmploymentConvertedV1 struct {
	*larkevent.EventV2Base                              // 事件基础数据
	*larkevent.EventReq                                 // 请求原生数据
	Event                  *P2EmploymentConvertedV1Data `json:"event"` // 事件内容
}

func (m *P2EmploymentConvertedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2EmploymentCreatedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 被创建的雇佣信息的 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID
}

type P2EmploymentCreatedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2EmploymentCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2EmploymentCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2EmploymentDeletedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 被删除的雇佣信息的 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID
}

type P2EmploymentDeletedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2EmploymentDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2EmploymentDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2EmploymentResignedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 主对象ID
}

type P2EmploymentResignedV1 struct {
	*larkevent.EventV2Base                             // 事件基础数据
	*larkevent.EventReq                                // 请求原生数据
	Event                  *P2EmploymentResignedV1Data `json:"event"` // 事件内容
}

func (m *P2EmploymentResignedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2EmploymentUpdatedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 被更新的雇佣信息 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2EmploymentUpdatedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2EmploymentUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2EmploymentUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobCreatedV1Data struct {
	JobId *string `json:"job_id,omitempty"` // Job ID
}

type P2JobCreatedV1 struct {
	*larkevent.EventV2Base                     // 事件基础数据
	*larkevent.EventReq                        // 请求原生数据
	Event                  *P2JobCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2JobCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobDeletedV1Data struct {
	JobId *string `json:"job_id,omitempty"` // Job ID
}

type P2JobDeletedV1 struct {
	*larkevent.EventV2Base                     // 事件基础数据
	*larkevent.EventReq                        // 请求原生数据
	Event                  *P2JobDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2JobDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobUpdatedV1Data struct {
	JobId *string `json:"job_id,omitempty"` // Job ID
}

type P2JobUpdatedV1 struct {
	*larkevent.EventV2Base                     // 事件基础数据
	*larkevent.EventReq                        // 请求原生数据
	Event                  *P2JobUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2JobUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobChangeUpdatedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID

	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录 id

	TransferMode *int `json:"transfer_mode,omitempty"` // 异动属性/方式

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因唯一标识

	ProcessId *string `json:"process_id,omitempty"` // 异动发起后的审批流程 id，如果是直接异动，则无需要审批流程id

	EffectiveDate *string `json:"effective_date,omitempty"` // 异动生效日期

	Status *int `json:"status,omitempty"` // 异动状态

	TransferKey *string `json:"transfer_key,omitempty"` // 异动记录标识符
}

type P2JobChangeUpdatedV1 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2JobChangeUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2JobChangeUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobDataChangedV1Data struct {
	JobDataId *string `json:"job_data_id,omitempty"` // 主对象ID

	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID

	JobChangeId *string `json:"job_change_id,omitempty"` // 员工异动 ID
}

type P2JobDataChangedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2JobDataChangedV1Data `json:"event"` // 事件内容
}

func (m *P2JobDataChangedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobDataCreatedV1Data struct {
	JobDataId *string `json:"job_data_id,omitempty"` // ID
}

type P2JobDataCreatedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2JobDataCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2JobDataCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobDataDeletedV1Data struct {
	JobDataId *string `json:"job_data_id,omitempty"` // ID
}

type P2JobDataDeletedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2JobDataDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2JobDataDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobDataEmployedV1Data struct {
	JobDataId *string `json:"job_data_id,omitempty"` // 主对象ID

	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID
}

type P2JobDataEmployedV1 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobDataEmployedV1Data `json:"event"` // 事件内容
}

func (m *P2JobDataEmployedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobDataUpdatedV1Data struct {
	JobDataId *string `json:"job_data_id,omitempty"` // ID
}

type P2JobDataUpdatedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2JobDataUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2JobDataUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2OffboardingUpdatedV1Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 用户 ID

	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 ID

	ProcessId *string `json:"process_id,omitempty"` // 离职发起后的审批流程实例 ID

	Status *int `json:"status,omitempty"` // 离职状态
}

type P2OffboardingUpdatedV1 struct {
	*larkevent.EventV2Base                             // 事件基础数据
	*larkevent.EventReq                                // 请求原生数据
	Event                  *P2OffboardingUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2OffboardingUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2OrgRoleAuthorizationUpdatedV1Data struct {
	RoleId *string `json:"role_id,omitempty"` // 角色id

	ManagementScopeList []*ManagementScope `json:"management_scope_list,omitempty"` // 管理范围信息

	EmploymentIdList []string `json:"employment_id_list,omitempty"` // 员工雇佣信息ID list
}

type P2OrgRoleAuthorizationUpdatedV1 struct {
	*larkevent.EventV2Base                                      // 事件基础数据
	*larkevent.EventReq                                         // 请求原生数据
	Event                  *P2OrgRoleAuthorizationUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2OrgRoleAuthorizationUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PersonCreatedV1Data struct {
	PersonId *string `json:"person_id,omitempty"` // 人员ID
}

type P2PersonCreatedV1 struct {
	*larkevent.EventV2Base                        // 事件基础数据
	*larkevent.EventReq                           // 请求原生数据
	Event                  *P2PersonCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2PersonCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PersonDeletedV1Data struct {
	PersonId *string `json:"person_id,omitempty"` // 人员ID
}

type P2PersonDeletedV1 struct {
	*larkevent.EventV2Base                        // 事件基础数据
	*larkevent.EventReq                           // 请求原生数据
	Event                  *P2PersonDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2PersonDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PersonUpdatedV1Data struct {
	PersonId *string `json:"person_id,omitempty"` // 被更新个人信息的 ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2PersonUpdatedV1 struct {
	*larkevent.EventV2Base                        // 事件基础数据
	*larkevent.EventReq                           // 请求原生数据
	Event                  *P2PersonUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2PersonUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PreHireUpdatedV1Data struct {
	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职 ID

	FieldChanges []string `json:"field_changes,omitempty"` // 变更的字段
}

type P2PreHireUpdatedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2PreHireUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2PreHireUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type SearchOffboardingIterator struct {
	nextPageToken *string
	items         []*Offboarding
	index         int
	limit         int
	ctx           context.Context
	req           *SearchOffboardingReq
	listFunc      func(ctx context.Context, req *SearchOffboardingReq, options ...larkcore.RequestOptionFunc) (*SearchOffboardingResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchOffboardingIterator) Next() (bool, *Offboarding, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchOffboardingIterator) NextPageToken() *string {
	return iterator.nextPageToken
}
