zlayer_types/api/
overlay.rs1use serde::{Deserialize, Serialize};
7use utoipa::ToSchema;
8
9#[derive(Debug, Serialize, Deserialize, ToSchema)]
11pub struct OverlayStatusResponse {
12 pub interface: String,
14 pub is_leader: bool,
16 pub node_ip: String,
18 pub cidr: String,
20 pub port: u16,
22 pub total_peers: usize,
24 pub healthy_peers: usize,
26 pub unhealthy_peers: usize,
28 pub last_check: u64,
30}
31
32#[derive(Debug, Serialize, Deserialize, ToSchema)]
34pub struct PeerInfo {
35 pub public_key: String,
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub overlay_ip: Option<String>,
40 pub healthy: bool,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub last_handshake_secs: Option<u64>,
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub last_ping_ms: Option<u64>,
48 pub failure_count: u32,
50 pub last_check: u64,
52}
53
54#[derive(Debug, Serialize, Deserialize, ToSchema)]
56pub struct PeerListResponse {
57 pub total: usize,
59 pub healthy: usize,
61 pub peers: Vec<PeerInfo>,
63}
64
65#[derive(Debug, Serialize, Deserialize, ToSchema)]
67pub struct IpAllocationResponse {
68 pub cidr: String,
70 pub total_ips: u32,
72 pub allocated_count: usize,
74 pub available_count: u32,
76 pub utilization_percent: f64,
78 #[serde(skip_serializing_if = "Option::is_none")]
80 pub allocated_ips: Option<Vec<String>>,
81}
82
83#[derive(Debug, Serialize, Deserialize, ToSchema)]
85pub struct DnsStatusResponse {
86 pub enabled: bool,
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub zone: Option<String>,
91 #[serde(skip_serializing_if = "Option::is_none")]
93 pub port: Option<u16>,
94 #[serde(skip_serializing_if = "Option::is_none")]
96 pub bind_addr: Option<String>,
97 pub service_count: usize,
99 pub services: Vec<String>,
101}