1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct CreateSurface {
7 pub surface_id: String,
8 pub catalog_id: String,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub theme: Option<serde_json::Value>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub send_data_model: Option<bool>,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct UpdateComponents {
19 pub surface_id: String,
20 pub components: Vec<serde_json::Value>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct UpdateDataModel {
27 pub surface_id: String,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub path: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub value: Option<serde_json::Value>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct DeleteSurface {
38 pub surface_id: String,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct CreateSurfaceMessage {
44 #[serde(rename = "createSurface")]
45 pub create_surface: CreateSurface,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct UpdateComponentsMessage {
51 #[serde(rename = "updateComponents")]
52 pub update_components: UpdateComponents,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct UpdateDataModelMessage {
58 #[serde(rename = "updateDataModel")]
59 pub update_data_model: UpdateDataModel,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct DeleteSurfaceMessage {
65 #[serde(rename = "deleteSurface")]
66 pub delete_surface: DeleteSurface,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
71#[serde(untagged)]
72pub enum A2uiMessage {
73 CreateSurface(CreateSurfaceMessage),
74 UpdateComponents(UpdateComponentsMessage),
75 UpdateDataModel(UpdateDataModelMessage),
76 DeleteSurface(DeleteSurfaceMessage),
77}