<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="androidenterprise_v1.html">Google Play EMM API</a> . <a href="androidenterprise_v1.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="#forceReportUpload">forceReportUpload(enterpriseId, userId, deviceId, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads a report containing any changes in app states on the device since the last report was generated. You can call this method up to 3 times every 24 hours for a given device. If you exceed the quota, then the Google Play EMM API returns HTTP 429 Too Many Requests.</p>
<p class="toc_element">
  <code><a href="#get">get(enterpriseId, userId, deviceId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the details of a device.</p>
<p class="toc_element">
  <code><a href="#getState">getState(enterpriseId, userId, deviceId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves whether a device's access to Google services is enabled or disabled. The device state takes effect only if enforcing EMM policies on Android devices is enabled in the Google Admin Console. Otherwise, the device state is ignored and all devices are allowed access to Google services. This is only supported for Google-managed users.</p>
<p class="toc_element">
  <code><a href="#list">list(enterpriseId, userId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the IDs of all of a user's devices.</p>
<p class="toc_element">
  <code><a href="#setState">setState(enterpriseId, userId, deviceId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets whether a device's access to Google services is enabled or disabled. The device state takes effect only if enforcing EMM policies on Android devices is enabled in the Google Admin Console. Otherwise, the device state is ignored and all devices are allowed access to Google services. This is only supported for Google-managed users.</p>
<p class="toc_element">
  <code><a href="#update">update(enterpriseId, userId, deviceId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the device policy. To ensure the policy is properly enforced, you need to prevent unmanaged accounts from accessing Google Play by setting the allowed_accounts in the managed configuration for the Google Play package. See restrict accounts in Google Play. When provisioning a new device, you should set the device policy using this method before adding the managed Google Play Account to the device, otherwise the policy will not be applied for a short period of time after adding the account to the device.</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="forceReportUpload">forceReportUpload(enterpriseId, userId, deviceId, x__xgafv=None)</code>
  <pre>Uploads a report containing any changes in app states on the device since the last report was generated. You can call this method up to 3 times every 24 hours for a given device. If you exceed the quota, then the Google Play EMM API returns HTTP 429 Too Many Requests.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  deviceId: string, The ID of the device. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(enterpriseId, userId, deviceId, x__xgafv=None)</code>
  <pre>Retrieves the details of a device.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  deviceId: string, The ID of the device. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Devices resource represents a mobile device managed by the EMM and belonging to a specific enterprise user.
  &quot;androidId&quot;: &quot;A String&quot;, # The Google Play Services Android ID for the device encoded as a lowercase hex string. For example, &quot;123456789abcdef0&quot;.
  &quot;managementType&quot;: &quot;A String&quot;, # Identifies the extent to which the device is controlled by a managed Google Play EMM in various deployment configurations. Possible values include: - &quot;managedDevice&quot;, a device that has the EMM&#x27;s device policy controller (DPC) as the device owner. - &quot;managedProfile&quot;, a device that has a profile managed by the DPC (DPC is profile owner) in addition to a separate, personal profile that is unavailable to the DPC. - &quot;containerApp&quot;, no longer used (deprecated). - &quot;unmanagedProfile&quot;, a device that has been allowed (by the domain&#x27;s admin, using the Admin Console to enable the privilege) to use managed Google Play, but the profile is itself not owned by a DPC.
  &quot;policy&quot;: { # The device policy for a given managed device. # The policy enforced on the device.
    &quot;autoUpdatePolicy&quot;: &quot;A String&quot;, # Deprecated. Use autoUpdateMode instead. When autoUpdateMode is set to AUTO_UPDATE_POSTPONED or AUTO_UPDATE_HIGH_PRIORITY, this field has no effect. &quot;choiceToTheUser&quot; allows the device&#x27;s user to configure the app update policy. &quot;always&quot; enables auto updates. &quot;never&quot; disables auto updates. &quot;wifiOnly&quot; enables auto updates only when the device is connected to wifi.
    &quot;deviceReportPolicy&quot;: &quot;A String&quot;, # Whether the device reports app states to the EMM. The default value is &quot;deviceReportDisabled&quot;.
    &quot;maintenanceWindow&quot;: { # Maintenance window for managed Google Play Accounts. This allows Play store to update the apps on the foreground in the designated window. # The maintenance window defining when apps running in the foreground should be updated.
      &quot;durationMs&quot;: &quot;A String&quot;, # Duration of the maintenance window, in milliseconds. The duration must be between 30 minutes and 24 hours (inclusive).
      &quot;startTimeAfterMidnightMs&quot;: &quot;A String&quot;, # Start time of the maintenance window, in milliseconds after midnight on the device. Windows can span midnight.
    },
    &quot;productAvailabilityPolicy&quot;: &quot;A String&quot;, # The availability granted to the device for the specified products. &quot;all&quot; gives the device access to all products, regardless of approval status. &quot;all&quot; does not enable automatic visibility of &quot;alpha&quot; or &quot;beta&quot; tracks. &quot;whitelist&quot; grants the device access the products specified in productPolicy[]. Only products that are approved or products that were previously approved (products with revoked approval) by the enterprise can be whitelisted. If no value is provided, the availability set at the user level is applied by default.
    &quot;productPolicy&quot;: [ # The list of product policies. The productAvailabilityPolicy needs to be set to WHITELIST or ALL for the product policies to be applied.
      { # The policy for a product.
        &quot;autoInstallPolicy&quot;: { # The auto-install policy for the product.
          &quot;autoInstallConstraint&quot;: [ # The constraints for auto-installing the app. You can specify a maximum of one constraint.
            { # The auto-install constraint. Defines a set of restrictions for installation. At least one of the fields must be set.
              &quot;chargingStateConstraint&quot;: &quot;A String&quot;, # Charging state constraint.
              &quot;deviceIdleStateConstraint&quot;: &quot;A String&quot;, # Device idle state constraint.
              &quot;networkTypeConstraint&quot;: &quot;A String&quot;, # Network type constraint.
            },
          ],
          &quot;autoInstallMode&quot;: &quot;A String&quot;, # The auto-install mode. If unset defaults to &quot;doNotAutoInstall&quot;.
          &quot;autoInstallPriority&quot;: 42, # The priority of the install, as an unsigned integer. A lower number means higher priority.
          &quot;minimumVersionCode&quot;: 42, # The minimum version of the app. If a lower version of the app is installed, then the app will be auto-updated according to the auto-install constraints, instead of waiting for the regular auto-update. You can set a minimum version code for at most 20 apps per device.
        },
        &quot;autoUpdateMode&quot;: &quot;A String&quot;, # The auto-update mode for the product.
        &quot;managedConfiguration&quot;: { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user. # The managed configuration for the product.
          &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
            &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
            &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
              { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
                &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
                &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
              },
            ],
          },
          &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
          &quot;managedProperty&quot;: [ # The set of managed properties for this configuration.
            { # A managed property of a managed configuration. The property must match one of the properties in the app restrictions schema of the product. Exactly one of the value fields must be populated, and it must match the property&#x27;s type in the app restrictions schema.
              &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
              &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
              &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
                &quot;managedProperty&quot;: [ # The list of managed properties.
                  # Object with schema name: ManagedProperty
                ],
              },
              &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
                { # A bundle of managed properties.
                  &quot;managedProperty&quot;: [ # The list of managed properties.
                    # Object with schema name: ManagedProperty
                  ],
                },
              ],
              &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
              &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
              &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
        },
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product. For example, &quot;app:com.google.android.gm&quot;.
        &quot;trackIds&quot;: [ # Grants the device visibility to the specified product release track(s), identified by trackIds. The list of release tracks of a product can be obtained by calling Products.Get.
          &quot;A String&quot;,
        ],
        &quot;tracks&quot;: [ # Deprecated. Use trackIds instead.
          &quot;A String&quot;,
        ],
      },
    ],
  },
  &quot;report&quot;: { # Device report updated with the latest app states for managed apps on the device. # The device report updated with the latest app states.
    &quot;appState&quot;: [ # List of app states set by managed apps on the device. App states are defined by the app&#x27;s developers. This field will always be present.
      { # List of states set by the app.
        &quot;keyedAppState&quot;: [ # List of keyed app states. This field will always be present.
          { # Represents a keyed app state containing a key, timestamp, severity level, optional description, and optional data.
            &quot;data&quot;: &quot;A String&quot;, # Additional field intended for machine-readable data. For example, a number or JSON object. To prevent XSS, we recommend removing any HTML from the data before displaying it.
            &quot;key&quot;: &quot;A String&quot;, # Key indicating what the app is providing a state for. The content of the key is set by the app&#x27;s developer. To prevent XSS, we recommend removing any HTML from the key before displaying it. This field will always be present.
            &quot;message&quot;: &quot;A String&quot;, # Free-form, human-readable message describing the app state. For example, an error message. To prevent XSS, we recommend removing any HTML from the message before displaying it.
            &quot;severity&quot;: &quot;A String&quot;, # Severity of the app state. This field will always be present.
            &quot;stateTimestampMillis&quot;: &quot;A String&quot;, # Timestamp of when the app set the state in milliseconds since epoch. This field will always be present.
          },
        ],
        &quot;packageName&quot;: &quot;A String&quot;, # The package name of the app. This field will always be present.
      },
    ],
    &quot;lastUpdatedTimestampMillis&quot;: &quot;A String&quot;, # The timestamp of the last report update in milliseconds since epoch. This field will always be present.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="getState">getState(enterpriseId, userId, deviceId, x__xgafv=None)</code>
  <pre>Retrieves whether a device&#x27;s access to Google services is enabled or disabled. The device state takes effect only if enforcing EMM policies on Android devices is enabled in the Google Admin Console. Otherwise, the device state is ignored and all devices are allowed access to Google services. This is only supported for Google-managed users.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  deviceId: string, The ID of the device. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The state of a user&#x27;s device, as accessed by the getState and setState methods on device resources.
  &quot;accountState&quot;: &quot;A String&quot;, # The state of the Google account on the device. &quot;enabled&quot; indicates that the Google account on the device can be used to access Google services (including Google Play), while &quot;disabled&quot; means that it cannot. A new device is initially in the &quot;disabled&quot; state.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(enterpriseId, userId, x__xgafv=None)</code>
  <pre>Retrieves the IDs of all of a user&#x27;s devices.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;device&quot;: [ # A managed device.
    { # A Devices resource represents a mobile device managed by the EMM and belonging to a specific enterprise user.
      &quot;androidId&quot;: &quot;A String&quot;, # The Google Play Services Android ID for the device encoded as a lowercase hex string. For example, &quot;123456789abcdef0&quot;.
      &quot;managementType&quot;: &quot;A String&quot;, # Identifies the extent to which the device is controlled by a managed Google Play EMM in various deployment configurations. Possible values include: - &quot;managedDevice&quot;, a device that has the EMM&#x27;s device policy controller (DPC) as the device owner. - &quot;managedProfile&quot;, a device that has a profile managed by the DPC (DPC is profile owner) in addition to a separate, personal profile that is unavailable to the DPC. - &quot;containerApp&quot;, no longer used (deprecated). - &quot;unmanagedProfile&quot;, a device that has been allowed (by the domain&#x27;s admin, using the Admin Console to enable the privilege) to use managed Google Play, but the profile is itself not owned by a DPC.
      &quot;policy&quot;: { # The device policy for a given managed device. # The policy enforced on the device.
        &quot;autoUpdatePolicy&quot;: &quot;A String&quot;, # Deprecated. Use autoUpdateMode instead. When autoUpdateMode is set to AUTO_UPDATE_POSTPONED or AUTO_UPDATE_HIGH_PRIORITY, this field has no effect. &quot;choiceToTheUser&quot; allows the device&#x27;s user to configure the app update policy. &quot;always&quot; enables auto updates. &quot;never&quot; disables auto updates. &quot;wifiOnly&quot; enables auto updates only when the device is connected to wifi.
        &quot;deviceReportPolicy&quot;: &quot;A String&quot;, # Whether the device reports app states to the EMM. The default value is &quot;deviceReportDisabled&quot;.
        &quot;maintenanceWindow&quot;: { # Maintenance window for managed Google Play Accounts. This allows Play store to update the apps on the foreground in the designated window. # The maintenance window defining when apps running in the foreground should be updated.
          &quot;durationMs&quot;: &quot;A String&quot;, # Duration of the maintenance window, in milliseconds. The duration must be between 30 minutes and 24 hours (inclusive).
          &quot;startTimeAfterMidnightMs&quot;: &quot;A String&quot;, # Start time of the maintenance window, in milliseconds after midnight on the device. Windows can span midnight.
        },
        &quot;productAvailabilityPolicy&quot;: &quot;A String&quot;, # The availability granted to the device for the specified products. &quot;all&quot; gives the device access to all products, regardless of approval status. &quot;all&quot; does not enable automatic visibility of &quot;alpha&quot; or &quot;beta&quot; tracks. &quot;whitelist&quot; grants the device access the products specified in productPolicy[]. Only products that are approved or products that were previously approved (products with revoked approval) by the enterprise can be whitelisted. If no value is provided, the availability set at the user level is applied by default.
        &quot;productPolicy&quot;: [ # The list of product policies. The productAvailabilityPolicy needs to be set to WHITELIST or ALL for the product policies to be applied.
          { # The policy for a product.
            &quot;autoInstallPolicy&quot;: { # The auto-install policy for the product.
              &quot;autoInstallConstraint&quot;: [ # The constraints for auto-installing the app. You can specify a maximum of one constraint.
                { # The auto-install constraint. Defines a set of restrictions for installation. At least one of the fields must be set.
                  &quot;chargingStateConstraint&quot;: &quot;A String&quot;, # Charging state constraint.
                  &quot;deviceIdleStateConstraint&quot;: &quot;A String&quot;, # Device idle state constraint.
                  &quot;networkTypeConstraint&quot;: &quot;A String&quot;, # Network type constraint.
                },
              ],
              &quot;autoInstallMode&quot;: &quot;A String&quot;, # The auto-install mode. If unset defaults to &quot;doNotAutoInstall&quot;.
              &quot;autoInstallPriority&quot;: 42, # The priority of the install, as an unsigned integer. A lower number means higher priority.
              &quot;minimumVersionCode&quot;: 42, # The minimum version of the app. If a lower version of the app is installed, then the app will be auto-updated according to the auto-install constraints, instead of waiting for the regular auto-update. You can set a minimum version code for at most 20 apps per device.
            },
            &quot;autoUpdateMode&quot;: &quot;A String&quot;, # The auto-update mode for the product.
            &quot;managedConfiguration&quot;: { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user. # The managed configuration for the product.
              &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
                &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
                &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
                  { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
                    &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
                    &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
                  },
                ],
              },
              &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
              &quot;managedProperty&quot;: [ # The set of managed properties for this configuration.
                { # A managed property of a managed configuration. The property must match one of the properties in the app restrictions schema of the product. Exactly one of the value fields must be populated, and it must match the property&#x27;s type in the app restrictions schema.
                  &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
                  &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
                  &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
                    &quot;managedProperty&quot;: [ # The list of managed properties.
                      # Object with schema name: ManagedProperty
                    ],
                  },
                  &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
                    { # A bundle of managed properties.
                      &quot;managedProperty&quot;: [ # The list of managed properties.
                        # Object with schema name: ManagedProperty
                      ],
                    },
                  ],
                  &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
                  &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
                  &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
            },
            &quot;productId&quot;: &quot;A String&quot;, # The ID of the product. For example, &quot;app:com.google.android.gm&quot;.
            &quot;trackIds&quot;: [ # Grants the device visibility to the specified product release track(s), identified by trackIds. The list of release tracks of a product can be obtained by calling Products.Get.
              &quot;A String&quot;,
            ],
            &quot;tracks&quot;: [ # Deprecated. Use trackIds instead.
              &quot;A String&quot;,
            ],
          },
        ],
      },
      &quot;report&quot;: { # Device report updated with the latest app states for managed apps on the device. # The device report updated with the latest app states.
        &quot;appState&quot;: [ # List of app states set by managed apps on the device. App states are defined by the app&#x27;s developers. This field will always be present.
          { # List of states set by the app.
            &quot;keyedAppState&quot;: [ # List of keyed app states. This field will always be present.
              { # Represents a keyed app state containing a key, timestamp, severity level, optional description, and optional data.
                &quot;data&quot;: &quot;A String&quot;, # Additional field intended for machine-readable data. For example, a number or JSON object. To prevent XSS, we recommend removing any HTML from the data before displaying it.
                &quot;key&quot;: &quot;A String&quot;, # Key indicating what the app is providing a state for. The content of the key is set by the app&#x27;s developer. To prevent XSS, we recommend removing any HTML from the key before displaying it. This field will always be present.
                &quot;message&quot;: &quot;A String&quot;, # Free-form, human-readable message describing the app state. For example, an error message. To prevent XSS, we recommend removing any HTML from the message before displaying it.
                &quot;severity&quot;: &quot;A String&quot;, # Severity of the app state. This field will always be present.
                &quot;stateTimestampMillis&quot;: &quot;A String&quot;, # Timestamp of when the app set the state in milliseconds since epoch. This field will always be present.
              },
            ],
            &quot;packageName&quot;: &quot;A String&quot;, # The package name of the app. This field will always be present.
          },
        ],
        &quot;lastUpdatedTimestampMillis&quot;: &quot;A String&quot;, # The timestamp of the last report update in milliseconds since epoch. This field will always be present.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="setState">setState(enterpriseId, userId, deviceId, body=None, x__xgafv=None)</code>
  <pre>Sets whether a device&#x27;s access to Google services is enabled or disabled. The device state takes effect only if enforcing EMM policies on Android devices is enabled in the Google Admin Console. Otherwise, the device state is ignored and all devices are allowed access to Google services. This is only supported for Google-managed users.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  deviceId: string, The ID of the device. (required)
  body: object, The request body.
    The object takes the form of:

{ # The state of a user&#x27;s device, as accessed by the getState and setState methods on device resources.
  &quot;accountState&quot;: &quot;A String&quot;, # The state of the Google account on the device. &quot;enabled&quot; indicates that the Google account on the device can be used to access Google services (including Google Play), while &quot;disabled&quot; means that it cannot. A new device is initially in the &quot;disabled&quot; state.
}

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

Returns:
  An object of the form:

    { # The state of a user&#x27;s device, as accessed by the getState and setState methods on device resources.
  &quot;accountState&quot;: &quot;A String&quot;, # The state of the Google account on the device. &quot;enabled&quot; indicates that the Google account on the device can be used to access Google services (including Google Play), while &quot;disabled&quot; means that it cannot. A new device is initially in the &quot;disabled&quot; state.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(enterpriseId, userId, deviceId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the device policy. To ensure the policy is properly enforced, you need to prevent unmanaged accounts from accessing Google Play by setting the allowed_accounts in the managed configuration for the Google Play package. See restrict accounts in Google Play. When provisioning a new device, you should set the device policy using this method before adding the managed Google Play Account to the device, otherwise the policy will not be applied for a short period of time after adding the account to the device.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  deviceId: string, The ID of the device. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Devices resource represents a mobile device managed by the EMM and belonging to a specific enterprise user.
  &quot;androidId&quot;: &quot;A String&quot;, # The Google Play Services Android ID for the device encoded as a lowercase hex string. For example, &quot;123456789abcdef0&quot;.
  &quot;managementType&quot;: &quot;A String&quot;, # Identifies the extent to which the device is controlled by a managed Google Play EMM in various deployment configurations. Possible values include: - &quot;managedDevice&quot;, a device that has the EMM&#x27;s device policy controller (DPC) as the device owner. - &quot;managedProfile&quot;, a device that has a profile managed by the DPC (DPC is profile owner) in addition to a separate, personal profile that is unavailable to the DPC. - &quot;containerApp&quot;, no longer used (deprecated). - &quot;unmanagedProfile&quot;, a device that has been allowed (by the domain&#x27;s admin, using the Admin Console to enable the privilege) to use managed Google Play, but the profile is itself not owned by a DPC.
  &quot;policy&quot;: { # The device policy for a given managed device. # The policy enforced on the device.
    &quot;autoUpdatePolicy&quot;: &quot;A String&quot;, # Deprecated. Use autoUpdateMode instead. When autoUpdateMode is set to AUTO_UPDATE_POSTPONED or AUTO_UPDATE_HIGH_PRIORITY, this field has no effect. &quot;choiceToTheUser&quot; allows the device&#x27;s user to configure the app update policy. &quot;always&quot; enables auto updates. &quot;never&quot; disables auto updates. &quot;wifiOnly&quot; enables auto updates only when the device is connected to wifi.
    &quot;deviceReportPolicy&quot;: &quot;A String&quot;, # Whether the device reports app states to the EMM. The default value is &quot;deviceReportDisabled&quot;.
    &quot;maintenanceWindow&quot;: { # Maintenance window for managed Google Play Accounts. This allows Play store to update the apps on the foreground in the designated window. # The maintenance window defining when apps running in the foreground should be updated.
      &quot;durationMs&quot;: &quot;A String&quot;, # Duration of the maintenance window, in milliseconds. The duration must be between 30 minutes and 24 hours (inclusive).
      &quot;startTimeAfterMidnightMs&quot;: &quot;A String&quot;, # Start time of the maintenance window, in milliseconds after midnight on the device. Windows can span midnight.
    },
    &quot;productAvailabilityPolicy&quot;: &quot;A String&quot;, # The availability granted to the device for the specified products. &quot;all&quot; gives the device access to all products, regardless of approval status. &quot;all&quot; does not enable automatic visibility of &quot;alpha&quot; or &quot;beta&quot; tracks. &quot;whitelist&quot; grants the device access the products specified in productPolicy[]. Only products that are approved or products that were previously approved (products with revoked approval) by the enterprise can be whitelisted. If no value is provided, the availability set at the user level is applied by default.
    &quot;productPolicy&quot;: [ # The list of product policies. The productAvailabilityPolicy needs to be set to WHITELIST or ALL for the product policies to be applied.
      { # The policy for a product.
        &quot;autoInstallPolicy&quot;: { # The auto-install policy for the product.
          &quot;autoInstallConstraint&quot;: [ # The constraints for auto-installing the app. You can specify a maximum of one constraint.
            { # The auto-install constraint. Defines a set of restrictions for installation. At least one of the fields must be set.
              &quot;chargingStateConstraint&quot;: &quot;A String&quot;, # Charging state constraint.
              &quot;deviceIdleStateConstraint&quot;: &quot;A String&quot;, # Device idle state constraint.
              &quot;networkTypeConstraint&quot;: &quot;A String&quot;, # Network type constraint.
            },
          ],
          &quot;autoInstallMode&quot;: &quot;A String&quot;, # The auto-install mode. If unset defaults to &quot;doNotAutoInstall&quot;.
          &quot;autoInstallPriority&quot;: 42, # The priority of the install, as an unsigned integer. A lower number means higher priority.
          &quot;minimumVersionCode&quot;: 42, # The minimum version of the app. If a lower version of the app is installed, then the app will be auto-updated according to the auto-install constraints, instead of waiting for the regular auto-update. You can set a minimum version code for at most 20 apps per device.
        },
        &quot;autoUpdateMode&quot;: &quot;A String&quot;, # The auto-update mode for the product.
        &quot;managedConfiguration&quot;: { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user. # The managed configuration for the product.
          &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
            &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
            &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
              { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
                &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
                &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
              },
            ],
          },
          &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
          &quot;managedProperty&quot;: [ # The set of managed properties for this configuration.
            { # A managed property of a managed configuration. The property must match one of the properties in the app restrictions schema of the product. Exactly one of the value fields must be populated, and it must match the property&#x27;s type in the app restrictions schema.
              &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
              &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
              &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
                &quot;managedProperty&quot;: [ # The list of managed properties.
                  # Object with schema name: ManagedProperty
                ],
              },
              &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
                { # A bundle of managed properties.
                  &quot;managedProperty&quot;: [ # The list of managed properties.
                    # Object with schema name: ManagedProperty
                  ],
                },
              ],
              &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
              &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
              &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
        },
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product. For example, &quot;app:com.google.android.gm&quot;.
        &quot;trackIds&quot;: [ # Grants the device visibility to the specified product release track(s), identified by trackIds. The list of release tracks of a product can be obtained by calling Products.Get.
          &quot;A String&quot;,
        ],
        &quot;tracks&quot;: [ # Deprecated. Use trackIds instead.
          &quot;A String&quot;,
        ],
      },
    ],
  },
  &quot;report&quot;: { # Device report updated with the latest app states for managed apps on the device. # The device report updated with the latest app states.
    &quot;appState&quot;: [ # List of app states set by managed apps on the device. App states are defined by the app&#x27;s developers. This field will always be present.
      { # List of states set by the app.
        &quot;keyedAppState&quot;: [ # List of keyed app states. This field will always be present.
          { # Represents a keyed app state containing a key, timestamp, severity level, optional description, and optional data.
            &quot;data&quot;: &quot;A String&quot;, # Additional field intended for machine-readable data. For example, a number or JSON object. To prevent XSS, we recommend removing any HTML from the data before displaying it.
            &quot;key&quot;: &quot;A String&quot;, # Key indicating what the app is providing a state for. The content of the key is set by the app&#x27;s developer. To prevent XSS, we recommend removing any HTML from the key before displaying it. This field will always be present.
            &quot;message&quot;: &quot;A String&quot;, # Free-form, human-readable message describing the app state. For example, an error message. To prevent XSS, we recommend removing any HTML from the message before displaying it.
            &quot;severity&quot;: &quot;A String&quot;, # Severity of the app state. This field will always be present.
            &quot;stateTimestampMillis&quot;: &quot;A String&quot;, # Timestamp of when the app set the state in milliseconds since epoch. This field will always be present.
          },
        ],
        &quot;packageName&quot;: &quot;A String&quot;, # The package name of the app. This field will always be present.
      },
    ],
    &quot;lastUpdatedTimestampMillis&quot;: &quot;A String&quot;, # The timestamp of the last report update in milliseconds since epoch. This field will always be present.
  },
}

  updateMask: string, Mask that identifies which fields to update. If not set, all modifiable fields will be modified. When set in a query parameter, this field should be specified as updateMask=&lt;field1&gt;,&lt;field2&gt;,...
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Devices resource represents a mobile device managed by the EMM and belonging to a specific enterprise user.
  &quot;androidId&quot;: &quot;A String&quot;, # The Google Play Services Android ID for the device encoded as a lowercase hex string. For example, &quot;123456789abcdef0&quot;.
  &quot;managementType&quot;: &quot;A String&quot;, # Identifies the extent to which the device is controlled by a managed Google Play EMM in various deployment configurations. Possible values include: - &quot;managedDevice&quot;, a device that has the EMM&#x27;s device policy controller (DPC) as the device owner. - &quot;managedProfile&quot;, a device that has a profile managed by the DPC (DPC is profile owner) in addition to a separate, personal profile that is unavailable to the DPC. - &quot;containerApp&quot;, no longer used (deprecated). - &quot;unmanagedProfile&quot;, a device that has been allowed (by the domain&#x27;s admin, using the Admin Console to enable the privilege) to use managed Google Play, but the profile is itself not owned by a DPC.
  &quot;policy&quot;: { # The device policy for a given managed device. # The policy enforced on the device.
    &quot;autoUpdatePolicy&quot;: &quot;A String&quot;, # Deprecated. Use autoUpdateMode instead. When autoUpdateMode is set to AUTO_UPDATE_POSTPONED or AUTO_UPDATE_HIGH_PRIORITY, this field has no effect. &quot;choiceToTheUser&quot; allows the device&#x27;s user to configure the app update policy. &quot;always&quot; enables auto updates. &quot;never&quot; disables auto updates. &quot;wifiOnly&quot; enables auto updates only when the device is connected to wifi.
    &quot;deviceReportPolicy&quot;: &quot;A String&quot;, # Whether the device reports app states to the EMM. The default value is &quot;deviceReportDisabled&quot;.
    &quot;maintenanceWindow&quot;: { # Maintenance window for managed Google Play Accounts. This allows Play store to update the apps on the foreground in the designated window. # The maintenance window defining when apps running in the foreground should be updated.
      &quot;durationMs&quot;: &quot;A String&quot;, # Duration of the maintenance window, in milliseconds. The duration must be between 30 minutes and 24 hours (inclusive).
      &quot;startTimeAfterMidnightMs&quot;: &quot;A String&quot;, # Start time of the maintenance window, in milliseconds after midnight on the device. Windows can span midnight.
    },
    &quot;productAvailabilityPolicy&quot;: &quot;A String&quot;, # The availability granted to the device for the specified products. &quot;all&quot; gives the device access to all products, regardless of approval status. &quot;all&quot; does not enable automatic visibility of &quot;alpha&quot; or &quot;beta&quot; tracks. &quot;whitelist&quot; grants the device access the products specified in productPolicy[]. Only products that are approved or products that were previously approved (products with revoked approval) by the enterprise can be whitelisted. If no value is provided, the availability set at the user level is applied by default.
    &quot;productPolicy&quot;: [ # The list of product policies. The productAvailabilityPolicy needs to be set to WHITELIST or ALL for the product policies to be applied.
      { # The policy for a product.
        &quot;autoInstallPolicy&quot;: { # The auto-install policy for the product.
          &quot;autoInstallConstraint&quot;: [ # The constraints for auto-installing the app. You can specify a maximum of one constraint.
            { # The auto-install constraint. Defines a set of restrictions for installation. At least one of the fields must be set.
              &quot;chargingStateConstraint&quot;: &quot;A String&quot;, # Charging state constraint.
              &quot;deviceIdleStateConstraint&quot;: &quot;A String&quot;, # Device idle state constraint.
              &quot;networkTypeConstraint&quot;: &quot;A String&quot;, # Network type constraint.
            },
          ],
          &quot;autoInstallMode&quot;: &quot;A String&quot;, # The auto-install mode. If unset defaults to &quot;doNotAutoInstall&quot;.
          &quot;autoInstallPriority&quot;: 42, # The priority of the install, as an unsigned integer. A lower number means higher priority.
          &quot;minimumVersionCode&quot;: 42, # The minimum version of the app. If a lower version of the app is installed, then the app will be auto-updated according to the auto-install constraints, instead of waiting for the regular auto-update. You can set a minimum version code for at most 20 apps per device.
        },
        &quot;autoUpdateMode&quot;: &quot;A String&quot;, # The auto-update mode for the product.
        &quot;managedConfiguration&quot;: { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user. # The managed configuration for the product.
          &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
            &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
            &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
              { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
                &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
                &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
              },
            ],
          },
          &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
          &quot;managedProperty&quot;: [ # The set of managed properties for this configuration.
            { # A managed property of a managed configuration. The property must match one of the properties in the app restrictions schema of the product. Exactly one of the value fields must be populated, and it must match the property&#x27;s type in the app restrictions schema.
              &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
              &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
              &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
                &quot;managedProperty&quot;: [ # The list of managed properties.
                  # Object with schema name: ManagedProperty
                ],
              },
              &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
                { # A bundle of managed properties.
                  &quot;managedProperty&quot;: [ # The list of managed properties.
                    # Object with schema name: ManagedProperty
                  ],
                },
              ],
              &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
              &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
              &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
        },
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product. For example, &quot;app:com.google.android.gm&quot;.
        &quot;trackIds&quot;: [ # Grants the device visibility to the specified product release track(s), identified by trackIds. The list of release tracks of a product can be obtained by calling Products.Get.
          &quot;A String&quot;,
        ],
        &quot;tracks&quot;: [ # Deprecated. Use trackIds instead.
          &quot;A String&quot;,
        ],
      },
    ],
  },
  &quot;report&quot;: { # Device report updated with the latest app states for managed apps on the device. # The device report updated with the latest app states.
    &quot;appState&quot;: [ # List of app states set by managed apps on the device. App states are defined by the app&#x27;s developers. This field will always be present.
      { # List of states set by the app.
        &quot;keyedAppState&quot;: [ # List of keyed app states. This field will always be present.
          { # Represents a keyed app state containing a key, timestamp, severity level, optional description, and optional data.
            &quot;data&quot;: &quot;A String&quot;, # Additional field intended for machine-readable data. For example, a number or JSON object. To prevent XSS, we recommend removing any HTML from the data before displaying it.
            &quot;key&quot;: &quot;A String&quot;, # Key indicating what the app is providing a state for. The content of the key is set by the app&#x27;s developer. To prevent XSS, we recommend removing any HTML from the key before displaying it. This field will always be present.
            &quot;message&quot;: &quot;A String&quot;, # Free-form, human-readable message describing the app state. For example, an error message. To prevent XSS, we recommend removing any HTML from the message before displaying it.
            &quot;severity&quot;: &quot;A String&quot;, # Severity of the app state. This field will always be present.
            &quot;stateTimestampMillis&quot;: &quot;A String&quot;, # Timestamp of when the app set the state in milliseconds since epoch. This field will always be present.
          },
        ],
        &quot;packageName&quot;: &quot;A String&quot;, # The package name of the app. This field will always be present.
      },
    ],
    &quot;lastUpdatedTimestampMillis&quot;: &quot;A String&quot;, # The timestamp of the last report update in milliseconds since epoch. This field will always be present.
  },
}</pre>
</div>

</body></html>