use crate::serde_helpers::double_option;
use super::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TrackingCode {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<TrackingCodeType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UserFull {
pub id: String,
pub r#type: VariableValueType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub space_amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub space_used: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_upload_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<UserStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub job_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar_url: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub notification_email: Option<Option<UserNotificationEmail>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub role: Option<UserFullRole>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tracking_codes: Option<Vec<TrackingCode>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_see_managed_users: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_sync_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_external_collab_restricted: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_exempt_from_device_limits: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_exempt_from_login_verification: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_collaborated_content_available_when_owner_inactive: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enterprise: Option<CollaborationAllowlistEntryEnterprise>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub my_tags: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_platform_access_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub external_app_user_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Users {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub next_marker: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub prev_marker: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order: Option<Vec<CollectionsOrder>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<UserFull>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct TrackingCodeType(pub String);
impl TrackingCodeType {
pub const TRACKING_CODE: &'static str = "tracking_code";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct UserFullRole(pub String);
impl UserFullRole {
pub const ADMIN: &'static str = "admin";
pub const COADMIN: &'static str = "coadmin";
pub const USER: &'static str = "user";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct GetUserType(pub String);
impl GetUserType {
pub const ALL: &'static str = "all";
pub const MANAGED: &'static str = "managed";
pub const EXTERNAL: &'static str = "external";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct PostRole(pub String);
impl PostRole {
pub const COADMIN: &'static str = "coadmin";
pub const USER: &'static str = "user";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateUserRequest {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_platform_access_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub role: Option<PostRole>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_sync_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub job_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub space_amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tracking_codes: Option<Vec<TrackingCode>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_see_managed_users: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_external_collab_restricted: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_exempt_from_device_limits: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_exempt_from_login_verification: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<UserStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub external_app_user_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PutIdNotificationEmail {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateUserRequest {
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub enterprise: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub notify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub role: Option<PostRole>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_sync_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub job_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tracking_codes: Option<Vec<TrackingCode>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_see_managed_users: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_external_collab_restricted: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_exempt_from_device_limits: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_exempt_from_login_verification: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_password_reset_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_collaborated_content_available_when_owner_inactive: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<UserStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub space_amount: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub notification_email: Option<Option<PutIdNotificationEmail>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub external_app_user_id: Option<String>,
}