<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, pageSize=None, pageToken=None, runAttempt=None, states=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;dataSourceId&quot;: &quot;A String&quot;, # Output only. Data source id.
  &quot;destinationDatasetId&quot;: &quot;A String&quot;, # Output only. The BigQuery target dataset id.
  &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;endTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run ended. Parameter ignored by server for input requests.
  &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;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;notificationPubsubTopic&quot;: &quot;A String&quot;, # Output only. Pub/Sub topic where a notification will be sent after this transfer run finishes
  &quot;params&quot;: { # Output only. Parameters specific to each data source. For more information see the bq tab in the &#x27;Setting up a data transfer&#x27; section for each data source. For example the parameters for Cloud Storage transfers are listed here: https://cloud.google.com/bigquery-transfer/docs/cloud-storage-transfer#bq
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;runTime&quot;: &quot;A String&quot;, # For batch transfer runs, specifies the date and time of the data should be ingested.
  &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;scheduleTime&quot;: &quot;A String&quot;, # Minimum time after which a transfer run can be started.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run was started. Parameter ignored by server for input requests.
  &quot;state&quot;: &quot;A String&quot;, # Data transfer run state. Ignored for input requests.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last time the data transfer run state was updated.
  &quot;userId&quot;: &quot;A String&quot;, # Deprecated. Unique ID of the user on whose behalf transfer is done.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, runAttempt=None, states=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)
  pageSize: integer, Page size. The default page size is the maximum value of 1000 results.
  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.
  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.
  states: string, When specified, only transfer runs with requested states are returned. (repeated)
    Allowed values
      TRANSFER_STATE_UNSPECIFIED - State placeholder (0).
      PENDING - Data transfer is scheduled and is waiting to be picked up by data transfer backend (2).
      RUNNING - Data transfer is in progress (3).
      SUCCEEDED - Data transfer completed successfully (4).
      FAILED - Data transfer failed (5).
      CANCELLED - Data transfer is cancelled (6).
  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;dataSourceId&quot;: &quot;A String&quot;, # Output only. Data source id.
      &quot;destinationDatasetId&quot;: &quot;A String&quot;, # Output only. The BigQuery target dataset id.
      &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;endTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run ended. Parameter ignored by server for input requests.
      &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;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;notificationPubsubTopic&quot;: &quot;A String&quot;, # Output only. Pub/Sub topic where a notification will be sent after this transfer run finishes
      &quot;params&quot;: { # Output only. Parameters specific to each data source. For more information see the bq tab in the &#x27;Setting up a data transfer&#x27; section for each data source. For example the parameters for Cloud Storage transfers are listed here: https://cloud.google.com/bigquery-transfer/docs/cloud-storage-transfer#bq
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;runTime&quot;: &quot;A String&quot;, # For batch transfer runs, specifies the date and time of the data should be ingested.
      &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;scheduleTime&quot;: &quot;A String&quot;, # Minimum time after which a transfer run can be started.
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when transfer run was started. Parameter ignored by server for input requests.
      &quot;state&quot;: &quot;A String&quot;, # Data transfer run state. Ignored for input requests.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last time the data transfer run state was updated.
      &quot;userId&quot;: &quot;A String&quot;, # Deprecated. Unique ID of the user on whose behalf transfer is done.
    },
  ],
}</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>