1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.home.graph.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 23*d5c09012SAndroid Build Coastguard Workerimport "google/home/graph/v1/device.proto"; 24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/empty.proto"; 25*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto"; 26*d5c09012SAndroid Build Coastguard Worker 27*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/home/graph/v1;graph"; 28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "HomeGraphApiServiceProto"; 29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.home.graph.v1"; 30*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Home\\Graph\\V1"; 31*d5c09012SAndroid Build Coastguard Workeroption (google.api.resource_definition) = { 32*d5c09012SAndroid Build Coastguard Worker type: "homegraph.googleapis.com/AgentUserPath" 33*d5c09012SAndroid Build Coastguard Worker pattern: "agentUsers/{agent_user_path}" 34*d5c09012SAndroid Build Coastguard Worker}; 35*d5c09012SAndroid Build Coastguard Worker 36*d5c09012SAndroid Build Coastguard Worker// Google Home Graph API service. The Home Graph service provides support for 37*d5c09012SAndroid Build Coastguard Worker// accessing first-party and third-party devices stored in Google's Home Graph. 38*d5c09012SAndroid Build Coastguard Worker// The Home Graph database provides contextual data about the relationships 39*d5c09012SAndroid Build Coastguard Worker// between devices and the home. 40*d5c09012SAndroid Build Coastguard Worker// 41*d5c09012SAndroid Build Coastguard Worker// For more details, see the [Home Graph developer 42*d5c09012SAndroid Build Coastguard Worker// guide](https://developers.home.google.com/cloud-to-cloud/primer/home-graph). 43*d5c09012SAndroid Build Coastguard Workerservice HomeGraphApiService { 44*d5c09012SAndroid Build Coastguard Worker option (google.api.default_host) = "homegraph.googleapis.com"; 45*d5c09012SAndroid Build Coastguard Worker option (google.api.oauth_scopes) = 46*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/homegraph"; 47*d5c09012SAndroid Build Coastguard Worker 48*d5c09012SAndroid Build Coastguard Worker // Requests Google to send an `action.devices.SYNC` 49*d5c09012SAndroid Build Coastguard Worker // [intent](https://developers.home.google.com/cloud-to-cloud/intents/sync) 50*d5c09012SAndroid Build Coastguard Worker // to your smart home Action to update device metadata for the given user. 51*d5c09012SAndroid Build Coastguard Worker // 52*d5c09012SAndroid Build Coastguard Worker // 53*d5c09012SAndroid Build Coastguard Worker // The third-party user's identity is passed via the `agent_user_id` 54*d5c09012SAndroid Build Coastguard Worker // (see 55*d5c09012SAndroid Build Coastguard Worker // [RequestSyncDevicesRequest][google.home.graph.v1.RequestSyncDevicesRequest]). 56*d5c09012SAndroid Build Coastguard Worker // This request must be authorized using service account credentials from your 57*d5c09012SAndroid Build Coastguard Worker // Actions console project. 58*d5c09012SAndroid Build Coastguard Worker rpc RequestSyncDevices(RequestSyncDevicesRequest) 59*d5c09012SAndroid Build Coastguard Worker returns (RequestSyncDevicesResponse) { 60*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 61*d5c09012SAndroid Build Coastguard Worker post: "/v1/devices:requestSync" 62*d5c09012SAndroid Build Coastguard Worker body: "*" 63*d5c09012SAndroid Build Coastguard Worker }; 64*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "agent_user_id"; 65*d5c09012SAndroid Build Coastguard Worker } 66*d5c09012SAndroid Build Coastguard Worker 67*d5c09012SAndroid Build Coastguard Worker // Reports device state and optionally sends device notifications. 68*d5c09012SAndroid Build Coastguard Worker // Called by your smart home Action when the state of a third-party device 69*d5c09012SAndroid Build Coastguard Worker // changes or you need to send a notification about the device. 70*d5c09012SAndroid Build Coastguard Worker // See [Implement Report 71*d5c09012SAndroid Build Coastguard Worker // State](https://developers.home.google.com/cloud-to-cloud/integration/report-state) 72*d5c09012SAndroid Build Coastguard Worker // for more information. 73*d5c09012SAndroid Build Coastguard Worker // 74*d5c09012SAndroid Build Coastguard Worker // This method updates the device state according to its declared 75*d5c09012SAndroid Build Coastguard Worker // [traits](https://developers.home.google.com/cloud-to-cloud/primer/device-types-and-traits). 76*d5c09012SAndroid Build Coastguard Worker // Publishing a new state value outside of these traits will result in an 77*d5c09012SAndroid Build Coastguard Worker // `INVALID_ARGUMENT` error response. 78*d5c09012SAndroid Build Coastguard Worker // 79*d5c09012SAndroid Build Coastguard Worker // The third-party user's identity is passed in via the `agent_user_id` 80*d5c09012SAndroid Build Coastguard Worker // (see 81*d5c09012SAndroid Build Coastguard Worker // [ReportStateAndNotificationRequest][google.home.graph.v1.ReportStateAndNotificationRequest]). 82*d5c09012SAndroid Build Coastguard Worker // This request must be authorized using service account credentials from your 83*d5c09012SAndroid Build Coastguard Worker // Actions console project. 84*d5c09012SAndroid Build Coastguard Worker rpc ReportStateAndNotification(ReportStateAndNotificationRequest) 85*d5c09012SAndroid Build Coastguard Worker returns (ReportStateAndNotificationResponse) { 86*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 87*d5c09012SAndroid Build Coastguard Worker post: "/v1/devices:reportStateAndNotification" 88*d5c09012SAndroid Build Coastguard Worker body: "*" 89*d5c09012SAndroid Build Coastguard Worker }; 90*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = 91*d5c09012SAndroid Build Coastguard Worker "request_id,event_id,agent_user_id,payload"; 92*d5c09012SAndroid Build Coastguard Worker } 93*d5c09012SAndroid Build Coastguard Worker 94*d5c09012SAndroid Build Coastguard Worker // Unlinks the given third-party user from your smart home Action. 95*d5c09012SAndroid Build Coastguard Worker // All data related to this user will be deleted. 96*d5c09012SAndroid Build Coastguard Worker // 97*d5c09012SAndroid Build Coastguard Worker // For more details on how users link their accounts, see 98*d5c09012SAndroid Build Coastguard Worker // [fulfillment and 99*d5c09012SAndroid Build Coastguard Worker // authentication](https://developers.home.google.com/cloud-to-cloud/primer/fulfillment). 100*d5c09012SAndroid Build Coastguard Worker // 101*d5c09012SAndroid Build Coastguard Worker // The third-party user's identity is passed in via the `agent_user_id` 102*d5c09012SAndroid Build Coastguard Worker // (see 103*d5c09012SAndroid Build Coastguard Worker // [DeleteAgentUserRequest][google.home.graph.v1.DeleteAgentUserRequest]). 104*d5c09012SAndroid Build Coastguard Worker // This request must be authorized using service account credentials from your 105*d5c09012SAndroid Build Coastguard Worker // Actions console project. 106*d5c09012SAndroid Build Coastguard Worker rpc DeleteAgentUser(DeleteAgentUserRequest) returns (google.protobuf.Empty) { 107*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 108*d5c09012SAndroid Build Coastguard Worker delete: "/v1/{agent_user_id=agentUsers/**}" 109*d5c09012SAndroid Build Coastguard Worker }; 110*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "request_id,agent_user_id"; 111*d5c09012SAndroid Build Coastguard Worker } 112*d5c09012SAndroid Build Coastguard Worker 113*d5c09012SAndroid Build Coastguard Worker // Gets the current states in Home Graph for the given set of the third-party 114*d5c09012SAndroid Build Coastguard Worker // user's devices. 115*d5c09012SAndroid Build Coastguard Worker // 116*d5c09012SAndroid Build Coastguard Worker // The third-party user's identity is passed in via the `agent_user_id` 117*d5c09012SAndroid Build Coastguard Worker // (see [QueryRequest][google.home.graph.v1.QueryRequest]). 118*d5c09012SAndroid Build Coastguard Worker // This request must be authorized using service account credentials from your 119*d5c09012SAndroid Build Coastguard Worker // Actions console project. 120*d5c09012SAndroid Build Coastguard Worker rpc Query(QueryRequest) returns (QueryResponse) { 121*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 122*d5c09012SAndroid Build Coastguard Worker post: "/v1/devices:query" 123*d5c09012SAndroid Build Coastguard Worker body: "*" 124*d5c09012SAndroid Build Coastguard Worker }; 125*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "request_id,agent_user_id,inputs"; 126*d5c09012SAndroid Build Coastguard Worker } 127*d5c09012SAndroid Build Coastguard Worker 128*d5c09012SAndroid Build Coastguard Worker // Gets all the devices associated with the given third-party user. 129*d5c09012SAndroid Build Coastguard Worker // 130*d5c09012SAndroid Build Coastguard Worker // The third-party user's identity is passed in via the `agent_user_id` 131*d5c09012SAndroid Build Coastguard Worker // (see [SyncRequest][google.home.graph.v1.SyncRequest]). 132*d5c09012SAndroid Build Coastguard Worker // This request must be authorized using service account credentials from your 133*d5c09012SAndroid Build Coastguard Worker // Actions console project. 134*d5c09012SAndroid Build Coastguard Worker rpc Sync(SyncRequest) returns (SyncResponse) { 135*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 136*d5c09012SAndroid Build Coastguard Worker post: "/v1/devices:sync" 137*d5c09012SAndroid Build Coastguard Worker body: "*" 138*d5c09012SAndroid Build Coastguard Worker }; 139*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "request_id,agent_user_id"; 140*d5c09012SAndroid Build Coastguard Worker } 141*d5c09012SAndroid Build Coastguard Worker} 142*d5c09012SAndroid Build Coastguard Worker 143*d5c09012SAndroid Build Coastguard Worker// Request type for the 144*d5c09012SAndroid Build Coastguard Worker// [`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices) 145*d5c09012SAndroid Build Coastguard Worker// call. 146*d5c09012SAndroid Build Coastguard Workermessage RequestSyncDevicesRequest { 147*d5c09012SAndroid Build Coastguard Worker // Required. Third-party user ID. 148*d5c09012SAndroid Build Coastguard Worker string agent_user_id = 1 [(google.api.field_behavior) = REQUIRED]; 149*d5c09012SAndroid Build Coastguard Worker 150*d5c09012SAndroid Build Coastguard Worker // Optional. If set, the request will be added to a queue and a response will 151*d5c09012SAndroid Build Coastguard Worker // be returned immediately. This enables concurrent requests for the given 152*d5c09012SAndroid Build Coastguard Worker // `agent_user_id`, but the caller will not receive any error responses. 153*d5c09012SAndroid Build Coastguard Worker bool async = 2 [(google.api.field_behavior) = OPTIONAL]; 154*d5c09012SAndroid Build Coastguard Worker} 155*d5c09012SAndroid Build Coastguard Worker 156*d5c09012SAndroid Build Coastguard Worker// Response type for the 157*d5c09012SAndroid Build Coastguard Worker// [`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices) 158*d5c09012SAndroid Build Coastguard Worker// call. 159*d5c09012SAndroid Build Coastguard Worker// 160*d5c09012SAndroid Build Coastguard Worker// Intentionally empty upon success. An HTTP response code is returned 161*d5c09012SAndroid Build Coastguard Worker// with more details upon failure. 162*d5c09012SAndroid Build Coastguard Workermessage RequestSyncDevicesResponse {} 163*d5c09012SAndroid Build Coastguard Worker 164*d5c09012SAndroid Build Coastguard Worker// Request type for the 165*d5c09012SAndroid Build Coastguard Worker// [`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification) 166*d5c09012SAndroid Build Coastguard Worker// call. It may include states, notifications, or both. States and notifications 167*d5c09012SAndroid Build Coastguard Worker// are defined per `device_id` (for example, "123" and "456" in the following 168*d5c09012SAndroid Build Coastguard Worker// example). 169*d5c09012SAndroid Build Coastguard Worker// 170*d5c09012SAndroid Build Coastguard Worker// Example: 171*d5c09012SAndroid Build Coastguard Worker// 172*d5c09012SAndroid Build Coastguard Worker// ```json 173*d5c09012SAndroid Build Coastguard Worker// { 174*d5c09012SAndroid Build Coastguard Worker// "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", 175*d5c09012SAndroid Build Coastguard Worker// "agentUserId": "1234", 176*d5c09012SAndroid Build Coastguard Worker// "payload": { 177*d5c09012SAndroid Build Coastguard Worker// "devices": { 178*d5c09012SAndroid Build Coastguard Worker// "states": { 179*d5c09012SAndroid Build Coastguard Worker// "123": { 180*d5c09012SAndroid Build Coastguard Worker// "on": true 181*d5c09012SAndroid Build Coastguard Worker// }, 182*d5c09012SAndroid Build Coastguard Worker// "456": { 183*d5c09012SAndroid Build Coastguard Worker// "on": true, 184*d5c09012SAndroid Build Coastguard Worker// "brightness": 10 185*d5c09012SAndroid Build Coastguard Worker// } 186*d5c09012SAndroid Build Coastguard Worker// }, 187*d5c09012SAndroid Build Coastguard Worker// } 188*d5c09012SAndroid Build Coastguard Worker// } 189*d5c09012SAndroid Build Coastguard Worker// } 190*d5c09012SAndroid Build Coastguard Worker// ``` 191*d5c09012SAndroid Build Coastguard Workermessage ReportStateAndNotificationRequest { 192*d5c09012SAndroid Build Coastguard Worker // Request ID used for debugging. 193*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 194*d5c09012SAndroid Build Coastguard Worker 195*d5c09012SAndroid Build Coastguard Worker // Unique identifier per event (for example, a doorbell press). 196*d5c09012SAndroid Build Coastguard Worker string event_id = 4; 197*d5c09012SAndroid Build Coastguard Worker 198*d5c09012SAndroid Build Coastguard Worker // Required. Third-party user ID. 199*d5c09012SAndroid Build Coastguard Worker string agent_user_id = 2 [(google.api.field_behavior) = REQUIRED]; 200*d5c09012SAndroid Build Coastguard Worker 201*d5c09012SAndroid Build Coastguard Worker // Deprecated. 202*d5c09012SAndroid Build Coastguard Worker string follow_up_token = 5 [deprecated = true]; 203*d5c09012SAndroid Build Coastguard Worker 204*d5c09012SAndroid Build Coastguard Worker // Required. State of devices to update and notification metadata for devices. 205*d5c09012SAndroid Build Coastguard Worker StateAndNotificationPayload payload = 3 206*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = REQUIRED]; 207*d5c09012SAndroid Build Coastguard Worker} 208*d5c09012SAndroid Build Coastguard Worker 209*d5c09012SAndroid Build Coastguard Worker// Response type for the 210*d5c09012SAndroid Build Coastguard Worker// [`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification) 211*d5c09012SAndroid Build Coastguard Worker// call. 212*d5c09012SAndroid Build Coastguard Workermessage ReportStateAndNotificationResponse { 213*d5c09012SAndroid Build Coastguard Worker // Request ID copied from 214*d5c09012SAndroid Build Coastguard Worker // [ReportStateAndNotificationRequest][google.home.graph.v1.ReportStateAndNotificationRequest]. 215*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 216*d5c09012SAndroid Build Coastguard Worker} 217*d5c09012SAndroid Build Coastguard Worker 218*d5c09012SAndroid Build Coastguard Worker// Payload containing the state and notification information for devices. 219*d5c09012SAndroid Build Coastguard Workermessage StateAndNotificationPayload { 220*d5c09012SAndroid Build Coastguard Worker // The devices for updating state and sending notifications. 221*d5c09012SAndroid Build Coastguard Worker ReportStateAndNotificationDevice devices = 1; 222*d5c09012SAndroid Build Coastguard Worker} 223*d5c09012SAndroid Build Coastguard Worker 224*d5c09012SAndroid Build Coastguard Worker// The states and notifications specific to a device. 225*d5c09012SAndroid Build Coastguard Workermessage ReportStateAndNotificationDevice { 226*d5c09012SAndroid Build Coastguard Worker // States of devices to update. See the **Device STATES** section 227*d5c09012SAndroid Build Coastguard Worker // of the individual trait [reference 228*d5c09012SAndroid Build Coastguard Worker // guides](https://developers.home.google.com/cloud-to-cloud/traits). 229*d5c09012SAndroid Build Coastguard Worker google.protobuf.Struct states = 1; 230*d5c09012SAndroid Build Coastguard Worker 231*d5c09012SAndroid Build Coastguard Worker // Notifications metadata for devices. See the **Device NOTIFICATIONS** 232*d5c09012SAndroid Build Coastguard Worker // section of the individual trait [reference 233*d5c09012SAndroid Build Coastguard Worker // guides](https://developers.home.google.com/cloud-to-cloud/traits). 234*d5c09012SAndroid Build Coastguard Worker google.protobuf.Struct notifications = 2; 235*d5c09012SAndroid Build Coastguard Worker} 236*d5c09012SAndroid Build Coastguard Worker 237*d5c09012SAndroid Build Coastguard Worker// Request type for the 238*d5c09012SAndroid Build Coastguard Worker// [`DeleteAgentUser`](#google.home.graph.v1.HomeGraphApiService.DeleteAgentUser) 239*d5c09012SAndroid Build Coastguard Worker// call. 240*d5c09012SAndroid Build Coastguard Workermessage DeleteAgentUserRequest { 241*d5c09012SAndroid Build Coastguard Worker // Request ID used for debugging. 242*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 243*d5c09012SAndroid Build Coastguard Worker 244*d5c09012SAndroid Build Coastguard Worker // Required. Third-party user ID. 245*d5c09012SAndroid Build Coastguard Worker string agent_user_id = 2 [ 246*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 247*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 248*d5c09012SAndroid Build Coastguard Worker type: "homegraph.googleapis.com/AgentUserPath" 249*d5c09012SAndroid Build Coastguard Worker } 250*d5c09012SAndroid Build Coastguard Worker ]; 251*d5c09012SAndroid Build Coastguard Worker} 252*d5c09012SAndroid Build Coastguard Worker 253*d5c09012SAndroid Build Coastguard Worker// Request type for the 254*d5c09012SAndroid Build Coastguard Worker// [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call. 255*d5c09012SAndroid Build Coastguard Workermessage QueryRequest { 256*d5c09012SAndroid Build Coastguard Worker // Request ID used for debugging. 257*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 258*d5c09012SAndroid Build Coastguard Worker 259*d5c09012SAndroid Build Coastguard Worker // Required. Third-party user ID. 260*d5c09012SAndroid Build Coastguard Worker string agent_user_id = 2 [(google.api.field_behavior) = REQUIRED]; 261*d5c09012SAndroid Build Coastguard Worker 262*d5c09012SAndroid Build Coastguard Worker // Required. Inputs containing third-party device IDs for which to 263*d5c09012SAndroid Build Coastguard Worker // get the device states. 264*d5c09012SAndroid Build Coastguard Worker repeated QueryRequestInput inputs = 3 265*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = REQUIRED]; 266*d5c09012SAndroid Build Coastguard Worker} 267*d5c09012SAndroid Build Coastguard Worker 268*d5c09012SAndroid Build Coastguard Worker// Device ID inputs to [QueryRequest][google.home.graph.v1.QueryRequest]. 269*d5c09012SAndroid Build Coastguard Workermessage QueryRequestInput { 270*d5c09012SAndroid Build Coastguard Worker // Payload containing third-party device IDs. 271*d5c09012SAndroid Build Coastguard Worker QueryRequestPayload payload = 1; 272*d5c09012SAndroid Build Coastguard Worker} 273*d5c09012SAndroid Build Coastguard Worker 274*d5c09012SAndroid Build Coastguard Worker// Payload containing device IDs. 275*d5c09012SAndroid Build Coastguard Workermessage QueryRequestPayload { 276*d5c09012SAndroid Build Coastguard Worker // Third-party device IDs for which to get the device states. 277*d5c09012SAndroid Build Coastguard Worker repeated AgentDeviceId devices = 1; 278*d5c09012SAndroid Build Coastguard Worker} 279*d5c09012SAndroid Build Coastguard Worker 280*d5c09012SAndroid Build Coastguard Worker// Third-party device ID for one device. 281*d5c09012SAndroid Build Coastguard Workermessage AgentDeviceId { 282*d5c09012SAndroid Build Coastguard Worker // Third-party device ID. 283*d5c09012SAndroid Build Coastguard Worker string id = 1; 284*d5c09012SAndroid Build Coastguard Worker} 285*d5c09012SAndroid Build Coastguard Worker 286*d5c09012SAndroid Build Coastguard Worker// Response type for the 287*d5c09012SAndroid Build Coastguard Worker// [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call. 288*d5c09012SAndroid Build Coastguard Worker// This should follow the same format as the Google smart home 289*d5c09012SAndroid Build Coastguard Worker// `action.devices.QUERY` 290*d5c09012SAndroid Build Coastguard Worker// [response](https://developers.home.google.com/cloud-to-cloud/intents/query). 291*d5c09012SAndroid Build Coastguard Worker// 292*d5c09012SAndroid Build Coastguard Worker// Example: 293*d5c09012SAndroid Build Coastguard Worker// 294*d5c09012SAndroid Build Coastguard Worker// ```json 295*d5c09012SAndroid Build Coastguard Worker// { 296*d5c09012SAndroid Build Coastguard Worker// "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", 297*d5c09012SAndroid Build Coastguard Worker// "payload": { 298*d5c09012SAndroid Build Coastguard Worker// "devices": { 299*d5c09012SAndroid Build Coastguard Worker// "123": { 300*d5c09012SAndroid Build Coastguard Worker// "on": true, 301*d5c09012SAndroid Build Coastguard Worker// "online": true 302*d5c09012SAndroid Build Coastguard Worker// }, 303*d5c09012SAndroid Build Coastguard Worker// "456": { 304*d5c09012SAndroid Build Coastguard Worker// "on": true, 305*d5c09012SAndroid Build Coastguard Worker// "online": true, 306*d5c09012SAndroid Build Coastguard Worker// "brightness": 80, 307*d5c09012SAndroid Build Coastguard Worker// "color": { 308*d5c09012SAndroid Build Coastguard Worker// "name": "cerulean", 309*d5c09012SAndroid Build Coastguard Worker// "spectrumRGB": 31655 310*d5c09012SAndroid Build Coastguard Worker// } 311*d5c09012SAndroid Build Coastguard Worker// } 312*d5c09012SAndroid Build Coastguard Worker// } 313*d5c09012SAndroid Build Coastguard Worker// } 314*d5c09012SAndroid Build Coastguard Worker// } 315*d5c09012SAndroid Build Coastguard Worker// ``` 316*d5c09012SAndroid Build Coastguard Workermessage QueryResponse { 317*d5c09012SAndroid Build Coastguard Worker // Request ID used for debugging. Copied from the request. 318*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 319*d5c09012SAndroid Build Coastguard Worker 320*d5c09012SAndroid Build Coastguard Worker // Device states for the devices given in the request. 321*d5c09012SAndroid Build Coastguard Worker QueryResponsePayload payload = 2; 322*d5c09012SAndroid Build Coastguard Worker} 323*d5c09012SAndroid Build Coastguard Worker 324*d5c09012SAndroid Build Coastguard Worker// Payload containing device states information. 325*d5c09012SAndroid Build Coastguard Workermessage QueryResponsePayload { 326*d5c09012SAndroid Build Coastguard Worker // States of the devices. Map of third-party device ID to struct of device 327*d5c09012SAndroid Build Coastguard Worker // states. 328*d5c09012SAndroid Build Coastguard Worker map<string, google.protobuf.Struct> devices = 1; 329*d5c09012SAndroid Build Coastguard Worker} 330*d5c09012SAndroid Build Coastguard Worker 331*d5c09012SAndroid Build Coastguard Worker// Request type for the [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) 332*d5c09012SAndroid Build Coastguard Worker// call. 333*d5c09012SAndroid Build Coastguard Workermessage SyncRequest { 334*d5c09012SAndroid Build Coastguard Worker // Request ID used for debugging. 335*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 336*d5c09012SAndroid Build Coastguard Worker 337*d5c09012SAndroid Build Coastguard Worker // Required. Third-party user ID. 338*d5c09012SAndroid Build Coastguard Worker string agent_user_id = 2 [(google.api.field_behavior) = REQUIRED]; 339*d5c09012SAndroid Build Coastguard Worker} 340*d5c09012SAndroid Build Coastguard Worker 341*d5c09012SAndroid Build Coastguard Worker// Response type for the 342*d5c09012SAndroid Build Coastguard Worker// [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) call. 343*d5c09012SAndroid Build Coastguard Worker// This should follow the same format as the Google smart home 344*d5c09012SAndroid Build Coastguard Worker// `action.devices.SYNC` 345*d5c09012SAndroid Build Coastguard Worker// [response](https://developers.home.google.com/cloud-to-cloud/intents/sync). 346*d5c09012SAndroid Build Coastguard Worker// 347*d5c09012SAndroid Build Coastguard Worker// Example: 348*d5c09012SAndroid Build Coastguard Worker// 349*d5c09012SAndroid Build Coastguard Worker// ```json 350*d5c09012SAndroid Build Coastguard Worker// { 351*d5c09012SAndroid Build Coastguard Worker// "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", 352*d5c09012SAndroid Build Coastguard Worker// "payload": { 353*d5c09012SAndroid Build Coastguard Worker// "agentUserId": "1836.15267389", 354*d5c09012SAndroid Build Coastguard Worker// "devices": [{ 355*d5c09012SAndroid Build Coastguard Worker// "id": "123", 356*d5c09012SAndroid Build Coastguard Worker// "type": "action.devices.types.OUTLET", 357*d5c09012SAndroid Build Coastguard Worker// "traits": [ 358*d5c09012SAndroid Build Coastguard Worker// "action.devices.traits.OnOff" 359*d5c09012SAndroid Build Coastguard Worker// ], 360*d5c09012SAndroid Build Coastguard Worker// "name": { 361*d5c09012SAndroid Build Coastguard Worker// "defaultNames": ["My Outlet 1234"], 362*d5c09012SAndroid Build Coastguard Worker// "name": "Night light", 363*d5c09012SAndroid Build Coastguard Worker// "nicknames": ["wall plug"] 364*d5c09012SAndroid Build Coastguard Worker// }, 365*d5c09012SAndroid Build Coastguard Worker// "willReportState": false, 366*d5c09012SAndroid Build Coastguard Worker// "deviceInfo": { 367*d5c09012SAndroid Build Coastguard Worker// "manufacturer": "lights-out-inc", 368*d5c09012SAndroid Build Coastguard Worker// "model": "hs1234", 369*d5c09012SAndroid Build Coastguard Worker// "hwVersion": "3.2", 370*d5c09012SAndroid Build Coastguard Worker// "swVersion": "11.4" 371*d5c09012SAndroid Build Coastguard Worker// }, 372*d5c09012SAndroid Build Coastguard Worker// "customData": { 373*d5c09012SAndroid Build Coastguard Worker// "fooValue": 74, 374*d5c09012SAndroid Build Coastguard Worker// "barValue": true, 375*d5c09012SAndroid Build Coastguard Worker// "bazValue": "foo" 376*d5c09012SAndroid Build Coastguard Worker// } 377*d5c09012SAndroid Build Coastguard Worker// }] 378*d5c09012SAndroid Build Coastguard Worker// } 379*d5c09012SAndroid Build Coastguard Worker// } 380*d5c09012SAndroid Build Coastguard Worker// ``` 381*d5c09012SAndroid Build Coastguard Workermessage SyncResponse { 382*d5c09012SAndroid Build Coastguard Worker // Request ID used for debugging. Copied from the request. 383*d5c09012SAndroid Build Coastguard Worker string request_id = 1; 384*d5c09012SAndroid Build Coastguard Worker 385*d5c09012SAndroid Build Coastguard Worker // Devices associated with the third-party user. 386*d5c09012SAndroid Build Coastguard Worker SyncResponsePayload payload = 2; 387*d5c09012SAndroid Build Coastguard Worker} 388*d5c09012SAndroid Build Coastguard Worker 389*d5c09012SAndroid Build Coastguard Worker// Payload containing device information. 390*d5c09012SAndroid Build Coastguard Workermessage SyncResponsePayload { 391*d5c09012SAndroid Build Coastguard Worker // Third-party user ID 392*d5c09012SAndroid Build Coastguard Worker string agent_user_id = 1; 393*d5c09012SAndroid Build Coastguard Worker 394*d5c09012SAndroid Build Coastguard Worker // Devices associated with the third-party user. 395*d5c09012SAndroid Build Coastguard Worker repeated Device devices = 2; 396*d5c09012SAndroid Build Coastguard Worker} 397