lenso_contracts/
console.rs1use serde::{Deserialize, Serialize};
4use utoipa::ToSchema;
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
7pub struct ConsoleSurface {
8 pub name: String,
9 pub label: String,
10 pub area: ConsoleArea,
11 pub route: String,
12 pub package: ConsolePackage,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub icon: Option<String>,
15 #[serde(default)]
16 pub required_capabilities: Vec<String>,
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub navigation: Option<ConsoleNavigation>,
19}
20
21#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
22#[serde(rename_all = "snake_case")]
23#[non_exhaustive]
24pub enum ConsoleArea {
25 Runtime,
26 Operations,
27 Data,
28 Configuration,
29}
30
31#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
32pub struct ConsolePackage {
33 pub name: String,
34 pub export: String,
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
38pub struct ConsoleNavigation {
39 pub workspace: ConsoleWorkspaceRef,
40 #[serde(default, skip_serializing_if = "Option::is_none")]
41 pub group: Option<ConsoleNavigationGroup>,
42 #[serde(default, skip_serializing_if = "Option::is_none")]
43 pub order: Option<i32>,
44}
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
47pub struct ConsoleWorkspaceRef {
48 pub id: String,
49 pub label: String,
50 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub icon: Option<String>,
52}
53
54#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
55pub struct ConsoleNavigationGroup {
56 pub id: String,
57 pub label: String,
58 #[serde(default, skip_serializing_if = "Option::is_none")]
59 pub icon: Option<String>,
60 #[serde(default, skip_serializing_if = "Option::is_none")]
61 pub order: Option<i32>,
62}