1#![allow(unreachable_pub, missing_docs)]
5
6use derive_more::{Display, Error};
7use serde::{Deserialize, Serialize};
8use serde_repr::{Deserialize_repr, Serialize_repr};
9
10#[derive(Clone, Debug, Deserialize, Serialize)]
14#[serde(untagged)]
15pub enum ApiResponse {
16 Success(SuccessResponse),
17 Error(ErrorResponse),
18}
19
20#[derive(Clone, Debug, Deserialize, Serialize)]
24pub struct SuccessResponse {
25 pub code: ResponseCode,
26 pub description: String,
29 pub response: ResponseT,
31}
32
33#[derive(Clone, Debug, Deserialize, Serialize)]
37pub struct ErrorResponse {
38 pub code: ResponseCode,
39 pub description: String,
40 pub response: Option<()>,
41}
42
43#[derive(Serialize_repr, Deserialize_repr, PartialEq, Eq, Debug, Clone, Copy, Error, Display)]
47#[repr(u8)]
48pub enum ResponseCode {
49 Success = 0,
51 NullArgument = 1,
53 BadDescription = 2,
55 ExistingName = 3,
57 MissingInitialization = 4,
59 NoPipeline = 5,
61 NoResource = 6,
63 NoCreate = 7,
65 ExistingResource = 8,
67 NoUpdate = 9,
69 BadCommand = 10,
71 NoRead = 11,
73 NoConnection = 12,
75 BadValue = 13,
77 StateError = 14,
79 IpcError = 15,
81 EventError = 16,
83 MissingArgument = 17,
85 MissingName = 18,
87}
88
89#[derive(Clone, Debug, Deserialize, Serialize)]
90#[serde(untagged)]
91pub enum ResponseT {
92 Bus(Option<Bus>),
93 PropertiesWithNodes(PropertiesWithNodes),
94 Properties(Properties),
95 Property(Property),
96}
97
98#[derive(Clone, Debug, Deserialize, Serialize)]
99pub struct Param {
100 pub description: String,
101 pub r#type: String,
102 pub access: String,
103}
104
105#[derive(Clone, Debug, Deserialize, Serialize)]
108pub struct PropertiesWithNodes {
109 pub properties: Vec<Property>,
110 pub nodes: Vec<Node>,
111}
112
113#[derive(Clone, Debug, Deserialize, Serialize)]
116pub struct Properties {
117 pub properties: Vec<Property>,
118}
119
120#[derive(Clone, Debug, Deserialize, Serialize)]
121pub struct Node {
122 pub name: String,
127}
128
129#[derive(Clone, Debug, Deserialize, Serialize)]
132pub struct Property {
133 pub name: String,
134 pub value: PropertyValue,
135 pub param: Param,
136}
137
138#[derive(Clone, Debug, Deserialize, Serialize)]
139#[serde(untagged)]
140pub enum PropertyValue {
141 String(String),
142 Integer(i32),
143 Bool(bool),
144}
145
146#[derive(Clone, Debug, Deserialize, Serialize)]
149pub struct Bus {
150 pub r#type: String,
151 pub source: String,
152 pub timestamp: String,
153 pub seqnum: i64,
154 pub message: String,
155 pub debug: String,
156}