<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="androidmanagement_v1.html">Android Management API</a> . <a href="androidmanagement_v1.enterprises.html">enterprises</a> . <a href="androidmanagement_v1.enterprises.migrationTokens.html">migrationTokens</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 migration token, to migrate an existing device from being managed by the EMM's Device Policy Controller (DPC) to being managed by the Android Management API. See the guide (https://developers.google.com/android/management/dpc-migration) for more details.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a migration token.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists migration tokens.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a migration token, to migrate an existing device from being managed by the EMM&#x27;s Device Policy Controller (DPC) to being managed by the Android Management API. See the guide (https://developers.google.com/android/management/dpc-migration) for more details.

Args:
  parent: string, Required. The enterprise in which this migration token is created. This must be the same enterprise which already manages the device in the Play EMM API. Format: enterprises/{enterprise} (required)
  body: object, The request body.
    The object takes the form of:

{ # A token to initiate the migration of a device from being managed by a third-party DPC to being managed by Android Management API. A migration token is valid only for a single device. See the guide (https://developers.google.com/android/management/dpc-migration) for more details.
  &quot;additionalData&quot;: &quot;A String&quot;, # Immutable. Optional EMM-specified additional data. Once the device is migrated this will be populated in the migrationAdditionalData field of the Device resource. This must be at most 1024 characters.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this migration token was created.
  &quot;device&quot;: &quot;A String&quot;, # Output only. Once this migration token is used to migrate a device, the name of the resulting Device resource will be populated here, in the form enterprises/{enterprise}/devices/{device}.
  &quot;deviceId&quot;: &quot;A String&quot;, # Required. Immutable. The id of the device, as in the Play EMM API. This corresponds to the deviceId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
  &quot;expireTime&quot;: &quot;A String&quot;, # Immutable. The time when this migration token expires. This can be at most seven days from the time of creation. The migration token is deleted seven days after it expires.
  &quot;managementMode&quot;: &quot;A String&quot;, # Required. Immutable. The management mode of the device or profile being migrated.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the migration token, which is generated by the server during creation, in the form enterprises/{enterprise}/migrationTokens/{migration_token}.
  &quot;policy&quot;: &quot;A String&quot;, # Required. Immutable. The name of the policy initially applied to the enrolled device, in the form enterprises/{enterprise}/policies/{policy}.
  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time that this migration token is valid for. This is input-only, and for returning a migration token the server will populate the expireTime field. This can be at most seven days. The default is seven days.
  &quot;userId&quot;: &quot;A String&quot;, # Required. Immutable. The user id of the Managed Google Play account on the device, as in the Play EMM API. This corresponds to the userId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
  &quot;value&quot;: &quot;A String&quot;, # Output only. The value of the migration token.
}

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

Returns:
  An object of the form:

    { # A token to initiate the migration of a device from being managed by a third-party DPC to being managed by Android Management API. A migration token is valid only for a single device. See the guide (https://developers.google.com/android/management/dpc-migration) for more details.
  &quot;additionalData&quot;: &quot;A String&quot;, # Immutable. Optional EMM-specified additional data. Once the device is migrated this will be populated in the migrationAdditionalData field of the Device resource. This must be at most 1024 characters.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this migration token was created.
  &quot;device&quot;: &quot;A String&quot;, # Output only. Once this migration token is used to migrate a device, the name of the resulting Device resource will be populated here, in the form enterprises/{enterprise}/devices/{device}.
  &quot;deviceId&quot;: &quot;A String&quot;, # Required. Immutable. The id of the device, as in the Play EMM API. This corresponds to the deviceId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
  &quot;expireTime&quot;: &quot;A String&quot;, # Immutable. The time when this migration token expires. This can be at most seven days from the time of creation. The migration token is deleted seven days after it expires.
  &quot;managementMode&quot;: &quot;A String&quot;, # Required. Immutable. The management mode of the device or profile being migrated.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the migration token, which is generated by the server during creation, in the form enterprises/{enterprise}/migrationTokens/{migration_token}.
  &quot;policy&quot;: &quot;A String&quot;, # Required. Immutable. The name of the policy initially applied to the enrolled device, in the form enterprises/{enterprise}/policies/{policy}.
  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time that this migration token is valid for. This is input-only, and for returning a migration token the server will populate the expireTime field. This can be at most seven days. The default is seven days.
  &quot;userId&quot;: &quot;A String&quot;, # Required. Immutable. The user id of the Managed Google Play account on the device, as in the Play EMM API. This corresponds to the userId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
  &quot;value&quot;: &quot;A String&quot;, # Output only. The value of the migration token.
}</pre>
</div>

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

Args:
  name: string, Required. The name of the migration token to retrieve. Format: enterprises/{enterprise}/migrationTokens/{migration_token} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A token to initiate the migration of a device from being managed by a third-party DPC to being managed by Android Management API. A migration token is valid only for a single device. See the guide (https://developers.google.com/android/management/dpc-migration) for more details.
  &quot;additionalData&quot;: &quot;A String&quot;, # Immutable. Optional EMM-specified additional data. Once the device is migrated this will be populated in the migrationAdditionalData field of the Device resource. This must be at most 1024 characters.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this migration token was created.
  &quot;device&quot;: &quot;A String&quot;, # Output only. Once this migration token is used to migrate a device, the name of the resulting Device resource will be populated here, in the form enterprises/{enterprise}/devices/{device}.
  &quot;deviceId&quot;: &quot;A String&quot;, # Required. Immutable. The id of the device, as in the Play EMM API. This corresponds to the deviceId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
  &quot;expireTime&quot;: &quot;A String&quot;, # Immutable. The time when this migration token expires. This can be at most seven days from the time of creation. The migration token is deleted seven days after it expires.
  &quot;managementMode&quot;: &quot;A String&quot;, # Required. Immutable. The management mode of the device or profile being migrated.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the migration token, which is generated by the server during creation, in the form enterprises/{enterprise}/migrationTokens/{migration_token}.
  &quot;policy&quot;: &quot;A String&quot;, # Required. Immutable. The name of the policy initially applied to the enrolled device, in the form enterprises/{enterprise}/policies/{policy}.
  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time that this migration token is valid for. This is input-only, and for returning a migration token the server will populate the expireTime field. This can be at most seven days. The default is seven days.
  &quot;userId&quot;: &quot;A String&quot;, # Required. Immutable. The user id of the Managed Google Play account on the device, as in the Play EMM API. This corresponds to the userId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
  &quot;value&quot;: &quot;A String&quot;, # Output only. The value of the migration token.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists migration tokens.

Args:
  parent: string, Required. The enterprise which the migration tokens belong to. Format: enterprises/{enterprise} (required)
  pageSize: integer, The maximum number of migration tokens to return. Fewer migration tokens may be returned. If unspecified, at most 100 migration tokens will be returned. The maximum value is 100; values above 100 will be coerced to 100.
  pageToken: string, A page token, received from a previous ListMigrationTokens call. Provide this to retrieve the subsequent page.When paginating, all other parameters provided to ListMigrationTokens must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to a request to list migration tokens for a given enterprise.
  &quot;migrationTokens&quot;: [ # The migration tokens from the specified enterprise.
    { # A token to initiate the migration of a device from being managed by a third-party DPC to being managed by Android Management API. A migration token is valid only for a single device. See the guide (https://developers.google.com/android/management/dpc-migration) for more details.
      &quot;additionalData&quot;: &quot;A String&quot;, # Immutable. Optional EMM-specified additional data. Once the device is migrated this will be populated in the migrationAdditionalData field of the Device resource. This must be at most 1024 characters.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this migration token was created.
      &quot;device&quot;: &quot;A String&quot;, # Output only. Once this migration token is used to migrate a device, the name of the resulting Device resource will be populated here, in the form enterprises/{enterprise}/devices/{device}.
      &quot;deviceId&quot;: &quot;A String&quot;, # Required. Immutable. The id of the device, as in the Play EMM API. This corresponds to the deviceId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
      &quot;expireTime&quot;: &quot;A String&quot;, # Immutable. The time when this migration token expires. This can be at most seven days from the time of creation. The migration token is deleted seven days after it expires.
      &quot;managementMode&quot;: &quot;A String&quot;, # Required. Immutable. The management mode of the device or profile being migrated.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the migration token, which is generated by the server during creation, in the form enterprises/{enterprise}/migrationTokens/{migration_token}.
      &quot;policy&quot;: &quot;A String&quot;, # Required. Immutable. The name of the policy initially applied to the enrolled device, in the form enterprises/{enterprise}/policies/{policy}.
      &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time that this migration token is valid for. This is input-only, and for returning a migration token the server will populate the expireTime field. This can be at most seven days. The default is seven days.
      &quot;userId&quot;: &quot;A String&quot;, # Required. Immutable. The user id of the Managed Google Play account on the device, as in the Play EMM API. This corresponds to the userId parameter in Play EMM API&#x27;s Devices.get (https://developers.google.com/android/work/play/emm-api/v1/devices/get#parameters) call.
      &quot;value&quot;: &quot;A String&quot;, # Output only. The value of the migration token.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
}</pre>
</div>

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

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

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

</body></html>