<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="bigquerydatatransfer_v1.html">BigQuery Data Transfer API</a> . <a href="bigquerydatatransfer_v1.projects.html">projects</a> . <a href="bigquerydatatransfer_v1.projects.locations.html">locations</a> . <a href="bigquerydatatransfer_v1.projects.locations.transferConfigs.html">transferConfigs</a> . <a href="bigquerydatatransfer_v1.projects.locations.transferConfigs.runs.html">runs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="bigquerydatatransfer_v1.projects.locations.transferConfigs.runs.transferLogs.html">transferLogs()</a></code>
</p>
<p class="firstline">Returns the transferLogs Resource.</p>

<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="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified transfer run.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns information about the particular transfer run.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, states=None, runAttempt=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns information about running and completed jobs.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified transfer run.

Args:
  name: string, Required. The field will contain name of the resource requested, for example: `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` or `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}/runs/{run_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 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>Returns information about the particular transfer run.

Args:
  name: string, Required. The field will contain name of the resource requested, for example: `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` or `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}/runs/{run_id}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a data transfer run.
    &quot;schedule&quot;: &quot;A String&quot;, # Output only. Describes the schedule of this transfer run if it was created as part of a regular schedule. For batch transfer runs that are scheduled manually, this is empty. NOTE: the system might choose to delay the schedule depending on the current load, so `schedule_time` doesn&#x27;t always match this.
    &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run ended. Parameter ignored by server for input requests.
    &quot;dataSourceId&quot;: &quot;A String&quot;, # Output only. Data source id.
    &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Output only. Pub/Sub topic where a notification will be sent after this transfer run finishes
    &quot;emailPreferences&quot;: { # Represents preferences for sending email notifications for transfer run events. # Output only. Email notifications will be sent according to these preferences to the email address of the user who owns the transfer config this run was derived from.
      &quot;enableFailureEmail&quot;: True or False, # If true, email notifications will be sent on transfer run failures.
    },
    &quot;errorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Status of the transfer run.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;params&quot;: { # Output only. Data transfer specific parameters.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;scheduleTime&quot;: &quot;A String&quot;, # Minimum time after which a transfer run can be started.
    &quot;runTime&quot;: &quot;A String&quot;, # For batch transfer runs, specifies the date and time of the data should be ingested.
    &quot;userId&quot;: &quot;A String&quot;, # Deprecated. Unique ID of the user on whose behalf transfer is done.
    &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run was started. Parameter ignored by server for input requests.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last time the data transfer run state was updated.
    &quot;destinationDatasetId&quot;: &quot;A String&quot;, # Output only. The BigQuery target dataset id.
    &quot;name&quot;: &quot;A String&quot;, # The resource name of the transfer run. Transfer run names have the form `projects/{project_id}/locations/{location}/transferConfigs/{config_id}/runs/{run_id}`. The name is ignored when creating a transfer run.
    &quot;state&quot;: &quot;A String&quot;, # Data transfer run state. Ignored for input requests.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, states=None, runAttempt=None, pageSize=None, x__xgafv=None)</code>
  <pre>Returns information about running and completed jobs.

Args:
  parent: string, Required. Name of transfer configuration for which transfer runs should be retrieved. Format of transfer configuration resource name is: `projects/{project_id}/transferConfigs/{config_id}` or `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`. (required)
  pageToken: string, Pagination token, which can be used to request a specific page of `ListTransferRunsRequest` list results. For multiple-page results, `ListTransferRunsResponse` outputs a `next_page` token, which can be used as the `page_token` value to request the next page of list results.
  states: string, When specified, only transfer runs with requested states are returned. (repeated)
    Allowed values
      TRANSFER_STATE_UNSPECIFIED - State placeholder.
      PENDING - Data transfer is scheduled and is waiting to be picked up by data transfer backend.
      RUNNING - Data transfer is in progress.
      SUCCEEDED - Data transfer completed successfully.
      FAILED - Data transfer failed.
      CANCELLED - Data transfer is cancelled.
  runAttempt: string, Indicates how run attempts are to be pulled.
    Allowed values
      RUN_ATTEMPT_UNSPECIFIED - All runs should be returned.
      LATEST - Only latest run per day should be returned.
  pageSize: integer, Page size. The default page size is the maximum value of 1000 results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The returned list of pipelines in the project.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Output only. The next-pagination token. For multiple-page list results, this token can be used as the `ListTransferRunsRequest.page_token` to request the next page of list results.
    &quot;transferRuns&quot;: [ # Output only. The stored pipeline transfer runs.
      { # Represents a data transfer run.
        &quot;schedule&quot;: &quot;A String&quot;, # Output only. Describes the schedule of this transfer run if it was created as part of a regular schedule. For batch transfer runs that are scheduled manually, this is empty. NOTE: the system might choose to delay the schedule depending on the current load, so `schedule_time` doesn&#x27;t always match this.
        &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run ended. Parameter ignored by server for input requests.
        &quot;dataSourceId&quot;: &quot;A String&quot;, # Output only. Data source id.
        &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Output only. Pub/Sub topic where a notification will be sent after this transfer run finishes
        &quot;emailPreferences&quot;: { # Represents preferences for sending email notifications for transfer run events. # Output only. Email notifications will be sent according to these preferences to the email address of the user who owns the transfer config this run was derived from.
          &quot;enableFailureEmail&quot;: True or False, # If true, email notifications will be sent on transfer run failures.
        },
        &quot;errorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Status of the transfer run.
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
        &quot;params&quot;: { # Output only. Data transfer specific parameters.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;scheduleTime&quot;: &quot;A String&quot;, # Minimum time after which a transfer run can be started.
        &quot;runTime&quot;: &quot;A String&quot;, # For batch transfer runs, specifies the date and time of the data should be ingested.
        &quot;userId&quot;: &quot;A String&quot;, # Deprecated. Unique ID of the user on whose behalf transfer is done.
        &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run was started. Parameter ignored by server for input requests.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last time the data transfer run state was updated.
        &quot;destinationDatasetId&quot;: &quot;A String&quot;, # Output only. The BigQuery target dataset id.
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the transfer run. Transfer run names have the form `projects/{project_id}/locations/{location}/transferConfigs/{config_id}/runs/{run_id}`. The name is ignored when creating a transfer run.
        &quot;state&quot;: &quot;A String&quot;, # Data transfer run state. Ignored for input requests.
      },
    ],
  }</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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>