693 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Ruby
		
	
	
	
		
		
			
		
	
	
			693 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Ruby
		
	
	
	
|  | # Copyright 2015 Google Inc. | ||
|  | # | ||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  | # you may not use this file except in compliance with the License. | ||
|  | # You may obtain a copy of the License at | ||
|  | # | ||
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | ||
|  | # | ||
|  | # Unless required by applicable law or agreed to in writing, software | ||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  | # See the License for the specific language governing permissions and | ||
|  | # limitations under the License. | ||
|  | 
 | ||
|  | require 'date' | ||
|  | require 'google/apis/core/base_service' | ||
|  | require 'google/apis/core/json_representation' | ||
|  | require 'google/apis/core/hashable' | ||
|  | require 'google/apis/errors' | ||
|  | 
 | ||
|  | module Google | ||
|  |   module Apis | ||
|  |     module HomegraphV1 | ||
|  |        | ||
|  |       # Third-party partner's device ID for one device. | ||
|  |       class AgentDeviceId | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Third-party partner's device ID. | ||
|  |         # Corresponds to the JSON property `id` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @id = args[:id] if args.key?(:id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Identifies a device in the third party or first party system. | ||
|  |       class AgentOtherDeviceId | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The agent's ID. Generally it is the agent's AoG project id. | ||
|  |         # Corresponds to the JSON property `agentId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :agent_id | ||
|  |        | ||
|  |         # Device ID defined by the agent. The device_id must be unique. | ||
|  |         # Corresponds to the JSON property `deviceId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :device_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @agent_id = args[:agent_id] if args.key?(:agent_id) | ||
|  |           @device_id = args[:device_id] if args.key?(:device_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Third-party partner's device definition. | ||
|  |       class Device | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Attributes for the traits supported by the device. | ||
|  |         # Corresponds to the JSON property `attributes` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :attributes | ||
|  |        | ||
|  |         # Custom JSON data provided by the manufacturer and attached to QUERY and | ||
|  |         # EXECUTE requests in AoG. | ||
|  |         # Corresponds to the JSON property `customData` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :custom_data | ||
|  |        | ||
|  |         # Device information. | ||
|  |         # Corresponds to the JSON property `deviceInfo` | ||
|  |         # @return [Google::Apis::HomegraphV1::DeviceInfo] | ||
|  |         attr_accessor :device_info | ||
|  |        | ||
|  |         # Third-party partner's device ID. | ||
|  |         # Corresponds to the JSON property `id` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :id | ||
|  |        | ||
|  |         # Different names for the device. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [Google::Apis::HomegraphV1::DeviceNames] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # IDs of other devices associated with this device. This is used to | ||
|  |         # represent a device group (e.g. bonded zone) or "facets" synced | ||
|  |         # through different flows (e.g. Google Nest Hub Max with a Nest Camera). | ||
|  |         # This may also be used to pass in alternate IDs used to identify a cloud | ||
|  |         # synced device for local execution (i.e. local verification). If used for | ||
|  |         # local verification, this field is synced from the cloud. | ||
|  |         # Corresponds to the JSON property `otherDeviceIds` | ||
|  |         # @return [Array<Google::Apis::HomegraphV1::AgentOtherDeviceId>] | ||
|  |         attr_accessor :other_device_ids | ||
|  |        | ||
|  |         # If the third-party partner's cloud configuration includes placing devices | ||
|  |         # in rooms, the name of the room can be provided here. | ||
|  |         # Corresponds to the JSON property `roomHint` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :room_hint | ||
|  |        | ||
|  |         # As in roomHint, for structures that users set up in the partner's system. | ||
|  |         # Corresponds to the JSON property `structureHint` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :structure_hint | ||
|  |        | ||
|  |         # Traits supported by the device. | ||
|  |         # Corresponds to the JSON property `traits` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :traits | ||
|  |        | ||
|  |         # Hardware type of the device (e.g. light, outlet, etc). | ||
|  |         # Corresponds to the JSON property `type` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :type | ||
|  |        | ||
|  |         # Indicates whether the state of this device is being reported to Google | ||
|  |         # through ReportStateAndNotification call. | ||
|  |         # Corresponds to the JSON property `willReportState` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :will_report_state | ||
|  |         alias_method :will_report_state?, :will_report_state | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @attributes = args[:attributes] if args.key?(:attributes) | ||
|  |           @custom_data = args[:custom_data] if args.key?(:custom_data) | ||
|  |           @device_info = args[:device_info] if args.key?(:device_info) | ||
|  |           @id = args[:id] if args.key?(:id) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @other_device_ids = args[:other_device_ids] if args.key?(:other_device_ids) | ||
|  |           @room_hint = args[:room_hint] if args.key?(:room_hint) | ||
|  |           @structure_hint = args[:structure_hint] if args.key?(:structure_hint) | ||
|  |           @traits = args[:traits] if args.key?(:traits) | ||
|  |           @type = args[:type] if args.key?(:type) | ||
|  |           @will_report_state = args[:will_report_state] if args.key?(:will_report_state) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Device information. | ||
|  |       class DeviceInfo | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Device hardware version. | ||
|  |         # Corresponds to the JSON property `hwVersion` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :hw_version | ||
|  |        | ||
|  |         # Device manufacturer. | ||
|  |         # Corresponds to the JSON property `manufacturer` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :manufacturer | ||
|  |        | ||
|  |         # Device model. | ||
|  |         # Corresponds to the JSON property `model` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :model | ||
|  |        | ||
|  |         # Device software version. | ||
|  |         # Corresponds to the JSON property `swVersion` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :sw_version | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @hw_version = args[:hw_version] if args.key?(:hw_version) | ||
|  |           @manufacturer = args[:manufacturer] if args.key?(:manufacturer) | ||
|  |           @model = args[:model] if args.key?(:model) | ||
|  |           @sw_version = args[:sw_version] if args.key?(:sw_version) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Different names for the device. | ||
|  |       class DeviceNames | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # List of names provided by the partner rather than the user, often | ||
|  |         # manufacturer names, SKUs, etc. | ||
|  |         # Corresponds to the JSON property `defaultNames` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :default_names | ||
|  |        | ||
|  |         # Primary name of the device, generally provided by the user. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # Additional names provided by the user for the device. | ||
|  |         # Corresponds to the JSON property `nicknames` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :nicknames | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @default_names = args[:default_names] if args.key?(:default_names) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @nicknames = args[:nicknames] if args.key?(:nicknames) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A generic empty message that you can re-use to avoid defining duplicated | ||
|  |       # empty messages in your APIs. A typical example is to use it as the request | ||
|  |       # or the response type of an API method. For instance: | ||
|  |       # service Foo ` | ||
|  |       # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); | ||
|  |       # ` | ||
|  |       # The JSON representation for `Empty` is empty JSON object ````. | ||
|  |       class Empty | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Request type for the | ||
|  |       # [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call. This should | ||
|  |       # be the same format as the Actions on Google `action.devices.QUERY` | ||
|  |       # [request](/actions/smarthome/create-app#actiondevicesquery) with the | ||
|  |       # exception of the extra `agent_user_id` and no `intent` and `customData` | ||
|  |       # fields. | ||
|  |       class QueryRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Required. Third-party user ID. | ||
|  |         # Corresponds to the JSON property `agentUserId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :agent_user_id | ||
|  |        | ||
|  |         # Required. Inputs containing third-party partner's device IDs for which to | ||
|  |         # get the device states. | ||
|  |         # Corresponds to the JSON property `inputs` | ||
|  |         # @return [Array<Google::Apis::HomegraphV1::QueryRequestInput>] | ||
|  |         attr_accessor :inputs | ||
|  |        | ||
|  |         # Request ID used for debugging. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @agent_user_id = args[:agent_user_id] if args.key?(:agent_user_id) | ||
|  |           @inputs = args[:inputs] if args.key?(:inputs) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Device ID inputs to QueryRequest. | ||
|  |       class QueryRequestInput | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Payload containing device IDs. | ||
|  |         # Corresponds to the JSON property `payload` | ||
|  |         # @return [Google::Apis::HomegraphV1::QueryRequestPayload] | ||
|  |         attr_accessor :payload | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @payload = args[:payload] if args.key?(:payload) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Payload containing device IDs. | ||
|  |       class QueryRequestPayload | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Third-party partner's device IDs for which to get the device states. | ||
|  |         # Corresponds to the JSON property `devices` | ||
|  |         # @return [Array<Google::Apis::HomegraphV1::AgentDeviceId>] | ||
|  |         attr_accessor :devices | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @devices = args[:devices] if args.key?(:devices) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Response type for the | ||
|  |       # [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call. This should | ||
|  |       # follow the same format as the Actions on Google `action.devices.QUERY` | ||
|  |       # [response](/actions/smarthome/create-app#actiondevicesquery). | ||
|  |       # # Example | ||
|  |       # ```json | ||
|  |       # ` | ||
|  |       # "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", | ||
|  |       # "payload": ` | ||
|  |       # "devices": ` | ||
|  |       # "123": ` | ||
|  |       # "on": true, | ||
|  |       # "online": true | ||
|  |       # `, | ||
|  |       # "456": ` | ||
|  |       # "on": true, | ||
|  |       # "online": true, | ||
|  |       # "brightness": 80, | ||
|  |       # "color": ` | ||
|  |       # "name": "cerulean", | ||
|  |       # "spectrumRGB": 31655 | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ``` | ||
|  |       class QueryResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Payload containing device states information. | ||
|  |         # Corresponds to the JSON property `payload` | ||
|  |         # @return [Google::Apis::HomegraphV1::QueryResponsePayload] | ||
|  |         attr_accessor :payload | ||
|  |        | ||
|  |         # Request ID used for debugging. Copied from the request. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @payload = args[:payload] if args.key?(:payload) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Payload containing device states information. | ||
|  |       class QueryResponsePayload | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # States of the devices. Map of third-party device ID to struct of device | ||
|  |         # states. | ||
|  |         # Corresponds to the JSON property `devices` | ||
|  |         # @return [Hash<String,Hash<String,Object>>] | ||
|  |         attr_accessor :devices | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @devices = args[:devices] if args.key?(:devices) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # The states and notifications specific to a device. | ||
|  |       class ReportStateAndNotificationDevice | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Notifications metadata for devices. | ||
|  |         # Corresponds to the JSON property `notifications` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :notifications | ||
|  |        | ||
|  |         # States of devices to update. | ||
|  |         # Corresponds to the JSON property `states` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :states | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @notifications = args[:notifications] if args.key?(:notifications) | ||
|  |           @states = args[:states] if args.key?(:states) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Request type for the | ||
|  |       # [`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService. | ||
|  |       # ReportStateAndNotification) | ||
|  |       # call. It may include States, Notifications, or both. This request uses | ||
|  |       # globally unique flattened state names instead of namespaces based on traits | ||
|  |       # to align with the existing QUERY and EXECUTE APIs implemented by 90+ Smart | ||
|  |       # Home partners. States and notifications are defined per `device_id` (for | ||
|  |       # example, "123" | ||
|  |       # and "456" in the following example). # Example | ||
|  |       # ```json | ||
|  |       # ` | ||
|  |       # "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", | ||
|  |       # "agentUserId": "1234", | ||
|  |       # "payload": ` | ||
|  |       # "devices": ` | ||
|  |       # "states": ` | ||
|  |       # "123": ` | ||
|  |       # "on": true | ||
|  |       # `, | ||
|  |       # "456": ` | ||
|  |       # "on": true, | ||
|  |       # "brightness": 10 | ||
|  |       # ` | ||
|  |       # `, | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ``` | ||
|  |       class ReportStateAndNotificationRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Required. Third-party user ID. | ||
|  |         # Corresponds to the JSON property `agentUserId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :agent_user_id | ||
|  |        | ||
|  |         # Unique identifier per event (for example, a doorbell press). | ||
|  |         # Corresponds to the JSON property `eventId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :event_id | ||
|  |        | ||
|  |         # Token to maintain state in the follow up notification response. | ||
|  |         # Corresponds to the JSON property `followUpToken` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :follow_up_token | ||
|  |        | ||
|  |         # Payload containing the state and notification information for devices. | ||
|  |         # Corresponds to the JSON property `payload` | ||
|  |         # @return [Google::Apis::HomegraphV1::StateAndNotificationPayload] | ||
|  |         attr_accessor :payload | ||
|  |        | ||
|  |         # Request ID used for debugging. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @agent_user_id = args[:agent_user_id] if args.key?(:agent_user_id) | ||
|  |           @event_id = args[:event_id] if args.key?(:event_id) | ||
|  |           @follow_up_token = args[:follow_up_token] if args.key?(:follow_up_token) | ||
|  |           @payload = args[:payload] if args.key?(:payload) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Response type for the | ||
|  |       # [`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService. | ||
|  |       # ReportStateAndNotification) | ||
|  |       # call. | ||
|  |       class ReportStateAndNotificationResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Request ID copied from ReportStateAndNotificationRequest. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Request type for the | ||
|  |       # [`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService. | ||
|  |       # RequestSyncDevices) | ||
|  |       # call. | ||
|  |       class RequestSyncDevicesRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Required. Third-party user ID issued by agent's third-party identity | ||
|  |         # provider. | ||
|  |         # Corresponds to the JSON property `agentUserId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :agent_user_id | ||
|  |        | ||
|  |         # Optional. If set, the request will be added to a queue and a response will | ||
|  |         # be returned immediately. The queue allows for de-duplication of | ||
|  |         # simultaneous requests. | ||
|  |         # Corresponds to the JSON property `async` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :async | ||
|  |         alias_method :async?, :async | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @agent_user_id = args[:agent_user_id] if args.key?(:agent_user_id) | ||
|  |           @async = args[:async] if args.key?(:async) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Response type for the | ||
|  |       # [`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService. | ||
|  |       # RequestSyncDevices) | ||
|  |       # call. Intentionally empty upon success. An HTTP response code is returned | ||
|  |       # with more details upon failure. | ||
|  |       class RequestSyncDevicesResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Payload containing the state and notification information for devices. | ||
|  |       class StateAndNotificationPayload | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The states and notifications specific to a device. | ||
|  |         # Corresponds to the JSON property `devices` | ||
|  |         # @return [Google::Apis::HomegraphV1::ReportStateAndNotificationDevice] | ||
|  |         attr_accessor :devices | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @devices = args[:devices] if args.key?(:devices) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Request type for the [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) | ||
|  |       # call. This should follow the same format as the Actions on Google | ||
|  |       # `action.devices.SYNC` | ||
|  |       # [request](/actions/smarthome/create-app#actiondevicessync) with the exception | ||
|  |       # of the extra `agent_user_id` and no `intent` field. | ||
|  |       class SyncRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Required. Third-party user ID. | ||
|  |         # Corresponds to the JSON property `agentUserId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :agent_user_id | ||
|  |        | ||
|  |         # Request ID used for debugging. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @agent_user_id = args[:agent_user_id] if args.key?(:agent_user_id) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Response type for the | ||
|  |       # [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) call. This should | ||
|  |       # follow the same format as the Actions on Google `action.devices.SYNC` | ||
|  |       # [response](/actions/smarthome/create-app#actiondevicessync). | ||
|  |       # # Example | ||
|  |       # ```json | ||
|  |       # ` | ||
|  |       # "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", | ||
|  |       # "payload": ` | ||
|  |       # "agentUserId": "1836.15267389", | ||
|  |       # "devices": [` | ||
|  |       # "id": "123", | ||
|  |       # "type": "action.devices.types.OUTLET", | ||
|  |       # "traits": [ | ||
|  |       # "action.devices.traits.OnOff" | ||
|  |       # ], | ||
|  |       # "name": ` | ||
|  |       # "defaultNames": ["My Outlet 1234"], | ||
|  |       # "name": "Night light", | ||
|  |       # "nicknames": ["wall plug"] | ||
|  |       # `, | ||
|  |       # "willReportState": false, | ||
|  |       # "deviceInfo": ` | ||
|  |       # "manufacturer": "lights-out-inc", | ||
|  |       # "model": "hs1234", | ||
|  |       # "hwVersion": "3.2", | ||
|  |       # "swVersion": "11.4" | ||
|  |       # `, | ||
|  |       # "customData": ` | ||
|  |       # "fooValue": 74, | ||
|  |       # "barValue": true, | ||
|  |       # "bazValue": "foo" | ||
|  |       # ` | ||
|  |       # `] | ||
|  |       # ` | ||
|  |       # ` | ||
|  |       # ``` | ||
|  |       class SyncResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Payload containing device information. | ||
|  |         # Corresponds to the JSON property `payload` | ||
|  |         # @return [Google::Apis::HomegraphV1::SyncResponsePayload] | ||
|  |         attr_accessor :payload | ||
|  |        | ||
|  |         # Request ID used for debugging. Copied from the request. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @payload = args[:payload] if args.key?(:payload) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Payload containing device information. | ||
|  |       class SyncResponsePayload | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Third-party user ID | ||
|  |         # Corresponds to the JSON property `agentUserId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :agent_user_id | ||
|  |        | ||
|  |         # Devices associated with the third-party user. | ||
|  |         # Corresponds to the JSON property `devices` | ||
|  |         # @return [Array<Google::Apis::HomegraphV1::Device>] | ||
|  |         attr_accessor :devices | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @agent_user_id = args[:agent_user_id] if args.key?(:agent_user_id) | ||
|  |           @devices = args[:devices] if args.key?(:devices) | ||
|  |         end | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |