<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;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.
    &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;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;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;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;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;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
    &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
    &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;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.
  }

  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;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.
      &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;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;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;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;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;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
      &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
      &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;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.
    }</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;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.
      &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;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;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;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;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;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
      &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
      &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;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.
    }</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;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.
          &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;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;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;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;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;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
          &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
          &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;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.
        },
    ],
  }</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;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.
    &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;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;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;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;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;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
    &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
    &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;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.
  }

  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;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.
      &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;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;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;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;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;configurationId&quot;: &quot;A String&quot;, # Output only. The ID of the configuration. Assigned by the server.
      &quot;dpcExtras&quot;: &quot;A String&quot;, # The JSON-formatted EMM provisioning extras that are passed to the DPC.
      &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;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.
    }</pre>
</div>

</body></html>