#[derive(Debug, Clone, serde::Deserialize)]
pub struct TelegramUser {
pub id: String,
#[serde(default)]
pub username: Option<String>,
#[serde(default)]
pub first_name: Option<String>,
#[serde(default)]
pub photo_url: Option<String>,
}
#[derive(Debug, Clone, serde::Deserialize)]
pub struct LoginStart {
pub nonce: String,
pub deep_link: String,
pub expires_at: String,
}
#[derive(Debug, Clone, serde::Deserialize)]
pub struct LoginStatus {
pub status: String,
#[serde(default)]
pub access_token: Option<String>,
#[serde(default)]
pub expires_at: Option<String>,
#[serde(default)]
pub identity_id: Option<String>,
#[serde(default)]
pub user: Option<TelegramUser>,
}
#[derive(Debug, Clone, serde::Deserialize)]
pub struct TokenIntrospection {
pub active: bool,
#[serde(default)]
pub subject: Option<String>,
#[serde(default)]
pub tenant_id: Option<String>,
#[serde(default)]
pub scopes: Option<Vec<String>>,
#[serde(default)]
pub expires_at: Option<String>,
}