google_smart_home/
lib.rs

1//! Types for [Google Smart Home API](https://developers.google.com/assistant/smarthome)
2
3pub 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}