| { |
| "basePath": "", |
| "baseUrl": "https://homegraph.googleapis.com/", |
| "batchPath": "batch", |
| "canonicalName": "Home Graph Service", |
| "description": "", |
| "discoveryVersion": "v1", |
| "documentationLink": "https://developers.google.com/actions/smarthome/create-app#request-sync", |
| "fullyEncodeReservedExpansion": true, |
| "icons": { |
| "x16": "http://www.google.com/images/icons/product/search-16.gif", |
| "x32": "http://www.google.com/images/icons/product/search-32.gif" |
| }, |
| "id": "homegraph:v1", |
| "kind": "discovery#restDescription", |
| "mtlsRootUrl": "https://homegraph.mtls.googleapis.com/", |
| "name": "homegraph", |
| "ownerDomain": "google.com", |
| "ownerName": "Google", |
| "parameters": { |
| "$.xgafv": { |
| "description": "V1 error format.", |
| "enum": [ |
| "1", |
| "2" |
| ], |
| "enumDescriptions": [ |
| "v1 error format", |
| "v2 error format" |
| ], |
| "location": "query", |
| "type": "string" |
| }, |
| "access_token": { |
| "description": "OAuth access token.", |
| "location": "query", |
| "type": "string" |
| }, |
| "alt": { |
| "default": "json", |
| "description": "Data format for response.", |
| "enum": [ |
| "json", |
| "media", |
| "proto" |
| ], |
| "enumDescriptions": [ |
| "Responses with Content-Type of application/json", |
| "Media download with context-dependent Content-Type", |
| "Responses with Content-Type of application/x-protobuf" |
| ], |
| "location": "query", |
| "type": "string" |
| }, |
| "callback": { |
| "description": "JSONP", |
| "location": "query", |
| "type": "string" |
| }, |
| "fields": { |
| "description": "Selector specifying which fields to include in a partial response.", |
| "location": "query", |
| "type": "string" |
| }, |
| "key": { |
| "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", |
| "location": "query", |
| "type": "string" |
| }, |
| "oauth_token": { |
| "description": "OAuth 2.0 token for the current user.", |
| "location": "query", |
| "type": "string" |
| }, |
| "prettyPrint": { |
| "default": "true", |
| "description": "Returns response with indentations and line breaks.", |
| "location": "query", |
| "type": "boolean" |
| }, |
| "quotaUser": { |
| "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", |
| "location": "query", |
| "type": "string" |
| }, |
| "uploadType": { |
| "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", |
| "location": "query", |
| "type": "string" |
| }, |
| "upload_protocol": { |
| "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", |
| "location": "query", |
| "type": "string" |
| } |
| }, |
| "protocol": "rest", |
| "resources": { |
| "agentUsers": { |
| "methods": { |
| "delete": { |
| "description": "Unlinks the given third-party user from your smart home Action.\nAll data related to this user will be deleted.\n\nFor more details on how users link their accounts, see\n[fulfillment and\nauthentication](https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication).\n\nThe third-party user's identity is passed in via the `agent_user_id`\n(see DeleteAgentUserRequest).\nThis request must be authorized using service account credentials from your\nActions console project.", |
| "flatPath": "v1/agentUsers/{agentUsersId}", |
| "httpMethod": "DELETE", |
| "id": "homegraph.agentUsers.delete", |
| "parameterOrder": [ |
| "agentUserId" |
| ], |
| "parameters": { |
| "agentUserId": { |
| "description": "Required. Third-party user ID.", |
| "location": "path", |
| "pattern": "^agentUsers/.*$", |
| "required": true, |
| "type": "string" |
| }, |
| "requestId": { |
| "description": "Request ID used for debugging.", |
| "location": "query", |
| "type": "string" |
| } |
| }, |
| "path": "v1/{+agentUserId}", |
| "response": { |
| "$ref": "Empty" |
| } |
| } |
| } |
| }, |
| "devices": { |
| "methods": { |
| "query": { |
| "description": "Gets the current states in Home Graph for the given set of the third-party\nuser's devices.\n\nThe third-party user's identity is passed in via the `agent_user_id`\n(see QueryRequest).\nThis request must be authorized using service account credentials from your\nActions console project.", |
| "flatPath": "v1/devices:query", |
| "httpMethod": "POST", |
| "id": "homegraph.devices.query", |
| "parameterOrder": [], |
| "parameters": {}, |
| "path": "v1/devices:query", |
| "request": { |
| "$ref": "QueryRequest" |
| }, |
| "response": { |
| "$ref": "QueryResponse" |
| } |
| }, |
| "reportStateAndNotification": { |
| "description": "Reports device state and optionally sends device notifications.\nCalled by your smart home Action when the state of a third-party device\nchanges or you need to send a notification about the device.\nSee [Implement Report\nState](https://developers.google.com/assistant/smarthome/develop/report-state)\nfor more information.\n\nThis method updates the device state according to its declared\n[traits](https://developers.google.com/assistant/smarthome/concepts/devices-traits).\nPublishing a new state value outside of these traits will result in an\n`INVALID_ARGUMENT` error response.\n\nThe third-party user's identity is passed in via the `agent_user_id`\n(see ReportStateAndNotificationRequest).\nThis request must be authorized using service account credentials from your\nActions console project.", |
| "flatPath": "v1/devices:reportStateAndNotification", |
| "httpMethod": "POST", |
| "id": "homegraph.devices.reportStateAndNotification", |
| "parameterOrder": [], |
| "parameters": {}, |
| "path": "v1/devices:reportStateAndNotification", |
| "request": { |
| "$ref": "ReportStateAndNotificationRequest" |
| }, |
| "response": { |
| "$ref": "ReportStateAndNotificationResponse" |
| } |
| }, |
| "requestSync": { |
| "description": "Requests Google to send an `action.devices.SYNC`\n[intent](https://developers.google.com/assistant/smarthome/reference/intent/sync)\nto your smart home Action to update device metadata for the given user.\n\n\nThe third-party user's identity is passed via the `agent_user_id`\n(see RequestSyncDevicesRequest).\nThis request must be authorized using service account credentials from your\nActions console project.", |
| "flatPath": "v1/devices:requestSync", |
| "httpMethod": "POST", |
| "id": "homegraph.devices.requestSync", |
| "parameterOrder": [], |
| "parameters": {}, |
| "path": "v1/devices:requestSync", |
| "request": { |
| "$ref": "RequestSyncDevicesRequest" |
| }, |
| "response": { |
| "$ref": "RequestSyncDevicesResponse" |
| } |
| }, |
| "sync": { |
| "description": "Gets all the devices associated with the given third-party user.\n\nThe third-party user's identity is passed in via the `agent_user_id`\n(see SyncRequest).\nThis request must be authorized using service account credentials from your\nActions console project.", |
| "flatPath": "v1/devices:sync", |
| "httpMethod": "POST", |
| "id": "homegraph.devices.sync", |
| "parameterOrder": [], |
| "parameters": {}, |
| "path": "v1/devices:sync", |
| "request": { |
| "$ref": "SyncRequest" |
| }, |
| "response": { |
| "$ref": "SyncResponse" |
| } |
| } |
| } |
| } |
| }, |
| "revision": "20200417", |
| "rootUrl": "https://homegraph.googleapis.com/", |
| "schemas": { |
| "AgentDeviceId": { |
| "description": "Third-party device ID for one device.", |
| "id": "AgentDeviceId", |
| "properties": { |
| "id": { |
| "description": "Third-party device ID.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "AgentOtherDeviceId": { |
| "description": "Alternate third-party device ID.", |
| "id": "AgentOtherDeviceId", |
| "properties": { |
| "agentId": { |
| "description": "Project ID for your smart home Action.", |
| "type": "string" |
| }, |
| "deviceId": { |
| "description": "Unique third-party device ID.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "Device": { |
| "description": "Third-party device definition.", |
| "id": "Device", |
| "properties": { |
| "attributes": { |
| "additionalProperties": { |
| "description": "Properties of the object.", |
| "type": "any" |
| }, |
| "description": "Attributes for the traits supported by the device.", |
| "type": "object" |
| }, |
| "customData": { |
| "additionalProperties": { |
| "description": "Properties of the object.", |
| "type": "any" |
| }, |
| "description": "Custom device attributes stored in Home Graph and provided to your\nsmart home Action in each\n[QUERY](https://developers.google.com/assistant/smarthome/reference/intent/query)\nand\n[EXECUTE](https://developers.google.com/assistant/smarthome/reference/intent/execute)\nintent.", |
| "type": "object" |
| }, |
| "deviceInfo": { |
| "$ref": "DeviceInfo", |
| "description": "Device manufacturer, model, hardware version, and software version." |
| }, |
| "id": { |
| "description": "Third-party device ID.", |
| "type": "string" |
| }, |
| "name": { |
| "$ref": "DeviceNames", |
| "description": "Names given to this device by your smart home Action." |
| }, |
| "notificationSupportedByAgent": { |
| "description": "Indicates whether your smart home Action will report notifications\nto Google for this device via\nReportStateAndNotification.\n\nIf your smart home Action enables users to control device notifications,\nyou should update this field and call\nRequestSyncDevices.", |
| "type": "boolean" |
| }, |
| "otherDeviceIds": { |
| "description": "Alternate IDs associated with this device.\nThis is used to identify cloud synced devices enabled for [local\nfulfillment](https://developers.google.com/assistant/smarthome/concepts/local).", |
| "items": { |
| "$ref": "AgentOtherDeviceId" |
| }, |
| "type": "array" |
| }, |
| "roomHint": { |
| "description": "Suggested name for the room where this device is installed.\nGoogle attempts to use this value during user setup.", |
| "type": "string" |
| }, |
| "structureHint": { |
| "description": "Suggested name for the structure where this device is installed.\nGoogle attempts to use this value during user setup.", |
| "type": "string" |
| }, |
| "traits": { |
| "description": "Traits supported by the device.\nSee [device\ntraits](https://developers.google.com/assistant/smarthome/traits).", |
| "items": { |
| "type": "string" |
| }, |
| "type": "array" |
| }, |
| "type": { |
| "description": "Hardware type of the device.\nSee [device\ntypes](https://developers.google.com/assistant/smarthome/guides).", |
| "type": "string" |
| }, |
| "willReportState": { |
| "description": "Indicates whether your smart home Action will report state of this device\nto Google via\nReportStateAndNotification.", |
| "type": "boolean" |
| } |
| }, |
| "type": "object" |
| }, |
| "DeviceInfo": { |
| "description": "Device information.", |
| "id": "DeviceInfo", |
| "properties": { |
| "hwVersion": { |
| "description": "Device hardware version.", |
| "type": "string" |
| }, |
| "manufacturer": { |
| "description": "Device manufacturer.", |
| "type": "string" |
| }, |
| "model": { |
| "description": "Device model.", |
| "type": "string" |
| }, |
| "swVersion": { |
| "description": "Device software version.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "DeviceNames": { |
| "description": "Identifiers used to describe the device.", |
| "id": "DeviceNames", |
| "properties": { |
| "defaultNames": { |
| "description": "List of names provided by the manufacturer rather than the user, such as\nserial numbers, SKUs, etc.", |
| "items": { |
| "type": "string" |
| }, |
| "type": "array" |
| }, |
| "name": { |
| "description": "Primary name of the device, generally provided by the user.", |
| "type": "string" |
| }, |
| "nicknames": { |
| "description": "Additional names provided by the user for the device.", |
| "items": { |
| "type": "string" |
| }, |
| "type": "array" |
| } |
| }, |
| "type": "object" |
| }, |
| "Empty": { |
| "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", |
| "id": "Empty", |
| "properties": {}, |
| "type": "object" |
| }, |
| "QueryRequest": { |
| "description": "Request type for the\n[`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call.", |
| "id": "QueryRequest", |
| "properties": { |
| "agentUserId": { |
| "description": "Required. Third-party user ID.", |
| "type": "string" |
| }, |
| "inputs": { |
| "description": "Required. Inputs containing third-party device IDs for which to\nget the device states.", |
| "items": { |
| "$ref": "QueryRequestInput" |
| }, |
| "type": "array" |
| }, |
| "requestId": { |
| "description": "Request ID used for debugging.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "QueryRequestInput": { |
| "description": "Device ID inputs to QueryRequest.", |
| "id": "QueryRequestInput", |
| "properties": { |
| "payload": { |
| "$ref": "QueryRequestPayload", |
| "description": "Payload containing third-party device IDs." |
| } |
| }, |
| "type": "object" |
| }, |
| "QueryRequestPayload": { |
| "description": "Payload containing device IDs.", |
| "id": "QueryRequestPayload", |
| "properties": { |
| "devices": { |
| "description": "Third-party device IDs for which to get the device states.", |
| "items": { |
| "$ref": "AgentDeviceId" |
| }, |
| "type": "array" |
| } |
| }, |
| "type": "object" |
| }, |
| "QueryResponse": { |
| "description": "Response type for the\n[`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call.\nThis should follow the same format as the Google smart home\n`action.devices.QUERY`\n[response](https://developers.google.com/assistant/smarthome/reference/intent/query).\n# Example\n\n```json\n{\n \"requestId\": \"ff36a3cc-ec34-11e6-b1a0-64510650abcf\",\n \"payload\": {\n \"devices\": {\n \"123\": {\n \"on\": true,\n \"online\": true\n },\n \"456\": {\n \"on\": true,\n \"online\": true,\n \"brightness\": 80,\n \"color\": {\n \"name\": \"cerulean\",\n \"spectrumRGB\": 31655\n }\n }\n }\n }\n}\n```", |
| "id": "QueryResponse", |
| "properties": { |
| "payload": { |
| "$ref": "QueryResponsePayload", |
| "description": "Device states for the devices given in the request." |
| }, |
| "requestId": { |
| "description": "Request ID used for debugging. Copied from the request.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "QueryResponsePayload": { |
| "description": "Payload containing device states information.", |
| "id": "QueryResponsePayload", |
| "properties": { |
| "devices": { |
| "additionalProperties": { |
| "additionalProperties": { |
| "description": "Properties of the object.", |
| "type": "any" |
| }, |
| "type": "object" |
| }, |
| "description": "States of the devices. Map of third-party device ID to struct of device\nstates.", |
| "type": "object" |
| } |
| }, |
| "type": "object" |
| }, |
| "ReportStateAndNotificationDevice": { |
| "description": "The states and notifications specific to a device.", |
| "id": "ReportStateAndNotificationDevice", |
| "properties": { |
| "notifications": { |
| "additionalProperties": { |
| "description": "Properties of the object.", |
| "type": "any" |
| }, |
| "description": "Notifications metadata for devices. See the **Device NOTIFICATIONS**\nsection of the individual trait [reference\nguides](https://developers.google.com/assistant/smarthome/traits).", |
| "type": "object" |
| }, |
| "states": { |
| "additionalProperties": { |
| "description": "Properties of the object.", |
| "type": "any" |
| }, |
| "description": "States of devices to update. See the **Device STATES** section\nof the individual trait [reference\nguides](https://developers.google.com/assistant/smarthome/traits).", |
| "type": "object" |
| } |
| }, |
| "type": "object" |
| }, |
| "ReportStateAndNotificationRequest": { |
| "description": "Request type for the\n[`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification)\ncall. It may include states, notifications, or both. States and notifications\nare defined per `device_id` (for example, \"123\" and \"456\" in the following\nexample).\n# Example\n\n```json\n{\n \"requestId\": \"ff36a3cc-ec34-11e6-b1a0-64510650abcf\",\n \"agentUserId\": \"1234\",\n \"payload\": {\n \"devices\": {\n \"states\": {\n \"123\": {\n \"on\": true\n },\n \"456\": {\n \"on\": true,\n \"brightness\": 10\n }\n },\n }\n }\n}\n```", |
| "id": "ReportStateAndNotificationRequest", |
| "properties": { |
| "agentUserId": { |
| "description": "Required. Third-party user ID.", |
| "type": "string" |
| }, |
| "eventId": { |
| "description": "Unique identifier per event (for example, a doorbell press).", |
| "type": "string" |
| }, |
| "followUpToken": { |
| "description": "Token to maintain state in the follow up notification response.", |
| "type": "string" |
| }, |
| "payload": { |
| "$ref": "StateAndNotificationPayload", |
| "description": "Required. State of devices to update and notification metadata for devices." |
| }, |
| "requestId": { |
| "description": "Request ID used for debugging.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "ReportStateAndNotificationResponse": { |
| "description": "Response type for the\n[`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification)\ncall.", |
| "id": "ReportStateAndNotificationResponse", |
| "properties": { |
| "requestId": { |
| "description": "Request ID copied from ReportStateAndNotificationRequest.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "RequestSyncDevicesRequest": { |
| "description": "Request type for the\n[`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices)\ncall.", |
| "id": "RequestSyncDevicesRequest", |
| "properties": { |
| "agentUserId": { |
| "description": "Required. Third-party user ID.", |
| "type": "string" |
| }, |
| "async": { |
| "description": "Optional. If set, the request will be added to a queue and a response will\nbe returned immediately. This enables concurrent requests for the given\n`agent_user_id`, but the caller will not receive any error responses.", |
| "type": "boolean" |
| } |
| }, |
| "type": "object" |
| }, |
| "RequestSyncDevicesResponse": { |
| "description": "Response type for the\n[`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices)\ncall.\n\nIntentionally empty upon success. An HTTP response code is returned\nwith more details upon failure.", |
| "id": "RequestSyncDevicesResponse", |
| "properties": {}, |
| "type": "object" |
| }, |
| "StateAndNotificationPayload": { |
| "description": "Payload containing the state and notification information for devices.", |
| "id": "StateAndNotificationPayload", |
| "properties": { |
| "devices": { |
| "$ref": "ReportStateAndNotificationDevice", |
| "description": "The devices for updating state and sending notifications." |
| } |
| }, |
| "type": "object" |
| }, |
| "SyncRequest": { |
| "description": "Request type for the [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync)\ncall.", |
| "id": "SyncRequest", |
| "properties": { |
| "agentUserId": { |
| "description": "Required. Third-party user ID.", |
| "type": "string" |
| }, |
| "requestId": { |
| "description": "Request ID used for debugging.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "SyncResponse": { |
| "description": "Response type for the\n[`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) call.\nThis should follow the same format as the Google smart home\n`action.devices.SYNC`\n[response](https://developers.google.com/assistant/smarthome/reference/intent/sync).\n# Example\n\n```json\n{\n \"requestId\": \"ff36a3cc-ec34-11e6-b1a0-64510650abcf\",\n \"payload\": {\n \"agentUserId\": \"1836.15267389\",\n \"devices\": [{\n \"id\": \"123\",\n \"type\": \"action.devices.types.OUTLET\",\n \"traits\": [\n \"action.devices.traits.OnOff\"\n ],\n \"name\": {\n \"defaultNames\": [\"My Outlet 1234\"],\n \"name\": \"Night light\",\n \"nicknames\": [\"wall plug\"]\n },\n \"willReportState\": false,\n \"deviceInfo\": {\n \"manufacturer\": \"lights-out-inc\",\n \"model\": \"hs1234\",\n \"hwVersion\": \"3.2\",\n \"swVersion\": \"11.4\"\n },\n \"customData\": {\n \"fooValue\": 74,\n \"barValue\": true,\n \"bazValue\": \"foo\"\n }\n }]\n }\n}\n```", |
| "id": "SyncResponse", |
| "properties": { |
| "payload": { |
| "$ref": "SyncResponsePayload", |
| "description": "Devices associated with the third-party user." |
| }, |
| "requestId": { |
| "description": "Request ID used for debugging. Copied from the request.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "SyncResponsePayload": { |
| "description": "Payload containing device information.", |
| "id": "SyncResponsePayload", |
| "properties": { |
| "agentUserId": { |
| "description": "Third-party user ID", |
| "type": "string" |
| }, |
| "devices": { |
| "description": "Devices associated with the third-party user.", |
| "items": { |
| "$ref": "Device" |
| }, |
| "type": "array" |
| } |
| }, |
| "type": "object" |
| } |
| }, |
| "servicePath": "", |
| "title": "HomeGraph API", |
| "version": "v1", |
| "version_module": true |
| } |