xbp 10.5.0

XBP is a zero-config build pack that can also interact with proxies, kafka, sockets, synthetic monitors.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Clone)]
pub struct PortInfo {
    pub port: u16,
    pub pid: Option<String>,
    pub local_addr: String,
    pub remote_addr: String,
    pub state: String,
    pub process: String,
}

#[derive(Serialize, Deserialize)]
pub struct PortsResponse {
    pub ports: Vec<PortInfo>,
}

#[derive(Serialize, Deserialize)]
pub struct SystemctlService {
    pub name: String,
    pub status: String,
    pub active: bool,
    pub enabled: bool,
}

#[derive(Serialize, Deserialize)]
pub struct SystemctlResponse {
    pub services: Vec<SystemctlService>,
}

#[derive(Serialize, Deserialize)]
pub struct Pm2Process {
    pub name: String,
    pub pid: Option<u32>,
    pub status: String,
    pub cpu: Option<f64>,
    pub memory: Option<f64>,
    pub uptime: Option<String>,
}

#[derive(Serialize, Deserialize)]
pub struct Pm2Response {
    pub processes: Vec<Pm2Process>,
}

#[derive(Serialize, Deserialize)]
pub struct ServiceInfo {
    pub name: String,
    pub target: String,
    pub port: u16,
    pub branch: String,
    pub url: Option<String>,
}

#[derive(Serialize, Deserialize)]
pub struct ServicesResponse {
    pub services: Vec<ServiceInfo>,
}

#[derive(Serialize, Deserialize)]
pub struct BinaryDownloadRequest {
    pub url: String,
    pub name: String,
    pub args: Option<Vec<String>>,
}

#[derive(Serialize, Deserialize)]
pub struct BinaryDownloadResponse {
    pub success: bool,
    pub message: String,
    pub pm2_name: Option<String>,
}

#[derive(Serialize, Deserialize)]
pub struct ErrorResponse {
    pub error: String,
}

#[derive(Serialize, Deserialize)]
pub struct HealthResponse {
    pub status: String,
    pub version: String,
}