<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="admin_datatransfer_v1.html">Admin Data Transfer API</a> . <a href="admin_datatransfer_v1.transfers.html">transfers</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(dataTransferId)</a></code></p>
<p class="firstline">Retrieves a data transfer request by its resource ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Inserts a data transfer request.</p>
<p class="toc_element">
  <code><a href="#list">list(status=None, oldOwnerUserId=None, pageToken=None, maxResults=None, newOwnerUserId=None, customerId=None)</a></code></p>
<p class="firstline">Lists the transfers for a customer by source user, destination user, or status.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(dataTransferId)</code>
  <pre>Retrieves a data transfer request by its resource ID.

Args:
  dataTransferId: string, ID of the resource to be retrieved. This is returned in the response from the insert method. (required)

Returns:
  An object of the form:

    { # The JSON template for a DataTransfer resource.
      "kind": "admin#datatransfer#DataTransfer", # Identifies the resource as a DataTransfer request.
      "requestTime": "A String", # The time at which the data transfer was requested (Read-only).
      "applicationDataTransfers": [ # List of per application data transfer resources. It contains data transfer details of the applications associated with this transfer resource. Note that this list is also used to specify the applications for which data transfer has to be done at the time of the transfer resource creation.
        { # Template to map fields of ApplicationDataTransfer resource.
          "applicationTransferParams": [ # The transfer parameters for the application. These parameters are used to select the data which will get transfered in context of this application.
            { # Template for application transfer parameters.
              "value": [ # The value of the coressponding transfer parameter. eg: 'PRIVATE' or 'SHARED'
                "A String",
              ],
              "key": "A String", # The type of the transfer parameter. eg: 'PRIVACY_LEVEL'
            },
          ],
          "applicationTransferStatus": "A String", # Current status of transfer for this application. (Read-only)
          "applicationId": "A String", # The application's ID.
        },
      ],
      "newOwnerUserId": "A String", # ID of the user to whom the data is being transfered.
      "oldOwnerUserId": "A String", # ID of the user whose data is being transfered.
      "etag": "A String", # ETag of the resource.
      "overallTransferStatusCode": "A String", # Overall transfer status (Read-only).
      "id": "A String", # The transfer's ID (Read-only).
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body)</code>
  <pre>Inserts a data transfer request.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # The JSON template for a DataTransfer resource.
    "kind": "admin#datatransfer#DataTransfer", # Identifies the resource as a DataTransfer request.
    "requestTime": "A String", # The time at which the data transfer was requested (Read-only).
    "applicationDataTransfers": [ # List of per application data transfer resources. It contains data transfer details of the applications associated with this transfer resource. Note that this list is also used to specify the applications for which data transfer has to be done at the time of the transfer resource creation.
      { # Template to map fields of ApplicationDataTransfer resource.
        "applicationTransferParams": [ # The transfer parameters for the application. These parameters are used to select the data which will get transfered in context of this application.
          { # Template for application transfer parameters.
            "value": [ # The value of the coressponding transfer parameter. eg: 'PRIVATE' or 'SHARED'
              "A String",
            ],
            "key": "A String", # The type of the transfer parameter. eg: 'PRIVACY_LEVEL'
          },
        ],
        "applicationTransferStatus": "A String", # Current status of transfer for this application. (Read-only)
        "applicationId": "A String", # The application's ID.
      },
    ],
    "newOwnerUserId": "A String", # ID of the user to whom the data is being transfered.
    "oldOwnerUserId": "A String", # ID of the user whose data is being transfered.
    "etag": "A String", # ETag of the resource.
    "overallTransferStatusCode": "A String", # Overall transfer status (Read-only).
    "id": "A String", # The transfer's ID (Read-only).
  }


Returns:
  An object of the form:

    { # The JSON template for a DataTransfer resource.
      "kind": "admin#datatransfer#DataTransfer", # Identifies the resource as a DataTransfer request.
      "requestTime": "A String", # The time at which the data transfer was requested (Read-only).
      "applicationDataTransfers": [ # List of per application data transfer resources. It contains data transfer details of the applications associated with this transfer resource. Note that this list is also used to specify the applications for which data transfer has to be done at the time of the transfer resource creation.
        { # Template to map fields of ApplicationDataTransfer resource.
          "applicationTransferParams": [ # The transfer parameters for the application. These parameters are used to select the data which will get transfered in context of this application.
            { # Template for application transfer parameters.
              "value": [ # The value of the coressponding transfer parameter. eg: 'PRIVATE' or 'SHARED'
                "A String",
              ],
              "key": "A String", # The type of the transfer parameter. eg: 'PRIVACY_LEVEL'
            },
          ],
          "applicationTransferStatus": "A String", # Current status of transfer for this application. (Read-only)
          "applicationId": "A String", # The application's ID.
        },
      ],
      "newOwnerUserId": "A String", # ID of the user to whom the data is being transfered.
      "oldOwnerUserId": "A String", # ID of the user whose data is being transfered.
      "etag": "A String", # ETag of the resource.
      "overallTransferStatusCode": "A String", # Overall transfer status (Read-only).
      "id": "A String", # The transfer's ID (Read-only).
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(status=None, oldOwnerUserId=None, pageToken=None, maxResults=None, newOwnerUserId=None, customerId=None)</code>
  <pre>Lists the transfers for a customer by source user, destination user, or status.

Args:
  status: string, Status of the transfer.
  oldOwnerUserId: string, Source user's profile ID.
  pageToken: string, Token to specify the next page in the list.
  maxResults: integer, Maximum number of results to return. Default is 100.
  newOwnerUserId: string, Destination user's profile ID.
  customerId: string, Immutable ID of the Google Apps account.

Returns:
  An object of the form:

    { # Template for a collection of DataTransfer resources.
    "nextPageToken": "A String", # Continuation token which will be used to specify next page in list API.
    "kind": "admin#datatransfer#dataTransfersList", # Identifies the resource as a collection of data transfer requests.
    "etag": "A String", # ETag of the resource.
    "dataTransfers": [ # List of data transfer requests.
      { # The JSON template for a DataTransfer resource.
          "kind": "admin#datatransfer#DataTransfer", # Identifies the resource as a DataTransfer request.
          "requestTime": "A String", # The time at which the data transfer was requested (Read-only).
          "applicationDataTransfers": [ # List of per application data transfer resources. It contains data transfer details of the applications associated with this transfer resource. Note that this list is also used to specify the applications for which data transfer has to be done at the time of the transfer resource creation.
            { # Template to map fields of ApplicationDataTransfer resource.
              "applicationTransferParams": [ # The transfer parameters for the application. These parameters are used to select the data which will get transfered in context of this application.
                { # Template for application transfer parameters.
                  "value": [ # The value of the coressponding transfer parameter. eg: 'PRIVATE' or 'SHARED'
                    "A String",
                  ],
                  "key": "A String", # The type of the transfer parameter. eg: 'PRIVACY_LEVEL'
                },
              ],
              "applicationTransferStatus": "A String", # Current status of transfer for this application. (Read-only)
              "applicationId": "A String", # The application's ID.
            },
          ],
          "newOwnerUserId": "A String", # ID of the user to whom the data is being transfered.
          "oldOwnerUserId": "A String", # ID of the user whose data is being transfered.
          "etag": "A String", # ETag of the resource.
          "overallTransferStatusCode": "A String", # Overall transfer status (Read-only).
          "id": "A String", # The transfer's ID (Read-only).
        },
    ],
  }</pre>
</div>

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

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

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

</body></html>