1pub mod device;
4pub mod execute;
5pub mod query;
6pub mod sync;
7
8use serde::Deserialize;
9use serde::Serialize;
10
11#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
12#[serde(rename_all = "camelCase")]
13pub struct Request {
14 pub request_id: String,
15 pub inputs: Vec<RequestInput>,
16}
17
18#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
19#[serde(tag = "intent", content = "payload")]
20pub enum RequestInput {
21 #[serde(rename = "action.devices.SYNC")]
22 Sync,
23 #[serde(rename = "action.devices.QUERY")]
24 Query(query::request::Payload),
25 #[serde(rename = "action.devices.EXECUTE")]
26 Execute(execute::request::Payload),
27 #[serde(rename = "action.devices.DISCONNECT")]
28 Disconnect,
29}
30
31#[derive(Debug, Clone, PartialEq, Serialize)]
32#[serde(untagged, rename_all = "camelCase")]
33pub enum Response {
34 Sync(sync::response::Response),
35 Query(query::response::Response),
36 Execute(execute::response::Response),
37 Disconnect,
38}