use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct User {
pub user_id: String,
pub account_id: String,
pub user_email: String,
pub user_first_name: String,
pub user_last_name: String,
#[serde(default)]
pub user_is_app_admin: bool,
#[serde(default)]
pub user_teams: Vec<Team>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Team {
pub team_id: String,
pub team_name: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DirectoryUser {
pub user_id: String,
pub user_email: String,
pub user_first_name: String,
pub user_last_name: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct DirectoryOptions {
pub query: Option<String>,
pub cursor: Option<String>,
pub limit: Option<u32>,
pub ids: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DirectoryPage<T> {
pub items: Vec<T>,
pub next_cursor: Option<String>,
pub total: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MagicLinkResponse {
pub message: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct VerifyError {
pub code: u16,
pub message: String,
#[serde(default)]
pub sign_in_url: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct VerifyResult {
pub authenticated: bool,
pub user: Option<User>,
pub error: Option<VerifyError>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct Session {
#[serde(default)]
pub authenticated: bool,
#[serde(default)]
pub user: Option<User>,
#[serde(default)]
pub sign_in_url: String,
}