<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="smartdevicemanagement_v1.html">Smart Device Management API</a> . <a href="smartdevicemanagement_v1.enterprises.html">enterprises</a> . <a href="smartdevicemanagement_v1.enterprises.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#executeCommand">executeCommand(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Executes a command to device managed by the enterprise.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a device managed by the enterprise.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists devices managed by the enterprise.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="executeCommand">executeCommand(name, body=None, x__xgafv=None)</code>
  <pre>Executes a command to device managed by the enterprise.

Args:
  name: string, The name of the device requested. For example: &quot;enterprises/XYZ/devices/123&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SmartDeviceManagementService.ExecuteDeviceCommand
  &quot;command&quot;: &quot;A String&quot;, # The command name to execute, represented by the fully qualified protobuf message name.
  &quot;params&quot;: { # The command message to execute, represented as a Struct.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for SmartDeviceManagementService.ExecuteDeviceCommand
  &quot;results&quot;: { # The results of executing the command.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a device managed by the enterprise.

Args:
  name: string, The name of the device requested. For example: &quot;enterprises/XYZ/devices/123&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Device resource represents an instance of enterprise managed device in the property.
  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name of the device. For example: &quot;enterprises/XYZ/devices/123&quot;.
  &quot;parentRelations&quot;: [ # Assignee details of the device.
    { # Represents device relationships, for instance, structure/room to which the device is assigned to. For now this is only filled in the enterprise flow.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The custom name of the relation -- e.g., structure/room where the device is assigned to.
      &quot;parent&quot;: &quot;A String&quot;, # Output only. The name of the relation -- e.g., structure/room where the device is assigned to. For example: &quot;enterprises/XYZ/structures/ABC&quot; or &quot;enterprises/XYZ/structures/ABC/rooms/123&quot;
    },
  ],
  &quot;traits&quot;: { # Output only. Device traits.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;type&quot;: &quot;A String&quot;, # Output only. Type of the device for general display purposes. For example: &quot;THERMOSTAT&quot;. 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.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists devices managed by the enterprise.

Args:
  parent: string, The parent enterprise to list devices under. E.g. &quot;enterprises/XYZ&quot;. (required)
  filter: string, Optional filter to list devices. Filters can be done on: Device custom name (substring match): &#x27;customName=wing&#x27;
  pageSize: integer, Optional requested page size. Server may return fewer devices than requested. If unspecified, server will pick an appropriate default.
  pageToken: string, Optional token of the page to retrieve.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for SmartDeviceManagementService.ListDevices
  &quot;devices&quot;: [ # The list of devices.
    { # Device resource represents an instance of enterprise managed device in the property.
      &quot;name&quot;: &quot;A String&quot;, # Required. The resource name of the device. For example: &quot;enterprises/XYZ/devices/123&quot;.
      &quot;parentRelations&quot;: [ # Assignee details of the device.
        { # Represents device relationships, for instance, structure/room to which the device is assigned to. For now this is only filled in the enterprise flow.
          &quot;displayName&quot;: &quot;A String&quot;, # Output only. The custom name of the relation -- e.g., structure/room where the device is assigned to.
          &quot;parent&quot;: &quot;A String&quot;, # Output only. The name of the relation -- e.g., structure/room where the device is assigned to. For example: &quot;enterprises/XYZ/structures/ABC&quot; or &quot;enterprises/XYZ/structures/ABC/rooms/123&quot;
        },
      ],
      &quot;traits&quot;: { # Output only. Device traits.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;type&quot;: &quot;A String&quot;, # Output only. Type of the device for general display purposes. For example: &quot;THERMOSTAT&quot;. 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.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token to retrieve the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>