Smart Device Management API icon

Smart Device Management API

Allow select enterprise partners to access, control, and manage Google and Nest devices programmatically

COMMUNITYBEARER0 INSTALLS
API Docs
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"
      }
    }
  }
}