Documentation

Overview

Package homegraph provides access to the HomeGraph API.

For product documentation, see: https://developers.google.com/actions/smarthome/create-app#request-sync

Creating a client

Usage example:

import "google.golang.org/api/homegraph/v1"
...
ctx := context.Background()
homegraphService, err := homegraph.NewService(ctx)

In this example, Google Application Default Credentials are used for authentication.

For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.

Other authentication options

To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:

homegraphService, err := homegraph.NewService(ctx, option.WithAPIKey("AIza..."))

To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:

config := &oauth2.Config{...}
// ...
token, err := config.Exchange(ctx, ...)
homegraphService, err := homegraph.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))

See https://godoc.org/google.golang.org/api/option/ for details on options.

Index

Constants

View Source
const (
	// Private Service: https://www.googleapis.com/auth/homegraph
	HomegraphScope = "https://www.googleapis.com/auth/homegraph"
)

    OAuth2 scopes used by this API.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type AgentDeviceId

    type AgentDeviceId struct {
    	// Id: Third-party device ID.
    	Id string `json:"id,omitempty"`
    
    	// ForceSendFields is a list of field names (e.g. "Id") to
    	// unconditionally include in API requests. By default, fields with
    	// empty values are omitted from API requests. However, any non-pointer,
    	// non-interface field appearing in ForceSendFields will be sent to the
    	// server regardless of whether the field is empty or not. This may be
    	// used to include empty fields in Patch requests.
    	ForceSendFields []string `json:"-"`
    
    	// NullFields is a list of field names (e.g. "Id") to include in API
    	// requests with the JSON null value. By default, fields with empty
    	// values are omitted from API requests. However, any field with an
    	// empty value appearing in NullFields will be sent to the server as
    	// null. It is an error if a field in this list has a non-empty value.
    	// This may be used to include null fields in Patch requests.
    	NullFields []string `json:"-"`
    }

      AgentDeviceId: Third-party device ID for one device.

      func (*AgentDeviceId) MarshalJSON

      func (s *AgentDeviceId) MarshalJSON() ([]byte, error)

      type AgentOtherDeviceId

      type AgentOtherDeviceId struct {
      	// AgentId: Project ID for your smart home Action.
      	AgentId string `json:"agentId,omitempty"`
      
      	// DeviceId: Unique third-party device ID.
      	DeviceId string `json:"deviceId,omitempty"`
      
      	// ForceSendFields is a list of field names (e.g. "AgentId") to
      	// unconditionally include in API requests. By default, fields with
      	// empty values are omitted from API requests. However, any non-pointer,
      	// non-interface field appearing in ForceSendFields will be sent to the
      	// server regardless of whether the field is empty or not. This may be
      	// used to include empty fields in Patch requests.
      	ForceSendFields []string `json:"-"`
      
      	// NullFields is a list of field names (e.g. "AgentId") to include in
      	// API requests with the JSON null value. By default, fields with empty
      	// values are omitted from API requests. However, any field with an
      	// empty value appearing in NullFields will be sent to the server as
      	// null. It is an error if a field in this list has a non-empty value.
      	// This may be used to include null fields in Patch requests.
      	NullFields []string `json:"-"`
      }

        AgentOtherDeviceId: Alternate third-party device ID.

        func (*AgentOtherDeviceId) MarshalJSON

        func (s *AgentOtherDeviceId) MarshalJSON() ([]byte, error)

        type AgentUsersDeleteCall

        type AgentUsersDeleteCall struct {
        	// contains filtered or unexported fields
        }

        func (*AgentUsersDeleteCall) Context

          Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

          func (*AgentUsersDeleteCall) Do

            Do executes the "homegraph.agentUsers.delete" call. Exactly one of *Empty or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Empty.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

            func (*AgentUsersDeleteCall) Fields

              Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

              func (*AgentUsersDeleteCall) Header

              func (c *AgentUsersDeleteCall) Header() http.Header

                Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

                func (*AgentUsersDeleteCall) RequestId

                func (c *AgentUsersDeleteCall) RequestId(requestId string) *AgentUsersDeleteCall

                  RequestId sets the optional parameter "requestId": Request ID used for debugging.

                  type AgentUsersService

                  type AgentUsersService struct {
                  	// contains filtered or unexported fields
                  }

                  func NewAgentUsersService

                  func NewAgentUsersService(s *Service) *AgentUsersService

                  func (*AgentUsersService) Delete

                  func (r *AgentUsersService) Delete(agentUserId string) *AgentUsersDeleteCall

                    Delete: Unlinks the given third-party user from your smart home Action. All data related to this user will be deleted. For more details on how users link their accounts, see fulfillment and authentication (https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication). The third-party user's identity is passed in via the `agent_user_id` (see DeleteAgentUserRequest). This request must be authorized using service account credentials from your Actions console project.

                    - agentUserId: Third-party user ID.

                    type Device

                    type Device struct {
                    	// Attributes: Attributes for the traits supported by the device.
                    	Attributes googleapi.RawMessage `json:"attributes,omitempty"`
                    
                    	// CustomData: Custom device attributes stored in Home Graph and
                    	// provided to your smart home Action in each QUERY
                    	// (https://developers.google.com/assistant/smarthome/reference/intent/query)
                    	// and EXECUTE
                    	// (https://developers.google.com/assistant/smarthome/reference/intent/execute)
                    	// intent. Data in this object has a few constraints: No sensitive
                    	// information, including but not limited to Personally Identifiable
                    	// Information.
                    	CustomData googleapi.RawMessage `json:"customData,omitempty"`
                    
                    	// DeviceInfo: Device manufacturer, model, hardware version, and
                    	// software version.
                    	DeviceInfo *DeviceInfo `json:"deviceInfo,omitempty"`
                    
                    	// Id: Third-party device ID.
                    	Id string `json:"id,omitempty"`
                    
                    	// Name: Names given to this device by your smart home Action.
                    	Name *DeviceNames `json:"name,omitempty"`
                    
                    	// NotificationSupportedByAgent: Indicates whether your smart home
                    	// Action will report notifications to Google for this device via
                    	// ReportStateAndNotification. If your smart home Action enables users
                    	// to control device notifications, you should update this field and
                    	// call RequestSyncDevices.
                    	NotificationSupportedByAgent bool `json:"notificationSupportedByAgent,omitempty"`
                    
                    	// OtherDeviceIds: Alternate IDs associated with this device. This is
                    	// used to identify cloud synced devices enabled for local fulfillment
                    	// (https://developers.google.com/assistant/smarthome/concepts/local).
                    	OtherDeviceIds []*AgentOtherDeviceId `json:"otherDeviceIds,omitempty"`
                    
                    	// RoomHint: Suggested name for the room where this device is installed.
                    	// Google attempts to use this value during user setup.
                    	RoomHint string `json:"roomHint,omitempty"`
                    
                    	// StructureHint: Suggested name for the structure where this device is
                    	// installed. Google attempts to use this value during user setup.
                    	StructureHint string `json:"structureHint,omitempty"`
                    
                    	// Traits: Traits supported by the device. See device traits
                    	// (https://developers.google.com/assistant/smarthome/traits).
                    	Traits []string `json:"traits,omitempty"`
                    
                    	// Type: Hardware type of the device. See device types
                    	// (https://developers.google.com/assistant/smarthome/guides).
                    	Type string `json:"type,omitempty"`
                    
                    	// WillReportState: Indicates whether your smart home Action will report
                    	// state of this device to Google via ReportStateAndNotification.
                    	WillReportState bool `json:"willReportState,omitempty"`
                    
                    	// ForceSendFields is a list of field names (e.g. "Attributes") to
                    	// unconditionally include in API requests. By default, fields with
                    	// empty values are omitted from API requests. However, any non-pointer,
                    	// non-interface field appearing in ForceSendFields will be sent to the
                    	// server regardless of whether the field is empty or not. This may be
                    	// used to include empty fields in Patch requests.
                    	ForceSendFields []string `json:"-"`
                    
                    	// NullFields is a list of field names (e.g. "Attributes") to include in
                    	// API requests with the JSON null value. By default, fields with empty
                    	// values are omitted from API requests. However, any field with an
                    	// empty value appearing in NullFields will be sent to the server as
                    	// null. It is an error if a field in this list has a non-empty value.
                    	// This may be used to include null fields in Patch requests.
                    	NullFields []string `json:"-"`
                    }

                      Device: Third-party device definition. Next ID = 14

                      func (*Device) MarshalJSON

                      func (s *Device) MarshalJSON() ([]byte, error)

                      type DeviceInfo

                      type DeviceInfo struct {
                      	// HwVersion: Device hardware version.
                      	HwVersion string `json:"hwVersion,omitempty"`
                      
                      	// Manufacturer: Device manufacturer.
                      	Manufacturer string `json:"manufacturer,omitempty"`
                      
                      	// Model: Device model.
                      	Model string `json:"model,omitempty"`
                      
                      	// SwVersion: Device software version.
                      	SwVersion string `json:"swVersion,omitempty"`
                      
                      	// ForceSendFields is a list of field names (e.g. "HwVersion") to
                      	// unconditionally include in API requests. By default, fields with
                      	// empty values are omitted from API requests. However, any non-pointer,
                      	// non-interface field appearing in ForceSendFields will be sent to the
                      	// server regardless of whether the field is empty or not. This may be
                      	// used to include empty fields in Patch requests.
                      	ForceSendFields []string `json:"-"`
                      
                      	// NullFields is a list of field names (e.g. "HwVersion") to include in
                      	// API requests with the JSON null value. By default, fields with empty
                      	// values are omitted from API requests. However, any field with an
                      	// empty value appearing in NullFields will be sent to the server as
                      	// null. It is an error if a field in this list has a non-empty value.
                      	// This may be used to include null fields in Patch requests.
                      	NullFields []string `json:"-"`
                      }

                        DeviceInfo: Device information.

                        func (*DeviceInfo) MarshalJSON

                        func (s *DeviceInfo) MarshalJSON() ([]byte, error)

                        type DeviceNames

                        type DeviceNames struct {
                        	// DefaultNames: List of names provided by the manufacturer rather than
                        	// the user, such as serial numbers, SKUs, etc.
                        	DefaultNames []string `json:"defaultNames,omitempty"`
                        
                        	// Name: Primary name of the device, generally provided by the user.
                        	Name string `json:"name,omitempty"`
                        
                        	// Nicknames: Additional names provided by the user for the device.
                        	Nicknames []string `json:"nicknames,omitempty"`
                        
                        	// ForceSendFields is a list of field names (e.g. "DefaultNames") to
                        	// unconditionally include in API requests. By default, fields with
                        	// empty values are omitted from API requests. However, any non-pointer,
                        	// non-interface field appearing in ForceSendFields will be sent to the
                        	// server regardless of whether the field is empty or not. This may be
                        	// used to include empty fields in Patch requests.
                        	ForceSendFields []string `json:"-"`
                        
                        	// NullFields is a list of field names (e.g. "DefaultNames") to include
                        	// in API requests with the JSON null value. By default, fields with
                        	// empty values are omitted from API requests. However, any field with
                        	// an empty value appearing in NullFields will be sent to the server as
                        	// null. It is an error if a field in this list has a non-empty value.
                        	// This may be used to include null fields in Patch requests.
                        	NullFields []string `json:"-"`
                        }

                          DeviceNames: Identifiers used to describe the device.

                          func (*DeviceNames) MarshalJSON

                          func (s *DeviceNames) MarshalJSON() ([]byte, error)

                          type DevicesQueryCall

                          type DevicesQueryCall struct {
                          	// contains filtered or unexported fields
                          }

                          func (*DevicesQueryCall) Context

                            Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

                            func (*DevicesQueryCall) Do

                              Do executes the "homegraph.devices.query" call. Exactly one of *QueryResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *QueryResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

                              func (*DevicesQueryCall) Fields

                                Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

                                func (*DevicesQueryCall) Header

                                func (c *DevicesQueryCall) Header() http.Header

                                  Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

                                  type DevicesReportStateAndNotificationCall

                                  type DevicesReportStateAndNotificationCall struct {
                                  	// contains filtered or unexported fields
                                  }

                                  func (*DevicesReportStateAndNotificationCall) Context

                                    Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

                                    func (*DevicesReportStateAndNotificationCall) Do

                                      Do executes the "homegraph.devices.reportStateAndNotification" call. Exactly one of *ReportStateAndNotificationResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *ReportStateAndNotificationResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

                                      func (*DevicesReportStateAndNotificationCall) Fields

                                        Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

                                        func (*DevicesReportStateAndNotificationCall) Header

                                          Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

                                          type DevicesRequestSyncCall

                                          type DevicesRequestSyncCall struct {
                                          	// contains filtered or unexported fields
                                          }

                                          func (*DevicesRequestSyncCall) Context

                                            Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

                                            func (*DevicesRequestSyncCall) Do

                                              Do executes the "homegraph.devices.requestSync" call. Exactly one of *RequestSyncDevicesResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *RequestSyncDevicesResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

                                              func (*DevicesRequestSyncCall) Fields

                                                Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

                                                func (*DevicesRequestSyncCall) Header

                                                func (c *DevicesRequestSyncCall) Header() http.Header

                                                  Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

                                                  type DevicesService

                                                  type DevicesService struct {
                                                  	// contains filtered or unexported fields
                                                  }

                                                  func NewDevicesService

                                                  func NewDevicesService(s *Service) *DevicesService

                                                  func (*DevicesService) Query

                                                  func (r *DevicesService) Query(queryrequest *QueryRequest) *DevicesQueryCall

                                                    Query: Gets the current states in Home Graph for the given set of the third-party user's devices. The third-party user's identity is passed in via the `agent_user_id` (see QueryRequest). This request must be authorized using service account credentials from your Actions console project.

                                                    func (*DevicesService) ReportStateAndNotification

                                                    func (r *DevicesService) ReportStateAndNotification(reportstateandnotificationrequest *ReportStateAndNotificationRequest) *DevicesReportStateAndNotificationCall

                                                      ReportStateAndNotification: Reports device state and optionally sends device notifications. Called by your smart home Action when the state of a third-party device changes or you need to send a notification about the device. See Implement Report State (https://developers.google.com/assistant/smarthome/develop/report-state) for more information. This method updates the device state according to its declared traits (https://developers.google.com/assistant/smarthome/concepts/devices-traits). Publishing a new state value outside of these traits will result in an `INVALID_ARGUMENT` error response. The third-party user's identity is passed in via the `agent_user_id` (see ReportStateAndNotificationRequest). This request must be authorized using service account credentials from your Actions console project.

                                                      func (*DevicesService) RequestSync

                                                      func (r *DevicesService) RequestSync(requestsyncdevicesrequest *RequestSyncDevicesRequest) *DevicesRequestSyncCall

                                                        RequestSync: Requests Google to send an `action.devices.SYNC` intent (https://developers.google.com/assistant/smarthome/reference/intent/sync) to your smart home Action to update device metadata for the given user. The third-party user's identity is passed via the `agent_user_id` (see RequestSyncDevicesRequest). This request must be authorized using service account credentials from your Actions console project.

                                                        func (*DevicesService) Sync

                                                        func (r *DevicesService) Sync(syncrequest *SyncRequest) *DevicesSyncCall

                                                          Sync: Gets all the devices associated with the given third-party user. The third-party user's identity is passed in via the `agent_user_id` (see SyncRequest). This request must be authorized using service account credentials from your Actions console project.

                                                          type DevicesSyncCall

                                                          type DevicesSyncCall struct {
                                                          	// contains filtered or unexported fields
                                                          }

                                                          func (*DevicesSyncCall) Context

                                                            Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

                                                            func (*DevicesSyncCall) Do

                                                              Do executes the "homegraph.devices.sync" call. Exactly one of *SyncResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *SyncResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

                                                              func (*DevicesSyncCall) Fields

                                                                Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

                                                                func (*DevicesSyncCall) Header

                                                                func (c *DevicesSyncCall) Header() http.Header

                                                                  Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

                                                                  type Empty

                                                                  type Empty struct {
                                                                  	// ServerResponse contains the HTTP response code and headers from the
                                                                  	// server.
                                                                  	googleapi.ServerResponse `json:"-"`
                                                                  }

                                                                    Empty: 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 `{}`.

                                                                    type QueryRequest

                                                                    type QueryRequest struct {
                                                                    	// AgentUserId: Required. Third-party user ID.
                                                                    	AgentUserId string `json:"agentUserId,omitempty"`
                                                                    
                                                                    	// Inputs: Required. Inputs containing third-party device IDs for which
                                                                    	// to get the device states.
                                                                    	Inputs []*QueryRequestInput `json:"inputs,omitempty"`
                                                                    
                                                                    	// RequestId: Request ID used for debugging.
                                                                    	RequestId string `json:"requestId,omitempty"`
                                                                    
                                                                    	// ForceSendFields is a list of field names (e.g. "AgentUserId") to
                                                                    	// unconditionally include in API requests. By default, fields with
                                                                    	// empty values are omitted from API requests. However, any non-pointer,
                                                                    	// non-interface field appearing in ForceSendFields will be sent to the
                                                                    	// server regardless of whether the field is empty or not. This may be
                                                                    	// used to include empty fields in Patch requests.
                                                                    	ForceSendFields []string `json:"-"`
                                                                    
                                                                    	// NullFields is a list of field names (e.g. "AgentUserId") to include
                                                                    	// in API requests with the JSON null value. By default, fields with
                                                                    	// empty values are omitted from API requests. However, any field with
                                                                    	// an empty value appearing in NullFields will be sent to the server as
                                                                    	// null. It is an error if a field in this list has a non-empty value.
                                                                    	// This may be used to include null fields in Patch requests.
                                                                    	NullFields []string `json:"-"`
                                                                    }

                                                                      QueryRequest: Request type for the `Query` (#google.home.graph.v1.HomeGraphApiService.Query) call.

                                                                      func (*QueryRequest) MarshalJSON

                                                                      func (s *QueryRequest) MarshalJSON() ([]byte, error)

                                                                      type QueryRequestInput

                                                                      type QueryRequestInput struct {
                                                                      	// Payload: Payload containing third-party device IDs.
                                                                      	Payload *QueryRequestPayload `json:"payload,omitempty"`
                                                                      
                                                                      	// ForceSendFields is a list of field names (e.g. "Payload") to
                                                                      	// unconditionally include in API requests. By default, fields with
                                                                      	// empty values are omitted from API requests. However, any non-pointer,
                                                                      	// non-interface field appearing in ForceSendFields will be sent to the
                                                                      	// server regardless of whether the field is empty or not. This may be
                                                                      	// used to include empty fields in Patch requests.
                                                                      	ForceSendFields []string `json:"-"`
                                                                      
                                                                      	// NullFields is a list of field names (e.g. "Payload") to include in
                                                                      	// API requests with the JSON null value. By default, fields with empty
                                                                      	// values are omitted from API requests. However, any field with an
                                                                      	// empty value appearing in NullFields will be sent to the server as
                                                                      	// null. It is an error if a field in this list has a non-empty value.
                                                                      	// This may be used to include null fields in Patch requests.
                                                                      	NullFields []string `json:"-"`
                                                                      }

                                                                        QueryRequestInput: Device ID inputs to QueryRequest.

                                                                        func (*QueryRequestInput) MarshalJSON

                                                                        func (s *QueryRequestInput) MarshalJSON() ([]byte, error)

                                                                        type QueryRequestPayload

                                                                        type QueryRequestPayload struct {
                                                                        	// Devices: Third-party device IDs for which to get the device states.
                                                                        	Devices []*AgentDeviceId `json:"devices,omitempty"`
                                                                        
                                                                        	// ForceSendFields is a list of field names (e.g. "Devices") to
                                                                        	// unconditionally include in API requests. By default, fields with
                                                                        	// empty values are omitted from API requests. However, any non-pointer,
                                                                        	// non-interface field appearing in ForceSendFields will be sent to the
                                                                        	// server regardless of whether the field is empty or not. This may be
                                                                        	// used to include empty fields in Patch requests.
                                                                        	ForceSendFields []string `json:"-"`
                                                                        
                                                                        	// NullFields is a list of field names (e.g. "Devices") to include in
                                                                        	// API requests with the JSON null value. By default, fields with empty
                                                                        	// values are omitted from API requests. However, any field with an
                                                                        	// empty value appearing in NullFields will be sent to the server as
                                                                        	// null. It is an error if a field in this list has a non-empty value.
                                                                        	// This may be used to include null fields in Patch requests.
                                                                        	NullFields []string `json:"-"`
                                                                        }

                                                                          QueryRequestPayload: Payload containing device IDs.

                                                                          func (*QueryRequestPayload) MarshalJSON

                                                                          func (s *QueryRequestPayload) MarshalJSON() ([]byte, error)

                                                                          type QueryResponse

                                                                          type QueryResponse struct {
                                                                          	// Payload: Device states for the devices given in the request.
                                                                          	Payload *QueryResponsePayload `json:"payload,omitempty"`
                                                                          
                                                                          	// RequestId: Request ID used for debugging. Copied from the request.
                                                                          	RequestId string `json:"requestId,omitempty"`
                                                                          
                                                                          	// ServerResponse contains the HTTP response code and headers from the
                                                                          	// server.
                                                                          	googleapi.ServerResponse `json:"-"`
                                                                          
                                                                          	// ForceSendFields is a list of field names (e.g. "Payload") to
                                                                          	// unconditionally include in API requests. By default, fields with
                                                                          	// empty values are omitted from API requests. However, any non-pointer,
                                                                          	// non-interface field appearing in ForceSendFields will be sent to the
                                                                          	// server regardless of whether the field is empty or not. This may be
                                                                          	// used to include empty fields in Patch requests.
                                                                          	ForceSendFields []string `json:"-"`
                                                                          
                                                                          	// NullFields is a list of field names (e.g. "Payload") to include in
                                                                          	// API requests with the JSON null value. By default, fields with empty
                                                                          	// values are omitted from API requests. However, any field with an
                                                                          	// empty value appearing in NullFields will be sent to the server as
                                                                          	// null. It is an error if a field in this list has a non-empty value.
                                                                          	// This may be used to include null fields in Patch requests.
                                                                          	NullFields []string `json:"-"`
                                                                          }

                                                                            QueryResponse: Response type for the `Query` (#google.home.graph.v1.HomeGraphApiService.Query) call. This should follow the same format as the Google smart home `action.devices.QUERY` response (https://developers.google.com/assistant/smarthome/reference/intent/query). # 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 } } } } } “`

                                                                            func (*QueryResponse) MarshalJSON

                                                                            func (s *QueryResponse) MarshalJSON() ([]byte, error)

                                                                            type QueryResponsePayload

                                                                            type QueryResponsePayload struct {
                                                                            	// Devices: States of the devices. Map of third-party device ID to
                                                                            	// struct of device states.
                                                                            	Devices map[string]googleapi.RawMessage `json:"devices,omitempty"`
                                                                            
                                                                            	// ForceSendFields is a list of field names (e.g. "Devices") to
                                                                            	// unconditionally include in API requests. By default, fields with
                                                                            	// empty values are omitted from API requests. However, any non-pointer,
                                                                            	// non-interface field appearing in ForceSendFields will be sent to the
                                                                            	// server regardless of whether the field is empty or not. This may be
                                                                            	// used to include empty fields in Patch requests.
                                                                            	ForceSendFields []string `json:"-"`
                                                                            
                                                                            	// NullFields is a list of field names (e.g. "Devices") to include in
                                                                            	// API requests with the JSON null value. By default, fields with empty
                                                                            	// values are omitted from API requests. However, any field with an
                                                                            	// empty value appearing in NullFields will be sent to the server as
                                                                            	// null. It is an error if a field in this list has a non-empty value.
                                                                            	// This may be used to include null fields in Patch requests.
                                                                            	NullFields []string `json:"-"`
                                                                            }

                                                                              QueryResponsePayload: Payload containing device states information.

                                                                              func (*QueryResponsePayload) MarshalJSON

                                                                              func (s *QueryResponsePayload) MarshalJSON() ([]byte, error)

                                                                              type ReportStateAndNotificationDevice

                                                                              type ReportStateAndNotificationDevice struct {
                                                                              	// Notifications: Notifications metadata for devices. See the **Device
                                                                              	// NOTIFICATIONS** section of the individual trait reference guides
                                                                              	// (https://developers.google.com/assistant/smarthome/traits).
                                                                              	Notifications googleapi.RawMessage `json:"notifications,omitempty"`
                                                                              
                                                                              	// States: States of devices to update. See the **Device STATES**
                                                                              	// section of the individual trait reference guides
                                                                              	// (https://developers.google.com/assistant/smarthome/traits).
                                                                              	States googleapi.RawMessage `json:"states,omitempty"`
                                                                              
                                                                              	// ForceSendFields is a list of field names (e.g. "Notifications") to
                                                                              	// unconditionally include in API requests. By default, fields with
                                                                              	// empty values are omitted from API requests. However, any non-pointer,
                                                                              	// non-interface field appearing in ForceSendFields will be sent to the
                                                                              	// server regardless of whether the field is empty or not. This may be
                                                                              	// used to include empty fields in Patch requests.
                                                                              	ForceSendFields []string `json:"-"`
                                                                              
                                                                              	// NullFields is a list of field names (e.g. "Notifications") to include
                                                                              	// in API requests with the JSON null value. By default, fields with
                                                                              	// empty values are omitted from API requests. However, any field with
                                                                              	// an empty value appearing in NullFields will be sent to the server as
                                                                              	// null. It is an error if a field in this list has a non-empty value.
                                                                              	// This may be used to include null fields in Patch requests.
                                                                              	NullFields []string `json:"-"`
                                                                              }

                                                                                ReportStateAndNotificationDevice: The states and notifications specific to a device.

                                                                                func (*ReportStateAndNotificationDevice) MarshalJSON

                                                                                func (s *ReportStateAndNotificationDevice) MarshalJSON() ([]byte, error)

                                                                                type ReportStateAndNotificationRequest

                                                                                type ReportStateAndNotificationRequest struct {
                                                                                	// AgentUserId: Required. Third-party user ID.
                                                                                	AgentUserId string `json:"agentUserId,omitempty"`
                                                                                
                                                                                	// EventId: Unique identifier per event (for example, a doorbell press).
                                                                                	EventId string `json:"eventId,omitempty"`
                                                                                
                                                                                	// FollowUpToken: Deprecated.
                                                                                	FollowUpToken string `json:"followUpToken,omitempty"`
                                                                                
                                                                                	// Payload: Required. State of devices to update and notification
                                                                                	// metadata for devices.
                                                                                	Payload *StateAndNotificationPayload `json:"payload,omitempty"`
                                                                                
                                                                                	// RequestId: Request ID used for debugging.
                                                                                	RequestId string `json:"requestId,omitempty"`
                                                                                
                                                                                	// ForceSendFields is a list of field names (e.g. "AgentUserId") to
                                                                                	// unconditionally include in API requests. By default, fields with
                                                                                	// empty values are omitted from API requests. However, any non-pointer,
                                                                                	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                	// server regardless of whether the field is empty or not. This may be
                                                                                	// used to include empty fields in Patch requests.
                                                                                	ForceSendFields []string `json:"-"`
                                                                                
                                                                                	// NullFields is a list of field names (e.g. "AgentUserId") to include
                                                                                	// in API requests with the JSON null value. By default, fields with
                                                                                	// empty values are omitted from API requests. However, any field with
                                                                                	// an empty value appearing in NullFields will be sent to the server as
                                                                                	// null. It is an error if a field in this list has a non-empty value.
                                                                                	// This may be used to include null fields in Patch requests.
                                                                                	NullFields []string `json:"-"`
                                                                                }

                                                                                  ReportStateAndNotificationRequest: Request type for the `ReportStateAndNotification` (#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification)

                                                                                  call. It may include states, notifications, or both. 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 } }, } } } “`

                                                                                  func (*ReportStateAndNotificationRequest) MarshalJSON

                                                                                  func (s *ReportStateAndNotificationRequest) MarshalJSON() ([]byte, error)

                                                                                  type ReportStateAndNotificationResponse

                                                                                  type ReportStateAndNotificationResponse struct {
                                                                                  	// RequestId: Request ID copied from ReportStateAndNotificationRequest.
                                                                                  	RequestId string `json:"requestId,omitempty"`
                                                                                  
                                                                                  	// ServerResponse contains the HTTP response code and headers from the
                                                                                  	// server.
                                                                                  	googleapi.ServerResponse `json:"-"`
                                                                                  
                                                                                  	// ForceSendFields is a list of field names (e.g. "RequestId") to
                                                                                  	// unconditionally include in API requests. By default, fields with
                                                                                  	// empty values are omitted from API requests. However, any non-pointer,
                                                                                  	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                  	// server regardless of whether the field is empty or not. This may be
                                                                                  	// used to include empty fields in Patch requests.
                                                                                  	ForceSendFields []string `json:"-"`
                                                                                  
                                                                                  	// NullFields is a list of field names (e.g. "RequestId") to include in
                                                                                  	// API requests with the JSON null value. By default, fields with empty
                                                                                  	// values are omitted from API requests. However, any field with an
                                                                                  	// empty value appearing in NullFields will be sent to the server as
                                                                                  	// null. It is an error if a field in this list has a non-empty value.
                                                                                  	// This may be used to include null fields in Patch requests.
                                                                                  	NullFields []string `json:"-"`
                                                                                  }

                                                                                    ReportStateAndNotificationResponse: Response type for the `ReportStateAndNotification` (#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification)

                                                                                    call.
                                                                                    

                                                                                    func (*ReportStateAndNotificationResponse) MarshalJSON

                                                                                    func (s *ReportStateAndNotificationResponse) MarshalJSON() ([]byte, error)

                                                                                    type RequestSyncDevicesRequest

                                                                                    type RequestSyncDevicesRequest struct {
                                                                                    	// AgentUserId: Required. Third-party user ID.
                                                                                    	AgentUserId string `json:"agentUserId,omitempty"`
                                                                                    
                                                                                    	// Async: Optional. If set, the request will be added to a queue and a
                                                                                    	// response will be returned immediately. This enables concurrent
                                                                                    	// requests for the given `agent_user_id`, but the caller will not
                                                                                    	// receive any error responses.
                                                                                    	Async bool `json:"async,omitempty"`
                                                                                    
                                                                                    	// ForceSendFields is a list of field names (e.g. "AgentUserId") to
                                                                                    	// unconditionally include in API requests. By default, fields with
                                                                                    	// empty values are omitted from API requests. However, any non-pointer,
                                                                                    	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                    	// server regardless of whether the field is empty or not. This may be
                                                                                    	// used to include empty fields in Patch requests.
                                                                                    	ForceSendFields []string `json:"-"`
                                                                                    
                                                                                    	// NullFields is a list of field names (e.g. "AgentUserId") to include
                                                                                    	// in API requests with the JSON null value. By default, fields with
                                                                                    	// empty values are omitted from API requests. However, any field with
                                                                                    	// an empty value appearing in NullFields will be sent to the server as
                                                                                    	// null. It is an error if a field in this list has a non-empty value.
                                                                                    	// This may be used to include null fields in Patch requests.
                                                                                    	NullFields []string `json:"-"`
                                                                                    }

                                                                                      RequestSyncDevicesRequest: Request type for the `RequestSyncDevices` (#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices) call.

                                                                                      func (*RequestSyncDevicesRequest) MarshalJSON

                                                                                      func (s *RequestSyncDevicesRequest) MarshalJSON() ([]byte, error)

                                                                                      type RequestSyncDevicesResponse

                                                                                      type RequestSyncDevicesResponse struct {
                                                                                      	// ServerResponse contains the HTTP response code and headers from the
                                                                                      	// server.
                                                                                      	googleapi.ServerResponse `json:"-"`
                                                                                      }

                                                                                        RequestSyncDevicesResponse: 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.

                                                                                        type Service

                                                                                        type Service struct {
                                                                                        	BasePath  string // API endpoint base URL
                                                                                        	UserAgent string // optional additional User-Agent fragment
                                                                                        
                                                                                        	AgentUsers *AgentUsersService
                                                                                        
                                                                                        	Devices *DevicesService
                                                                                        	// contains filtered or unexported fields
                                                                                        }

                                                                                        func New

                                                                                        func New(client *http.Client) (*Service, error)

                                                                                          New creates a new Service. It uses the provided http.Client for requests.

                                                                                          Deprecated: please use NewService instead. To provide a custom HTTP client, use option.WithHTTPClient. If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.

                                                                                          func NewService

                                                                                          func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error)

                                                                                            NewService creates a new Service.

                                                                                            type StateAndNotificationPayload

                                                                                            type StateAndNotificationPayload struct {
                                                                                            	// Devices: The devices for updating state and sending notifications.
                                                                                            	Devices *ReportStateAndNotificationDevice `json:"devices,omitempty"`
                                                                                            
                                                                                            	// ForceSendFields is a list of field names (e.g. "Devices") to
                                                                                            	// unconditionally include in API requests. By default, fields with
                                                                                            	// empty values are omitted from API requests. However, any non-pointer,
                                                                                            	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                            	// server regardless of whether the field is empty or not. This may be
                                                                                            	// used to include empty fields in Patch requests.
                                                                                            	ForceSendFields []string `json:"-"`
                                                                                            
                                                                                            	// NullFields is a list of field names (e.g. "Devices") to include in
                                                                                            	// API requests with the JSON null value. By default, fields with empty
                                                                                            	// values are omitted from API requests. However, any field with an
                                                                                            	// empty value appearing in NullFields will be sent to the server as
                                                                                            	// null. It is an error if a field in this list has a non-empty value.
                                                                                            	// This may be used to include null fields in Patch requests.
                                                                                            	NullFields []string `json:"-"`
                                                                                            }

                                                                                              StateAndNotificationPayload: Payload containing the state and notification information for devices.

                                                                                              func (*StateAndNotificationPayload) MarshalJSON

                                                                                              func (s *StateAndNotificationPayload) MarshalJSON() ([]byte, error)

                                                                                              type SyncRequest

                                                                                              type SyncRequest struct {
                                                                                              	// AgentUserId: Required. Third-party user ID.
                                                                                              	AgentUserId string `json:"agentUserId,omitempty"`
                                                                                              
                                                                                              	// RequestId: Request ID used for debugging.
                                                                                              	RequestId string `json:"requestId,omitempty"`
                                                                                              
                                                                                              	// ForceSendFields is a list of field names (e.g. "AgentUserId") to
                                                                                              	// unconditionally include in API requests. By default, fields with
                                                                                              	// empty values are omitted from API requests. However, any non-pointer,
                                                                                              	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                              	// server regardless of whether the field is empty or not. This may be
                                                                                              	// used to include empty fields in Patch requests.
                                                                                              	ForceSendFields []string `json:"-"`
                                                                                              
                                                                                              	// NullFields is a list of field names (e.g. "AgentUserId") to include
                                                                                              	// in API requests with the JSON null value. By default, fields with
                                                                                              	// empty values are omitted from API requests. However, any field with
                                                                                              	// an empty value appearing in NullFields will be sent to the server as
                                                                                              	// null. It is an error if a field in this list has a non-empty value.
                                                                                              	// This may be used to include null fields in Patch requests.
                                                                                              	NullFields []string `json:"-"`
                                                                                              }

                                                                                                SyncRequest: Request type for the `Sync` (#google.home.graph.v1.HomeGraphApiService.Sync) call.

                                                                                                func (*SyncRequest) MarshalJSON

                                                                                                func (s *SyncRequest) MarshalJSON() ([]byte, error)

                                                                                                type SyncResponse

                                                                                                type SyncResponse struct {
                                                                                                	// Payload: Devices associated with the third-party user.
                                                                                                	Payload *SyncResponsePayload `json:"payload,omitempty"`
                                                                                                
                                                                                                	// RequestId: Request ID used for debugging. Copied from the request.
                                                                                                	RequestId string `json:"requestId,omitempty"`
                                                                                                
                                                                                                	// ServerResponse contains the HTTP response code and headers from the
                                                                                                	// server.
                                                                                                	googleapi.ServerResponse `json:"-"`
                                                                                                
                                                                                                	// ForceSendFields is a list of field names (e.g. "Payload") to
                                                                                                	// unconditionally include in API requests. By default, fields with
                                                                                                	// empty values are omitted from API requests. However, any non-pointer,
                                                                                                	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                                	// server regardless of whether the field is empty or not. This may be
                                                                                                	// used to include empty fields in Patch requests.
                                                                                                	ForceSendFields []string `json:"-"`
                                                                                                
                                                                                                	// NullFields is a list of field names (e.g. "Payload") to include in
                                                                                                	// API requests with the JSON null value. By default, fields with empty
                                                                                                	// values are omitted from API requests. However, any field with an
                                                                                                	// empty value appearing in NullFields will be sent to the server as
                                                                                                	// null. It is an error if a field in this list has a non-empty value.
                                                                                                	// This may be used to include null fields in Patch requests.
                                                                                                	NullFields []string `json:"-"`
                                                                                                }

                                                                                                  SyncResponse: Response type for the `Sync` (#google.home.graph.v1.HomeGraphApiService.Sync) call. This should follow the same format as the Google smart home `action.devices.SYNC` response (https://developers.google.com/assistant/smarthome/reference/intent/sync). # 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" } }] } } “`

                                                                                                  func (*SyncResponse) MarshalJSON

                                                                                                  func (s *SyncResponse) MarshalJSON() ([]byte, error)

                                                                                                  type SyncResponsePayload

                                                                                                  type SyncResponsePayload struct {
                                                                                                  	// AgentUserId: Third-party user ID
                                                                                                  	AgentUserId string `json:"agentUserId,omitempty"`
                                                                                                  
                                                                                                  	// Devices: Devices associated with the third-party user.
                                                                                                  	Devices []*Device `json:"devices,omitempty"`
                                                                                                  
                                                                                                  	// ForceSendFields is a list of field names (e.g. "AgentUserId") to
                                                                                                  	// unconditionally include in API requests. By default, fields with
                                                                                                  	// empty values are omitted from API requests. However, any non-pointer,
                                                                                                  	// non-interface field appearing in ForceSendFields will be sent to the
                                                                                                  	// server regardless of whether the field is empty or not. This may be
                                                                                                  	// used to include empty fields in Patch requests.
                                                                                                  	ForceSendFields []string `json:"-"`
                                                                                                  
                                                                                                  	// NullFields is a list of field names (e.g. "AgentUserId") to include
                                                                                                  	// in API requests with the JSON null value. By default, fields with
                                                                                                  	// empty values are omitted from API requests. However, any field with
                                                                                                  	// an empty value appearing in NullFields will be sent to the server as
                                                                                                  	// null. It is an error if a field in this list has a non-empty value.
                                                                                                  	// This may be used to include null fields in Patch requests.
                                                                                                  	NullFields []string `json:"-"`
                                                                                                  }

                                                                                                    SyncResponsePayload: Payload containing device information.

                                                                                                    func (*SyncResponsePayload) MarshalJSON

                                                                                                    func (s *SyncResponsePayload) MarshalJSON() ([]byte, error)