Smart Device Management API
Allow select enterprise partners to access, control, and manage Google and Nest devices programmatically
COMMUNITYBEARER0 INSTALLS
OpenAPI Specificationv3.0
{
"openapi": "3.0.0",
"servers": [
{
"url": "https://smartdevicemanagement.googleapis.com/"
}
],
"info": {
"contact": {
"name": "Google",
"url": "https://google.com",
"x-twitter": "youtube"
},
"description": "Allow select enterprise partners to access, control, and manage Google and Nest devices programmatically.",
"license": {
"name": "Creative Commons Attribution 3.0",
"url": "http://creativecommons.org/licenses/by/3.0/"
},
"termsOfService": "https://developers.google.com/terms/",
"title": "Smart Device Management API",
"version": "v1",
"x-apisguru-categories": [
"analytics",
"media"
],
"x-logo": {
"url": "https://api.apis.guru/v2/cache/logo/https_upload.wikimedia.org_wikipedia_commons_e_e1_YouTube_play_buttom_icon_%282013-2017%29.svg"
},
"x-origin": [
{
"format": "google",
"url": "https://smartdevicemanagement.googleapis.com/$discovery/rest?version=v1",
"version": "v1"
}
],
"x-providerName": "googleapis.com",
"x-serviceName": "smartdevicemanagement"
},
"externalDocs": {
"url": "https://developers.google.com/nest/device-access"
},
"tags": [
{
"name": "enterprises"
}
],
"paths": {
"/v1/{name}": {
"get": {
"description": "Gets a room managed by the enterprise.",
"operationId": "smartdevicemanagement.enterprises.structures.rooms.get",
"parameters": [
{
"description": "The name of the room requested. For example: \"enterprises/XYZ/structures/ABC/rooms/123\".",
"in": "path",
"name": "name",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1Room"
}
}
},
"description": "Successful response"
}
},
"security": [
{
"Oauth2": [
"https://www.googleapis.com/auth/sdm.service"
],
"Oauth2c": [
"https://www.googleapis.com/auth/sdm.service"
]
}
],
"tags": [
"enterprises"
]
},
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
]
},
"/v1/{name}:executeCommand": {
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
],
"post": {
"description": "Executes a command to device managed by the enterprise.",
"operationId": "smartdevicemanagement.enterprises.devices.executeCommand",
"parameters": [
{
"description": "The name of the device requested. For example: \"enterprises/XYZ/devices/123\"",
"in": "path",
"name": "name",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1ExecuteDeviceCommandRequest"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1ExecuteDeviceCommandResponse"
}
}
},
"description": "Successful response"
}
},
"security": [
{
"Oauth2": [
"https://www.googleapis.com/auth/sdm.service"
],
"Oauth2c": [
"https://www.googleapis.com/auth/sdm.service"
]
}
],
"tags": [
"enterprises"
]
}
},
"/v1/{parent}/devices": {
"get": {
"description": "Lists devices managed by the enterprise.",
"operationId": "smartdevicemanagement.enterprises.devices.list",
"parameters": [
{
"description": "The parent enterprise to list devices under. E.g. \"enterprises/XYZ\".",
"in": "path",
"name": "parent",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Optional filter to list devices. Filters can be done on: Device custom name (substring match): 'customName=wing'",
"in": "query",
"name": "filter",
"schema": {
"type": "string"
}
},
{
"description": "Optional requested page size. Server may return fewer devices than requested. If unspecified, server will pick an appropriate default.",
"in": "query",
"name": "pageSize",
"schema": {
"type": "integer"
}
},
{
"description": "Optional token of the page to retrieve.",
"in": "query",
"name": "pageToken",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1ListDevicesResponse"
}
}
},
"description": "Successful response"
}
},
"security": [
{
"Oauth2": [
"https://www.googleapis.com/auth/sdm.service"
],
"Oauth2c": [
"https://www.googleapis.com/auth/sdm.service"
]
}
],
"tags": [
"enterprises"
]
},
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
]
},
"/v1/{parent}/rooms": {
"get": {
"description": "Lists rooms managed by the enterprise.",
"operationId": "smartdevicemanagement.enterprises.structures.rooms.list",
"parameters": [
{
"description": "The parent resource name of the rooms requested. For example: \"enterprises/XYZ/structures/ABC\".",
"in": "path",
"name": "parent",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Requested page size. Server may return fewer rooms than requested. If unspecified, server will pick an appropriate default.",
"in": "query",
"name": "pageSize",
"schema": {
"type": "integer"
}
},
{
"description": "The token of the page to retrieve.",
"in": "query",
"name": "pageToken",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1ListRoomsResponse"
}
}
},
"description": "Successful response"
}
},
"security": [
{
"Oauth2": [
"https://www.googleapis.com/auth/sdm.service"
],
"Oauth2c": [
"https://www.googleapis.com/auth/sdm.service"
]
}
],
"tags": [
"enterprises"
]
},
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
]
},
"/v1/{parent}/structures": {
"get": {
"description": "Lists structures managed by the enterprise.",
"operationId": "smartdevicemanagement.enterprises.structures.list",
"parameters": [
{
"description": "The parent enterprise to list structures under. E.g. \"enterprises/XYZ\".",
"in": "path",
"name": "parent",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Optional filter to list structures.",
"in": "query",
"name": "filter",
"schema": {
"type": "string"
}
},
{
"description": "Requested page size. Server may return fewer structures than requested. If unspecified, server will pick an appropriate default.",
"in": "query",
"name": "pageSize",
"schema": {
"type": "integer"
}
},
{
"description": "The token of the page to retrieve.",
"in": "query",
"name": "pageToken",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1ListStructuresResponse"
}
}
},
"description": "Successful response"
}
},
"security": [
{
"Oauth2": [
"https://www.googleapis.com/auth/sdm.service"
],
"Oauth2c": [
"https://www.googleapis.com/auth/sdm.service"
]
}
],
"tags": [
"enterprises"
]
},
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
]
}
},
"components": {
"parameters": {
"_.xgafv": {
"description": "V1 error format.",
"in": "query",
"name": "$.xgafv",
"schema": {
"enum": [
"1",
"2"
],
"type": "string"
}
},
"access_token": {
"description": "OAuth access token.",
"in": "query",
"name": "access_token",
"schema": {
"type": "string"
}
},
"alt": {
"description": "Data format for response.",
"in": "query",
"name": "alt",
"schema": {
"enum": [
"json",
"media",
"proto"
],
"type": "string"
}
},
"callback": {
"description": "JSONP",
"in": "query",
"name": "callback",
"schema": {
"type": "string"
}
},
"fields": {
"description": "Selector specifying which fields to include in a partial response.",
"in": "query",
"name": "fields",
"schema": {
"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.",
"in": "query",
"name": "key",
"schema": {
"type": "string"
}
},
"oauth_token": {
"description": "OAuth 2.0 token for the current user.",
"in": "query",
"name": "oauth_token",
"schema": {
"type": "string"
}
},
"prettyPrint": {
"description": "Returns response with indentations and line breaks.",
"in": "query",
"name": "prettyPrint",
"schema": {
"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.",
"in": "query",
"name": "quotaUser",
"schema": {
"type": "string"
}
},
"uploadType": {
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
"in": "query",
"name": "uploadType",
"schema": {
"type": "string"
}
},
"upload_protocol": {
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
"in": "query",
"name": "upload_protocol",
"schema": {
"type": "string"
}
}
},
"schemas": {
"GoogleHomeEnterpriseSdmV1Device": {
"description": "Device resource represents an instance of enterprise managed device in the property.",
"properties": {
"name": {
"description": "Required. The resource name of the device. For example: \"enterprises/XYZ/devices/123\".",
"type": "string"
},
"parentRelations": {
"description": "Assignee details of the device.",
"items": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1ParentRelation"
},
"type": "array"
},
"traits": {
"additionalProperties": {
"description": "Properties of the object."
},
"description": "Output only. Device traits.",
"readOnly": true,
"type": "object"
},
"type": {
"description": "Output only. Type of the device for general display purposes. For example: \"THERMOSTAT\". The device type should not be used to deduce or infer functionality of the actual device it is assigned to. Instead, use the returned traits for the device.",
"readOnly": true,
"type": "string"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1ExecuteDeviceCommandRequest": {
"description": "Request message for SmartDeviceManagementService.ExecuteDeviceCommand",
"properties": {
"command": {
"description": "The command name to execute, represented by the fully qualified protobuf message name.",
"type": "string"
},
"params": {
"additionalProperties": {
"description": "Properties of the object."
},
"description": "The command message to execute, represented as a Struct.",
"type": "object"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1ExecuteDeviceCommandResponse": {
"description": "Response message for SmartDeviceManagementService.ExecuteDeviceCommand",
"properties": {
"results": {
"additionalProperties": {
"description": "Properties of the object."
},
"description": "The results of executing the command.",
"type": "object"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1ListDevicesResponse": {
"description": "Response message for SmartDeviceManagementService.ListDevices",
"properties": {
"devices": {
"description": "The list of devices.",
"items": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1Device"
},
"type": "array"
},
"nextPageToken": {
"description": "The pagination token to retrieve the next page of results.",
"type": "string"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1ListRoomsResponse": {
"description": "Response message for SmartDeviceManagementService.ListRooms",
"properties": {
"nextPageToken": {
"description": "The pagination token to retrieve the next page of results. If this field is omitted, there are no subsequent pages.",
"type": "string"
},
"rooms": {
"description": "The list of rooms.",
"items": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1Room"
},
"type": "array"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1ListStructuresResponse": {
"description": "Response message for SmartDeviceManagementService.ListStructures",
"properties": {
"nextPageToken": {
"description": "The pagination token to retrieve the next page of results. If this field is omitted, there are no subsequent pages.",
"type": "string"
},
"structures": {
"description": "The list of structures.",
"items": {
"$ref": "#/components/schemas/GoogleHomeEnterpriseSdmV1Structure"
},
"type": "array"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1ParentRelation": {
"description": "Represents device relationships, for instance, structure/room to which the device is assigned to.",
"properties": {
"displayName": {
"description": "Output only. The custom name of the relation -- e.g., structure/room where the device is assigned to.",
"readOnly": true,
"type": "string"
},
"parent": {
"description": "Output only. The name of the relation -- e.g., structure/room where the device is assigned to. For example: \"enterprises/XYZ/structures/ABC\" or \"enterprises/XYZ/structures/ABC/rooms/123\"",
"readOnly": true,
"type": "string"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1Room": {
"description": "Room resource represents an instance of sub-space within a structure such as rooms in a hotel suite or rental apartment.",
"properties": {
"name": {
"description": "Output only. The resource name of the room. For example: \"enterprises/XYZ/structures/ABC/rooms/123\".",
"readOnly": true,
"type": "string"
},
"traits": {
"additionalProperties": {
"description": "Properties of the object."
},
"description": "Room traits.",
"type": "object"
}
},
"type": "object"
},
"GoogleHomeEnterpriseSdmV1Structure": {
"description": "Structure resource represents an instance of enterprise managed home or hotel room.",
"properties": {
"name": {
"description": "Output only. The resource name of the structure. For example: \"enterprises/XYZ/structures/ABC\".",
"readOnly": true,
"type": "string"
},
"traits": {
"additionalProperties": {
"description": "Properties of the object."
},
"description": "Structure traits.",
"type": "object"
}
},
"type": "object"
}
},
"securitySchemes": {
"Oauth2": {
"description": "Oauth 2.0 implicit authentication",
"flows": {
"implicit": {
"authorizationUrl": "https://accounts.google.com/o/oauth2/auth",
"scopes": {
"https://www.googleapis.com/auth/sdm.service": "See and/or control the devices that you selected"
}
}
},
"type": "oauth2"
},
"Oauth2c": {
"description": "Oauth 2.0 authorizationCode authentication",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://accounts.google.com/o/oauth2/auth",
"scopes": {
"https://www.googleapis.com/auth/sdm.service": "See and/or control the devices that you selected"
},
"tokenUrl": "https://accounts.google.com/o/oauth2/token"
}
},
"type": "oauth2"
}
}
}
}