<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="androiddeviceprovisioning_v1.html">Android Device Provisioning Partner API</a> . <a href="androiddeviceprovisioning_v1.customers.html">customers</a> . <a href="androiddeviceprovisioning_v1.customers.configurations.html">configurations</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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new configuration. Once created, a customer can apply the configuration to devices.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an unused configuration. The API call fails if the customer has devices with the configuration applied.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details of a configuration.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Lists a customer's configurations.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a configuration's field values.</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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new configuration. Once created, a customer can apply the configuration to devices.

Args:
  parent: string, Required. The customer that manages the configuration. An API resource name in the format `customers/[CUSTOMER_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A configuration collects the provisioning options for Android devices. Each configuration combines the following: * The EMM device policy controller (DPC) installed on the devices. * EMM policies enforced on the devices. * Metadata displayed on the device to help users during setup. Customers can add as many configurations as they need. However, zero-touch enrollment works best when a customer sets a default configuration that&#x27;s applied to any new devices the organization purchases.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the organization. Zero-touch enrollment shows this organization name to device users during device provisioning.
  &quot;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
  &quot;configurationName&quot;: &quot;A String&quot;, # Required. A short name that describes the configuration&#x27;s purpose. For example, _Sales team_ or _Temporary employees_. The zero-touch enrollment portal displays this name to IT admins.
  &quot;contactEmail&quot;: &quot;A String&quot;, # Required. The email address that device users can contact to get help. Zero-touch enrollment shows this email address to device users before device provisioning. The value is validated on input.
  &quot;contactPhone&quot;: &quot;A String&quot;, # Required. The telephone number that device users can call, using another device, to get help. Zero-touch enrollment shows this number to device users before device provisioning. Accepts numerals, spaces, the plus sign, hyphens, and parentheses.
  &quot;customMessage&quot;: &quot;A String&quot;, # A message, containing one or two sentences, to help device users get help or give them more details about what’s happening to their device. Zero-touch enrollment shows this message before the device is provisioned.
  &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
  &quot;dpcResourcePath&quot;: &quot;A String&quot;, # Required. The resource name of the selected DPC (device policy controller) in the format `customers/[CUSTOMER_ID]/dpcs/*`. To list the supported DPCs, call `customers.dpcs.list`.
  &quot;isDefault&quot;: True or False, # Required. Whether this is the default configuration that zero-touch enrollment applies to any new devices the organization purchases in the future. Only one customer configuration can be the default. Setting this value to `true`, changes the previous default configuration&#x27;s `isDefault` value to `false`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server.
}

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

Returns:
  An object of the form:

    { # A configuration collects the provisioning options for Android devices. Each configuration combines the following: * The EMM device policy controller (DPC) installed on the devices. * EMM policies enforced on the devices. * Metadata displayed on the device to help users during setup. Customers can add as many configurations as they need. However, zero-touch enrollment works best when a customer sets a default configuration that&#x27;s applied to any new devices the organization purchases.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the organization. Zero-touch enrollment shows this organization name to device users during device provisioning.
  &quot;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
  &quot;configurationName&quot;: &quot;A String&quot;, # Required. A short name that describes the configuration&#x27;s purpose. For example, _Sales team_ or _Temporary employees_. The zero-touch enrollment portal displays this name to IT admins.
  &quot;contactEmail&quot;: &quot;A String&quot;, # Required. The email address that device users can contact to get help. Zero-touch enrollment shows this email address to device users before device provisioning. The value is validated on input.
  &quot;contactPhone&quot;: &quot;A String&quot;, # Required. The telephone number that device users can call, using another device, to get help. Zero-touch enrollment shows this number to device users before device provisioning. Accepts numerals, spaces, the plus sign, hyphens, and parentheses.
  &quot;customMessage&quot;: &quot;A String&quot;, # A message, containing one or two sentences, to help device users get help or give them more details about what’s happening to their device. Zero-touch enrollment shows this message before the device is provisioned.
  &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
  &quot;dpcResourcePath&quot;: &quot;A String&quot;, # Required. The resource name of the selected DPC (device policy controller) in the format `customers/[CUSTOMER_ID]/dpcs/*`. To list the supported DPCs, call `customers.dpcs.list`.
  &quot;isDefault&quot;: True or False, # Required. Whether this is the default configuration that zero-touch enrollment applies to any new devices the organization purchases in the future. Only one customer configuration can be the default. Setting this value to `true`, changes the previous default configuration&#x27;s `isDefault` value to `false`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an unused configuration. The API call fails if the customer has devices with the configuration applied.

Args:
  name: string, Required. The configuration to delete. An API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. If the configuration is applied to any devices, the API call fails. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the details of a configuration.

Args:
  name: string, Required. The configuration to get. An API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A configuration collects the provisioning options for Android devices. Each configuration combines the following: * The EMM device policy controller (DPC) installed on the devices. * EMM policies enforced on the devices. * Metadata displayed on the device to help users during setup. Customers can add as many configurations as they need. However, zero-touch enrollment works best when a customer sets a default configuration that&#x27;s applied to any new devices the organization purchases.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the organization. Zero-touch enrollment shows this organization name to device users during device provisioning.
  &quot;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
  &quot;configurationName&quot;: &quot;A String&quot;, # Required. A short name that describes the configuration&#x27;s purpose. For example, _Sales team_ or _Temporary employees_. The zero-touch enrollment portal displays this name to IT admins.
  &quot;contactEmail&quot;: &quot;A String&quot;, # Required. The email address that device users can contact to get help. Zero-touch enrollment shows this email address to device users before device provisioning. The value is validated on input.
  &quot;contactPhone&quot;: &quot;A String&quot;, # Required. The telephone number that device users can call, using another device, to get help. Zero-touch enrollment shows this number to device users before device provisioning. Accepts numerals, spaces, the plus sign, hyphens, and parentheses.
  &quot;customMessage&quot;: &quot;A String&quot;, # A message, containing one or two sentences, to help device users get help or give them more details about what’s happening to their device. Zero-touch enrollment shows this message before the device is provisioned.
  &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
  &quot;dpcResourcePath&quot;: &quot;A String&quot;, # Required. The resource name of the selected DPC (device policy controller) in the format `customers/[CUSTOMER_ID]/dpcs/*`. To list the supported DPCs, call `customers.dpcs.list`.
  &quot;isDefault&quot;: True or False, # Required. Whether this is the default configuration that zero-touch enrollment applies to any new devices the organization purchases in the future. Only one customer configuration can be the default. Setting this value to `true`, changes the previous default configuration&#x27;s `isDefault` value to `false`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, x__xgafv=None)</code>
  <pre>Lists a customer&#x27;s configurations.

Args:
  parent: string, Required. The customer that manages the listed configurations. An API resource name in the format `customers/[CUSTOMER_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message of customer&#x27;s listing configuration.
  &quot;configurations&quot;: [ # The configurations.
    { # A configuration collects the provisioning options for Android devices. Each configuration combines the following: * The EMM device policy controller (DPC) installed on the devices. * EMM policies enforced on the devices. * Metadata displayed on the device to help users during setup. Customers can add as many configurations as they need. However, zero-touch enrollment works best when a customer sets a default configuration that&#x27;s applied to any new devices the organization purchases.
      &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the organization. Zero-touch enrollment shows this organization name to device users during device provisioning.
      &quot;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
      &quot;configurationName&quot;: &quot;A String&quot;, # Required. A short name that describes the configuration&#x27;s purpose. For example, _Sales team_ or _Temporary employees_. The zero-touch enrollment portal displays this name to IT admins.
      &quot;contactEmail&quot;: &quot;A String&quot;, # Required. The email address that device users can contact to get help. Zero-touch enrollment shows this email address to device users before device provisioning. The value is validated on input.
      &quot;contactPhone&quot;: &quot;A String&quot;, # Required. The telephone number that device users can call, using another device, to get help. Zero-touch enrollment shows this number to device users before device provisioning. Accepts numerals, spaces, the plus sign, hyphens, and parentheses.
      &quot;customMessage&quot;: &quot;A String&quot;, # A message, containing one or two sentences, to help device users get help or give them more details about what’s happening to their device. Zero-touch enrollment shows this message before the device is provisioned.
      &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
      &quot;dpcResourcePath&quot;: &quot;A String&quot;, # Required. The resource name of the selected DPC (device policy controller) in the format `customers/[CUSTOMER_ID]/dpcs/*`. To list the supported DPCs, call `customers.dpcs.list`.
      &quot;isDefault&quot;: True or False, # Required. Whether this is the default configuration that zero-touch enrollment applies to any new devices the organization purchases in the future. Only one customer configuration can be the default. Setting this value to `true`, changes the previous default configuration&#x27;s `isDefault` value to `false`.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a configuration&#x27;s field values.

Args:
  name: string, Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server. (required)
  body: object, The request body.
    The object takes the form of:

{ # A configuration collects the provisioning options for Android devices. Each configuration combines the following: * The EMM device policy controller (DPC) installed on the devices. * EMM policies enforced on the devices. * Metadata displayed on the device to help users during setup. Customers can add as many configurations as they need. However, zero-touch enrollment works best when a customer sets a default configuration that&#x27;s applied to any new devices the organization purchases.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the organization. Zero-touch enrollment shows this organization name to device users during device provisioning.
  &quot;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
  &quot;configurationName&quot;: &quot;A String&quot;, # Required. A short name that describes the configuration&#x27;s purpose. For example, _Sales team_ or _Temporary employees_. The zero-touch enrollment portal displays this name to IT admins.
  &quot;contactEmail&quot;: &quot;A String&quot;, # Required. The email address that device users can contact to get help. Zero-touch enrollment shows this email address to device users before device provisioning. The value is validated on input.
  &quot;contactPhone&quot;: &quot;A String&quot;, # Required. The telephone number that device users can call, using another device, to get help. Zero-touch enrollment shows this number to device users before device provisioning. Accepts numerals, spaces, the plus sign, hyphens, and parentheses.
  &quot;customMessage&quot;: &quot;A String&quot;, # A message, containing one or two sentences, to help device users get help or give them more details about what’s happening to their device. Zero-touch enrollment shows this message before the device is provisioned.
  &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
  &quot;dpcResourcePath&quot;: &quot;A String&quot;, # Required. The resource name of the selected DPC (device policy controller) in the format `customers/[CUSTOMER_ID]/dpcs/*`. To list the supported DPCs, call `customers.dpcs.list`.
  &quot;isDefault&quot;: True or False, # Required. Whether this is the default configuration that zero-touch enrollment applies to any new devices the organization purchases in the future. Only one customer configuration can be the default. Setting this value to `true`, changes the previous default configuration&#x27;s `isDefault` value to `false`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server.
}

  updateMask: string, Required. The field mask applied to the target `Configuration` before updating the fields. To learn more about using field masks, read [FieldMask](/protocol-buffers/docs/reference/google.protobuf#fieldmask) in the Protocol Buffers documentation.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A configuration collects the provisioning options for Android devices. Each configuration combines the following: * The EMM device policy controller (DPC) installed on the devices. * EMM policies enforced on the devices. * Metadata displayed on the device to help users during setup. Customers can add as many configurations as they need. However, zero-touch enrollment works best when a customer sets a default configuration that&#x27;s applied to any new devices the organization purchases.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the organization. Zero-touch enrollment shows this organization name to device users during device provisioning.
  &quot;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
  &quot;configurationName&quot;: &quot;A String&quot;, # Required. A short name that describes the configuration&#x27;s purpose. For example, _Sales team_ or _Temporary employees_. The zero-touch enrollment portal displays this name to IT admins.
  &quot;contactEmail&quot;: &quot;A String&quot;, # Required. The email address that device users can contact to get help. Zero-touch enrollment shows this email address to device users before device provisioning. The value is validated on input.
  &quot;contactPhone&quot;: &quot;A String&quot;, # Required. The telephone number that device users can call, using another device, to get help. Zero-touch enrollment shows this number to device users before device provisioning. Accepts numerals, spaces, the plus sign, hyphens, and parentheses.
  &quot;customMessage&quot;: &quot;A String&quot;, # A message, containing one or two sentences, to help device users get help or give them more details about what’s happening to their device. Zero-touch enrollment shows this message before the device is provisioned.
  &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
  &quot;dpcResourcePath&quot;: &quot;A String&quot;, # Required. The resource name of the selected DPC (device policy controller) in the format `customers/[CUSTOMER_ID]/dpcs/*`. To list the supported DPCs, call `customers.dpcs.list`.
  &quot;isDefault&quot;: True or False, # Required. Whether this is the default configuration that zero-touch enrollment applies to any new devices the organization purchases in the future. Only one customer configuration can be the default. Setting this value to `true`, changes the previous default configuration&#x27;s `isDefault` value to `false`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`. Assigned by the server.
}</pre>
</div>

</body></html>