supercode_interchange/world/
access.rs1use std::collections::BTreeMap;
4
5use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Default)]
10#[serde(rename_all = "snake_case")]
11pub enum AccessPolicy {
12 #[default]
14 Allowlist,
15 Open,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
21pub struct PendingPairing {
22 pub platform: String,
24 pub user_id: String,
26 pub issued_at: String,
28}
29
30#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
32pub struct Access {
33 #[serde(default)]
35 pub allowlist: BTreeMap<String, Vec<String>>,
36 #[serde(default)]
38 pub admins: BTreeMap<String, Vec<String>>,
39 #[serde(default)]
41 pub pending_pairings: BTreeMap<String, PendingPairing>,
42 #[serde(default)]
44 pub policy: BTreeMap<String, AccessPolicy>,
45 #[serde(default)]
47 pub pairing_ttl_minutes: Option<u32>,
48}