use serde::{Deserialize, Serialize};
pub use crate::service::contact::v3::{
custom_attr::*, department::*, employee_type_enum::*, functional_role::*,
functional_role_member::*, group::*, group_member::*, job_family::*, job_level::*,
job_title::*, scope::*, unit::*, user::*, work_city::*,
};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct User {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub en_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mobile: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mobile_visible: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar: Option<Avatar>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<UserStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub leader_user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub work_station: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub join_time: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub leave_time: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_no: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub employee_type: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_tenant_manager: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_attrs: Option<Vec<UserCustomAttr>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_level_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_family_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub work_city: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Avatar {
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_72: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_240: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_640: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_origin: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub is_frozen: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_resigned: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_activated: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_exited: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_unjoin: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserCustomAttr {
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Department {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub i18n_name: Option<I18nName>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<DepartmentStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub leaders: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_group_chat: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct I18nName {
#[serde(skip_serializing_if = "Option::is_none")]
pub zh_cn: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub en_us: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ja_jp: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DepartmentStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub is_deleted: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Group {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_user_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_department_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<i32>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GroupMember {
#[serde(skip_serializing_if = "Option::is_none")]
pub member_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_id_type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GroupMemberInfo {
pub member_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_id_type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GroupMemberResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub member_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub msg: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomAttr {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<I18nName>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<I18nName>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_required: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EmployeeTypeEnum {
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_type: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_status: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub i18n_content: Option<Vec<I18nContent>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct I18nContent {
#[serde(skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Unit {
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RoleMemberInfo {
pub user_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_ids: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RoleMember {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_ids: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RoleMemberScope {
pub user_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_ids: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RoleMemberResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub msg: Option<String>,
}
#[derive(Debug, Clone, Default, 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<Vec<I18nContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<Vec<I18nContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rank: Option<i32>,
}
#[derive(Debug, Clone, Default, 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<Vec<I18nContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<Vec<I18nContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct JobTitle {
#[serde(skip_serializing_if = "Option::is_none")]
pub job_title_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<Vec<I18nContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WorkCity {
#[serde(skip_serializing_if = "Option::is_none")]
pub work_city_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<Vec<I18nContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
}