xref: /aosp_15_r20/external/googleapis/google/home/graph/v1/homegraph.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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