<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.dataSources.html">dataSources</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#checkValidCreds">checkValidCreds(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns true if valid credentials exist for the given data source and</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a supported data source and returns its settings,</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
<p class="firstline">Lists supported data sources and returns their settings,</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="checkValidCreds">checkValidCreds(name, body=None, x__xgafv=None)</code>
  <pre>Returns true if valid credentials exist for the given data source and
requesting user.
Some data sources doesn't support service account, so we need to talk to
them on behalf of the end user. This API just checks whether we have OAuth
token for the particular user, which is a pre-requisite before user can
create a transfer config.

Args:
  name: string, Required. The data source in the form:
`projects/{project_id}/dataSources/{data_source_id}` or
`projects/{project_id}/locations/{location_id}/dataSources/{data_source_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to determine whether the user has valid credentials. This method
      # is used to limit the number of OAuth popups in the user interface. The
      # user id is inferred from the API call context.
      # If the data source has the Google+ authorization type, this method
      # returns false, as it cannot be determined whether the credentials are
      # already valid merely based on the user id.
  }

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

Returns:
  An object of the form:

    { # A response indicating whether the credentials exist and are valid.
    "hasValidCreds": True or False, # If set to `true`, the credentials exist and are valid.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves a supported data source and returns its settings,
which can be used for UI rendering.

Args:
  name: string, Required. The field will contain name of the resource requested, for example:
`projects/{project_id}/dataSources/{data_source_id}` or
`projects/{project_id}/locations/{location_id}/dataSources/{data_source_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 data source metadata. Metadata is sufficient to
      # render UI and request proper OAuth tokens.
    "scopes": [ # Api auth scopes for which refresh token needs to be obtained. These are
        # scopes needed by a data source to prepare data and ingest them into
        # BigQuery, e.g., https://www.googleapis.com/auth/bigquery
      "A String",
    ],
    "minimumScheduleInterval": "A String", # The minimum interval for scheduler to schedule runs.
    "supportsCustomSchedule": True or False, # Specifies whether the data source supports a user defined schedule, or
        # operates on the default schedule.
        # When set to `true`, user can override default schedule.
    "dataRefreshType": "A String", # Specifies whether the data source supports automatic data refresh for the
        # past few days, and how it's supported.
        # For some data sources, data might not be complete until a few days later,
        # so it's useful to refresh data automatically.
    "parameters": [ # Data source parameters.
      { # Represents a data source parameter with validation rules, so that
          # parameters can be rendered in the UI. These parameters are given to us by
          # supported data sources, and include all needed information for rendering
          # and validation.
          # Thus, whoever uses this api can decide to generate either generic ui,
          # or custom data source specific forms.
        "paramId": "A String", # Parameter identifier.
        "displayName": "A String", # Parameter display name in the user interface.
        "description": "A String", # Parameter description.
        "validationDescription": "A String", # Description of the requirements for this field, in case the user input does
            # not fulfill the regex pattern or min/max values.
        "deprecated": True or False, # If true, it should not be used in new transfers, and it should not be
            # visible to users.
        "required": True or False, # Is parameter required.
        "recurse": True or False, # Deprecated. This field has no effect.
        "maxValue": 3.14, # For integer and double values specifies maxminum allowed value.
        "minValue": 3.14, # For integer and double values specifies minimum allowed value.
        "repeated": True or False, # Deprecated. This field has no effect.
        "fields": [ # Deprecated. This field has no effect.
          # Object with schema name: DataSourceParameter
        ],
        "validationRegex": "A String", # Regular expression which can be used for parameter validation.
        "validationHelpUrl": "A String", # URL to a help document to further explain the naming requirements.
        "allowedValues": [ # All possible values for the parameter.
          "A String",
        ],
        "type": "A String", # Parameter type.
        "immutable": True or False, # Cannot be changed after initial creation.
      },
    ],
    "description": "A String", # User friendly data source description string.
    "manualRunsDisabled": True or False, # Disables backfilling and manual run scheduling
        # for the data source.
    "name": "A String", # Output only. Data source resource name.
    "clientId": "A String", # Data source client id which should be used to receive refresh token.
    "defaultSchedule": "A String", # Default data transfer schedule.
        # Examples of valid schedules include:
        # `1st,3rd monday of month 15:30`,
        # `every wed,fri of jan,jun 13:15`, and
        # `first sunday of quarter 00:00`.
    "dataSourceId": "A String", # Data source id.
    "defaultDataRefreshWindowDays": 42, # Default data refresh window on days.
        # Only meaningful when `data_refresh_type` = `SLIDING_WINDOW`.
    "displayName": "A String", # User friendly data source name.
    "supportsMultipleTransfers": True or False, # Deprecated. This field has no effect.
    "helpUrl": "A String", # Url for the help document for this data source.
    "authorizationType": "A String", # Indicates the type of authorization.
    "updateDeadlineSeconds": 42, # The number of seconds to wait for an update from the data source
        # before the Data Transfer Service marks the transfer as FAILED.
    "transferType": "A String", # Deprecated. This field has no effect.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
  <pre>Lists supported data sources and returns their settings,
which can be used for UI rendering.

Args:
  parent: string, Required. The BigQuery project id for which data sources should be returned.
Must be in the form: `projects/{project_id}` or
`projects/{project_id}/locations/{location_id} (required)
  pageToken: string, Pagination token, which can be used to request a specific page
of `ListDataSourcesRequest` list results. For multiple-page
results, `ListDataSourcesResponse` outputs
a `next_page` token, which can be used as the
`page_token` value to request the next page of list results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageSize: integer, Page size. The default page size is the maximum value of 1000 results.

Returns:
  An object of the form:

    { # Returns list of supported data sources and their metadata.
    "nextPageToken": "A String", # Output only. The next-pagination token. For multiple-page list results,
        # this token can be used as the
        # `ListDataSourcesRequest.page_token`
        # to request the next page of list results.
    "dataSources": [ # List of supported data sources and their transfer settings.
      { # Represents data source metadata. Metadata is sufficient to
          # render UI and request proper OAuth tokens.
        "scopes": [ # Api auth scopes for which refresh token needs to be obtained. These are
            # scopes needed by a data source to prepare data and ingest them into
            # BigQuery, e.g., https://www.googleapis.com/auth/bigquery
          "A String",
        ],
        "minimumScheduleInterval": "A String", # The minimum interval for scheduler to schedule runs.
        "supportsCustomSchedule": True or False, # Specifies whether the data source supports a user defined schedule, or
            # operates on the default schedule.
            # When set to `true`, user can override default schedule.
        "dataRefreshType": "A String", # Specifies whether the data source supports automatic data refresh for the
            # past few days, and how it's supported.
            # For some data sources, data might not be complete until a few days later,
            # so it's useful to refresh data automatically.
        "parameters": [ # Data source parameters.
          { # Represents a data source parameter with validation rules, so that
              # parameters can be rendered in the UI. These parameters are given to us by
              # supported data sources, and include all needed information for rendering
              # and validation.
              # Thus, whoever uses this api can decide to generate either generic ui,
              # or custom data source specific forms.
            "paramId": "A String", # Parameter identifier.
            "displayName": "A String", # Parameter display name in the user interface.
            "description": "A String", # Parameter description.
            "validationDescription": "A String", # Description of the requirements for this field, in case the user input does
                # not fulfill the regex pattern or min/max values.
            "deprecated": True or False, # If true, it should not be used in new transfers, and it should not be
                # visible to users.
            "required": True or False, # Is parameter required.
            "recurse": True or False, # Deprecated. This field has no effect.
            "maxValue": 3.14, # For integer and double values specifies maxminum allowed value.
            "minValue": 3.14, # For integer and double values specifies minimum allowed value.
            "repeated": True or False, # Deprecated. This field has no effect.
            "fields": [ # Deprecated. This field has no effect.
              # Object with schema name: DataSourceParameter
            ],
            "validationRegex": "A String", # Regular expression which can be used for parameter validation.
            "validationHelpUrl": "A String", # URL to a help document to further explain the naming requirements.
            "allowedValues": [ # All possible values for the parameter.
              "A String",
            ],
            "type": "A String", # Parameter type.
            "immutable": True or False, # Cannot be changed after initial creation.
          },
        ],
        "description": "A String", # User friendly data source description string.
        "manualRunsDisabled": True or False, # Disables backfilling and manual run scheduling
            # for the data source.
        "name": "A String", # Output only. Data source resource name.
        "clientId": "A String", # Data source client id which should be used to receive refresh token.
        "defaultSchedule": "A String", # Default data transfer schedule.
            # Examples of valid schedules include:
            # `1st,3rd monday of month 15:30`,
            # `every wed,fri of jan,jun 13:15`, and
            # `first sunday of quarter 00:00`.
        "dataSourceId": "A String", # Data source id.
        "defaultDataRefreshWindowDays": 42, # Default data refresh window on days.
            # Only meaningful when `data_refresh_type` = `SLIDING_WINDOW`.
        "displayName": "A String", # User friendly data source name.
        "supportsMultipleTransfers": True or False, # Deprecated. This field has no effect.
        "helpUrl": "A String", # Url for the help document for this data source.
        "authorizationType": "A String", # Indicates the type of authorization.
        "updateDeadlineSeconds": 42, # The number of seconds to wait for an update from the data source
            # before the Data Transfer Service marks the transfer as FAILED.
        "transferType": "A String", # Deprecated. This field has no effect.
      },
    ],
  }</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>