<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="datafusion_v1.html">Cloud Data Fusion API</a> . <a href="datafusion_v1.projects.html">projects</a> . <a href="datafusion_v1.projects.locations.html">locations</a> . <a href="datafusion_v1.projects.locations.versions.html">versions</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="#list">list(parent, latestPatchOnly=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists possible versions for Data Fusion instances in the specified project and location.</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="list">list(parent, latestPatchOnly=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists possible versions for Data Fusion instances in the specified project and location.

Args:
  parent: string, Required. The project and location for which to retrieve instance information in the format projects/{project}/locations/{location}. (required)
  latestPatchOnly: boolean, Whether or not to return the latest patch of every available minor version. If true, only the latest patch will be returned. Ex. if allowed versions is [6.1.1, 6.1.2, 6.2.0] then response will be [6.1.2, 6.2.0]
  pageSize: integer, The maximum number of items to return.
  pageToken: string, The next_page_token value to use if there are additional results to retrieve for this list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the list available versions request.
  &quot;availableVersions&quot;: [ # Represents a list of versions that are supported. Deprecated: Use versions field instead.
    { # The Data Fusion version. This proto message stores information about certain Data Fusion version, which is used for Data Fusion version upgrade.
      &quot;availableFeatures&quot;: [ # Represents a list of available feature names for a given version.
        &quot;A String&quot;,
      ],
      &quot;defaultVersion&quot;: True or False, # Whether this is currently the default version for Cloud Data Fusion
      &quot;type&quot;: &quot;A String&quot;, # Type represents the release availability of the version
      &quot;versionNumber&quot;: &quot;A String&quot;, # The version number of the Data Fusion instance, such as &#x27;6.0.1.0&#x27;.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results or empty if there are no more results in the list.
  &quot;versions&quot;: [ # Represents a list of all versions.
    { # The Data Fusion version. This proto message stores information about certain Data Fusion version, which is used for Data Fusion version upgrade.
      &quot;availableFeatures&quot;: [ # Represents a list of available feature names for a given version.
        &quot;A String&quot;,
      ],
      &quot;defaultVersion&quot;: True or False, # Whether this is currently the default version for Cloud Data Fusion
      &quot;type&quot;: &quot;A String&quot;, # Type represents the release availability of the version
      &quot;versionNumber&quot;: &quot;A String&quot;, # The version number of the Data Fusion instance, such as &#x27;6.0.1.0&#x27;.
    },
  ],
}</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>