use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
#[serde_with::serde_as]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "api_client",
doc = "Can be gotten with
[`Neos::get_user_status`](crate::api_client::Neos::get_user_status)"
)]
pub struct UserStatus {
pub online_status: crate::model::OnlineStatus,
#[serde(rename = "lastStatusChange")]
#[serde(default)]
#[serde(with = "crate::util::opt_rfc3339")]
pub last_status_change_time: Option<OffsetDateTime>,
pub current_session_id: Option<crate::id::Session>,
pub current_session_access_level: crate::model::SessionAccessLevel,
#[serde(rename = "currentSessionHidden")]
pub is_current_session_hidden: bool,
#[serde(rename = "currentHosting")]
pub is_current_hosting: bool,
pub output_device: crate::model::OutputDevice,
pub compatibility_hash: Option<String>,
pub neos_version: Option<String>,
#[serde(rename = "publicRSAKey")]
pub public_rsa_key: Option<crate::model::RSAParametersData>,
pub is_mobile: bool,
#[cfg_attr(
not(feature = "debug"),
serde_as(as = "serde_with::VecSkipError<serde_with::DefaultOnNull>")
)]
#[cfg_attr(
feature = "debug",
serde_as(deserialize_as = "serde_with::DefaultOnNull")
)]
#[serde(default)]
pub active_sessions: Vec<crate::model::SessionInfo>,
}