use std::collections::BTreeMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Default)]
#[serde(rename_all = "snake_case")]
pub enum AccessPolicy {
#[default]
Allowlist,
Open,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct PendingPairing {
pub platform: String,
pub user_id: String,
pub issued_at: String,
}
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct Access {
#[serde(default)]
pub allowlist: BTreeMap<String, Vec<String>>,
#[serde(default)]
pub admins: BTreeMap<String, Vec<String>>,
#[serde(default)]
pub pending_pairings: BTreeMap<String, PendingPairing>,
#[serde(default)]
pub policy: BTreeMap<String, AccessPolicy>,
#[serde(default)]
pub pairing_ttl_minutes: Option<u32>,
}