api: expose community edition capabilities

This commit is contained in:
a.tolmachev
2026-05-03 15:49:07 +00:00
parent 6fd62df2a8
commit d98aa83b37
12 changed files with 215 additions and 10 deletions
+43
View File
@@ -0,0 +1,43 @@
use serde::{Deserialize, Serialize};
use crate::Protocol;
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum ProductEdition {
Community,
Enterprise,
Cloud,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum MachineAccessMode {
StaticAgentKey,
ShortLivedToken,
OneTimeToken,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum OperationSecurityLevel {
Standard,
Elevated,
Strict,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct EditionLimits {
pub max_workspaces: Option<u32>,
pub max_users_per_workspace: Option<u32>,
pub max_agents_per_workspace: Option<u32>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct EditionCapabilities {
pub edition: ProductEdition,
pub supported_protocols: Vec<Protocol>,
pub supported_security_levels: Vec<OperationSecurityLevel>,
pub machine_access_modes: Vec<MachineAccessMode>,
pub limits: EditionLimits,
}