use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct I18nText {
#[serde(skip_serializing_if = "Option::is_none")]
pub zh_cn: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub en_us: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct PageResponse<T> {
#[serde(skip_serializing_if = "Option::is_none")]
pub has_more: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<T>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CustomField {
#[serde(skip_serializing_if = "Option::is_none")]
pub field_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<Value>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EnumSearchRequest {
pub enum_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EnumInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_status: Option<i32>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct CountryRegionSearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CountryRegion {
#[serde(skip_serializing_if = "Option::is_none")]
pub country_region_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub full_name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_zone: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct NationalitySearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Nationality {
#[serde(skip_serializing_if = "Option::is_none")]
pub nationality_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct EmployeeBatchGetRequest {
pub employee_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fields: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct EmployeeSearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fields: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employment_status: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_number: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Employee {
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employment_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person: Option<Person>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employment: Option<Employment>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_datas: Option<Vec<JobData>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Person {
#[serde(skip_serializing_if = "Option::is_none")]
pub person_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub english_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name_pinyin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_of_birth: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nationality_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub national_ids: Option<Vec<NationalId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addresses: Option<Vec<Address>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marital_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub political_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ethnicity: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hukou_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hukou_location: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct NationalId {
#[serde(skip_serializing_if = "Option::is_none")]
pub national_id_type_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub national_id_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub issued_location: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Address {
#[serde(skip_serializing_if = "Option::is_none")]
pub country_region_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub city_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub district_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_line_1: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_line_2: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postal_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_type: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Employment {
#[serde(skip_serializing_if = "Option::is_none")]
pub employment_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employment_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_type_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hire_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub working_hours_type_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub work_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub work_phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub probation_start_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub probation_end_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub probation_status: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct JobData {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_data_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_level_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_grade_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cost_center_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub work_location: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub direct_manager_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dotted_line_manager_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assignment_start_reason: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DepartmentCreateRequest {
pub name: I18nText,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub manager: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Department {
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub manager: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub children: Option<Vec<Department>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CompanyCreateRequest {
pub name: I18nText,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub legal_name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub primary_location_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Company {
#[serde(skip_serializing_if = "Option::is_none")]
pub company_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub legal_name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub primary_location_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CoreHRResponse<T> {
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<T>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub msg: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct IdConvertRequest {
pub source_id_type: String,
pub target_id_type: String,
pub ids: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct IdConvertResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub source_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_id: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobFamilyCreateRequest {
pub name: I18nText,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobFamily {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobLevelCreateRequest {
pub name: I18nText,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobLevel {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_level_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobGradeCreateRequest {
pub name: I18nText,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobGrade {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_grade_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobCreateRequest {
pub name: I18nText,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Job {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct PreHireCreateRequest {
pub person: Person,
pub employment: Employment,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_datas: Option<Vec<JobData>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub onboarding_flow_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expected_hire_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct PreHireSearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub onboarding_status: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_ids: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct PreHire {
#[serde(skip_serializing_if = "Option::is_none")]
pub pre_hire_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person: Option<Person>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employment: Option<Employment>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_datas: Option<Vec<JobData>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub onboarding_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub onboarding_flow_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expected_hire_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub actual_hire_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobChangeCreateRequest {
pub employee_id: String,
pub job_change_type_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_reason_id: Option<String>,
pub effective_date: String,
pub job_data: JobData,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct JobChangeSearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_status: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_type_ids: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct JobChange {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_type_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_reason_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_change_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original_job_data: Option<JobData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub new_job_data: Option<JobData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct OffboardingCreateRequest {
pub employee_id: String,
pub offboarding_reason_id: String,
pub offboarding_date: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct OffboardingSearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_status: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_reason_ids: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Offboarding {
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_reason_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offboarding_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_fields: Option<Vec<CustomField>>,
}