<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="datastream_v1.html">Datastream API</a> . <a href="datastream_v1.projects.html">projects</a> . <a href="datastream_v1.projects.locations.html">locations</a> . <a href="datastream_v1.projects.locations.connectionProfiles.html">connectionProfiles</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="#create">create(parent, body=None, connectionProfileId=None, force=None, requestId=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to create a connection profile in a project and location.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to delete a connection profile.</p>
<p class="toc_element">
  <code><a href="#discover">discover(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to discover a connection profile. The discover API call exposes the data objects and metadata belonging to the profile. Typically, a request returns children data objects of a parent data object that's optionally supplied in the request.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to get details about a connection profile.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to list connection profiles created in a project and location.</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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, force=None, requestId=None, updateMask=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to update the parameters of a connection profile.</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="create">create(parent, body=None, connectionProfileId=None, force=None, requestId=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Use this method to create a connection profile in a project and location.

Args:
  parent: string, Required. The parent that owns the collection of ConnectionProfiles. (required)
  body: object, The request body.
    The object takes the form of:

{ # A set of reusable connection configurations to be used as a source or destination for a stream.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The create time of the resource.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;forwardSshConnectivity&quot;: { # Forward SSH Tunnel connectivity. # Forward SSH tunnel connectivity.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the SSH tunnel.
    &quot;password&quot;: &quot;A String&quot;, # Input only. SSH password.
    &quot;port&quot;: 42, # Port for the SSH tunnel, default value is 22.
    &quot;privateKey&quot;: &quot;A String&quot;, # Input only. SSH private key.
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the SSH tunnel.
  },
  &quot;gcsProfile&quot;: { # Cloud Storage bucket profile. # Cloud Storage ConnectionProfile configuration.
    &quot;bucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket name.
    &quot;rootPath&quot;: &quot;A String&quot;, # The root path inside the Cloud Storage bucket.
  },
  &quot;labels&quot;: { # Labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mysqlProfile&quot;: { # MySQL database profile. # MySQL ConnectionProfile configuration.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the MySQL connection.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the MySQL connection.
    &quot;port&quot;: 42, # Port for the MySQL connection, default value is 3306.
    &quot;sslConfig&quot;: { # MySQL SSL configuration information. # SSL configuration for the MySQL connection.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate.
      &quot;caCertificateSet&quot;: True or False, # Output only. Indicates whether the ca_certificate field is set.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the &#x27;client_key&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
      &quot;clientCertificateSet&quot;: True or False, # Output only. Indicates whether the client_certificate field is set.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
      &quot;clientKeySet&quot;: True or False, # Output only. Indicates whether the client_key field is set.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the MySQL connection.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource&#x27;s name.
  &quot;oracleProfile&quot;: { # Oracle database profile. # Oracle ConnectionProfile configuration.
    &quot;connectionAttributes&quot;: { # Connection string attributes
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database for the Oracle connection.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle connection.
    &quot;password&quot;: &quot;A String&quot;, # Required. Password for the Oracle connection.
    &quot;port&quot;: 42, # Port for the Oracle connection, default value is 1521.
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle connection.
  },
  &quot;privateConnectivity&quot;: { # Private Connectivity # Private connectivity.
    &quot;privateConnection&quot;: &quot;A String&quot;, # Required. A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`
  },
  &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity. # Static Service IP connectivity.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The update time of the resource.
}

  connectionProfileId: string, Required. The connection profile identifier.
  force: boolean, Optional. Create the connection profile without validating it.
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  validateOnly: boolean, Optional. Only validate the connection profile, but don&#x27;t create any resources. The default is false.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&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). # The error result of the operation in case of failure or cancellation.
    &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;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, requestId=None, x__xgafv=None)</code>
  <pre>Use this method to delete a connection profile.

Args:
  name: string, Required. The name of the connection profile resource to delete. (required)
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&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). # The error result of the operation in case of failure or cancellation.
    &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;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="discover">discover(parent, body=None, x__xgafv=None)</code>
  <pre>Use this method to discover a connection profile. The discover API call exposes the data objects and metadata belonging to the profile. Typically, a request returns children data objects of a parent data object that&#x27;s optionally supplied in the request.

Args:
  parent: string, Required. The parent resource of the connection profile type. Must be in the format `projects/*/locations/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for &#x27;discover&#x27; ConnectionProfile request.
  &quot;connectionProfile&quot;: { # A set of reusable connection configurations to be used as a source or destination for a stream. # An ad-hoc connection profile configuration.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The create time of the resource.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
    &quot;forwardSshConnectivity&quot;: { # Forward SSH Tunnel connectivity. # Forward SSH tunnel connectivity.
      &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the SSH tunnel.
      &quot;password&quot;: &quot;A String&quot;, # Input only. SSH password.
      &quot;port&quot;: 42, # Port for the SSH tunnel, default value is 22.
      &quot;privateKey&quot;: &quot;A String&quot;, # Input only. SSH private key.
      &quot;username&quot;: &quot;A String&quot;, # Required. Username for the SSH tunnel.
    },
    &quot;gcsProfile&quot;: { # Cloud Storage bucket profile. # Cloud Storage ConnectionProfile configuration.
      &quot;bucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket name.
      &quot;rootPath&quot;: &quot;A String&quot;, # The root path inside the Cloud Storage bucket.
    },
    &quot;labels&quot;: { # Labels.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;mysqlProfile&quot;: { # MySQL database profile. # MySQL ConnectionProfile configuration.
      &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the MySQL connection.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the MySQL connection.
      &quot;port&quot;: 42, # Port for the MySQL connection, default value is 3306.
      &quot;sslConfig&quot;: { # MySQL SSL configuration information. # SSL configuration for the MySQL connection.
        &quot;caCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate.
        &quot;caCertificateSet&quot;: True or False, # Output only. Indicates whether the ca_certificate field is set.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the &#x27;client_key&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
        &quot;clientCertificateSet&quot;: True or False, # Output only. Indicates whether the client_certificate field is set.
        &quot;clientKey&quot;: &quot;A String&quot;, # Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
        &quot;clientKeySet&quot;: True or False, # Output only. Indicates whether the client_key field is set.
      },
      &quot;username&quot;: &quot;A String&quot;, # Required. Username for the MySQL connection.
    },
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource&#x27;s name.
    &quot;oracleProfile&quot;: { # Oracle database profile. # Oracle ConnectionProfile configuration.
      &quot;connectionAttributes&quot;: { # Connection string attributes
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database for the Oracle connection.
      &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle connection.
      &quot;password&quot;: &quot;A String&quot;, # Required. Password for the Oracle connection.
      &quot;port&quot;: 42, # Port for the Oracle connection, default value is 1521.
      &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle connection.
    },
    &quot;privateConnectivity&quot;: { # Private Connectivity # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`
    },
    &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity. # Static Service IP connectivity.
    },
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The update time of the resource.
  },
  &quot;connectionProfileName&quot;: &quot;A String&quot;, # A reference to an existing connection profile.
  &quot;fullHierarchy&quot;: True or False, # Whether to retrieve the full hierarchy of data objects (TRUE) or only the current level (FALSE).
  &quot;hierarchyDepth&quot;: 42, # The number of hierarchy levels below the current level to be retrieved.
  &quot;mysqlRdbms&quot;: { # MySQL database structure # MySQL RDBMS to enrich with child data objects and metadata.
    &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
      { # MySQL database.
        &quot;database&quot;: &quot;A String&quot;, # Database name.
        &quot;mysqlTables&quot;: [ # Tables in the database.
          { # MySQL table.
            &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
              { # MySQL Column.
                &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                &quot;column&quot;: &quot;A String&quot;, # Column name.
                &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                &quot;length&quot;: 42, # Column length.
                &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
              },
            ],
            &quot;table&quot;: &quot;A String&quot;, # Table name.
          },
        ],
      },
    ],
  },
  &quot;oracleRdbms&quot;: { # Oracle database structure. # Oracle RDBMS to enrich with child data objects and metadata.
    &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
      { # Oracle schema.
        &quot;oracleTables&quot;: [ # Tables in the schema.
          { # Oracle table.
            &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
              { # Oracle Column.
                &quot;column&quot;: &quot;A String&quot;, # Column name.
                &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                &quot;length&quot;: 42, # Column length.
                &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                &quot;precision&quot;: 42, # Column precision.
                &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                &quot;scale&quot;: 42, # Column scale.
              },
            ],
            &quot;table&quot;: &quot;A String&quot;, # Table name.
          },
        ],
        &quot;schema&quot;: &quot;A String&quot;, # Schema name.
      },
    ],
  },
}

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

Returns:
  An object of the form:

    { # Response from a discover request.
  &quot;mysqlRdbms&quot;: { # MySQL database structure # Enriched MySQL RDBMS object.
    &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
      { # MySQL database.
        &quot;database&quot;: &quot;A String&quot;, # Database name.
        &quot;mysqlTables&quot;: [ # Tables in the database.
          { # MySQL table.
            &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
              { # MySQL Column.
                &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                &quot;column&quot;: &quot;A String&quot;, # Column name.
                &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                &quot;length&quot;: 42, # Column length.
                &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
              },
            ],
            &quot;table&quot;: &quot;A String&quot;, # Table name.
          },
        ],
      },
    ],
  },
  &quot;oracleRdbms&quot;: { # Oracle database structure. # Enriched Oracle RDBMS object.
    &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
      { # Oracle schema.
        &quot;oracleTables&quot;: [ # Tables in the schema.
          { # Oracle table.
            &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
              { # Oracle Column.
                &quot;column&quot;: &quot;A String&quot;, # Column name.
                &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                &quot;length&quot;: 42, # Column length.
                &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                &quot;precision&quot;: 42, # Column precision.
                &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                &quot;scale&quot;: 42, # Column scale.
              },
            ],
            &quot;table&quot;: &quot;A String&quot;, # Table name.
          },
        ],
        &quot;schema&quot;: &quot;A String&quot;, # Schema name.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Use this method to get details about a connection profile.

Args:
  name: string, Required. The name of the connection profile resource to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A set of reusable connection configurations to be used as a source or destination for a stream.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The create time of the resource.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;forwardSshConnectivity&quot;: { # Forward SSH Tunnel connectivity. # Forward SSH tunnel connectivity.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the SSH tunnel.
    &quot;password&quot;: &quot;A String&quot;, # Input only. SSH password.
    &quot;port&quot;: 42, # Port for the SSH tunnel, default value is 22.
    &quot;privateKey&quot;: &quot;A String&quot;, # Input only. SSH private key.
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the SSH tunnel.
  },
  &quot;gcsProfile&quot;: { # Cloud Storage bucket profile. # Cloud Storage ConnectionProfile configuration.
    &quot;bucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket name.
    &quot;rootPath&quot;: &quot;A String&quot;, # The root path inside the Cloud Storage bucket.
  },
  &quot;labels&quot;: { # Labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mysqlProfile&quot;: { # MySQL database profile. # MySQL ConnectionProfile configuration.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the MySQL connection.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the MySQL connection.
    &quot;port&quot;: 42, # Port for the MySQL connection, default value is 3306.
    &quot;sslConfig&quot;: { # MySQL SSL configuration information. # SSL configuration for the MySQL connection.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate.
      &quot;caCertificateSet&quot;: True or False, # Output only. Indicates whether the ca_certificate field is set.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the &#x27;client_key&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
      &quot;clientCertificateSet&quot;: True or False, # Output only. Indicates whether the client_certificate field is set.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
      &quot;clientKeySet&quot;: True or False, # Output only. Indicates whether the client_key field is set.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the MySQL connection.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource&#x27;s name.
  &quot;oracleProfile&quot;: { # Oracle database profile. # Oracle ConnectionProfile configuration.
    &quot;connectionAttributes&quot;: { # Connection string attributes
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database for the Oracle connection.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle connection.
    &quot;password&quot;: &quot;A String&quot;, # Required. Password for the Oracle connection.
    &quot;port&quot;: 42, # Port for the Oracle connection, default value is 1521.
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle connection.
  },
  &quot;privateConnectivity&quot;: { # Private Connectivity # Private connectivity.
    &quot;privateConnection&quot;: &quot;A String&quot;, # Required. A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`
  },
  &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity. # Static Service IP connectivity.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The update time of the resource.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Use this method to list connection profiles created in a project and location.

Args:
  parent: string, Required. The parent that owns the collection of connection profiles. (required)
  filter: string, Filter request.
  orderBy: string, Order by fields for the result.
  pageSize: integer, Maximum number of connection profiles to return. If unspecified, at most 50 connection profiles will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, Page token received from a previous `ListConnectionProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListConnectionProfiles` must match the call that provided the page token.
  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 listing connection profiles.
  &quot;connectionProfiles&quot;: [ # List of connection profiles.
    { # A set of reusable connection configurations to be used as a source or destination for a stream.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The create time of the resource.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
      &quot;forwardSshConnectivity&quot;: { # Forward SSH Tunnel connectivity. # Forward SSH tunnel connectivity.
        &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the SSH tunnel.
        &quot;password&quot;: &quot;A String&quot;, # Input only. SSH password.
        &quot;port&quot;: 42, # Port for the SSH tunnel, default value is 22.
        &quot;privateKey&quot;: &quot;A String&quot;, # Input only. SSH private key.
        &quot;username&quot;: &quot;A String&quot;, # Required. Username for the SSH tunnel.
      },
      &quot;gcsProfile&quot;: { # Cloud Storage bucket profile. # Cloud Storage ConnectionProfile configuration.
        &quot;bucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket name.
        &quot;rootPath&quot;: &quot;A String&quot;, # The root path inside the Cloud Storage bucket.
      },
      &quot;labels&quot;: { # Labels.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;mysqlProfile&quot;: { # MySQL database profile. # MySQL ConnectionProfile configuration.
        &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the MySQL connection.
        &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the MySQL connection.
        &quot;port&quot;: 42, # Port for the MySQL connection, default value is 3306.
        &quot;sslConfig&quot;: { # MySQL SSL configuration information. # SSL configuration for the MySQL connection.
          &quot;caCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate.
          &quot;caCertificateSet&quot;: True or False, # Output only. Indicates whether the ca_certificate field is set.
          &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the &#x27;client_key&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
          &quot;clientCertificateSet&quot;: True or False, # Output only. Indicates whether the client_certificate field is set.
          &quot;clientKey&quot;: &quot;A String&quot;, # Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
          &quot;clientKeySet&quot;: True or False, # Output only. Indicates whether the client_key field is set.
        },
        &quot;username&quot;: &quot;A String&quot;, # Required. Username for the MySQL connection.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource&#x27;s name.
      &quot;oracleProfile&quot;: { # Oracle database profile. # Oracle ConnectionProfile configuration.
        &quot;connectionAttributes&quot;: { # Connection string attributes
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database for the Oracle connection.
        &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle connection.
        &quot;password&quot;: &quot;A String&quot;, # Required. Password for the Oracle connection.
        &quot;port&quot;: 42, # Port for the Oracle connection, default value is 1521.
        &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle connection.
      },
      &quot;privateConnectivity&quot;: { # Private Connectivity # Private connectivity.
        &quot;privateConnection&quot;: &quot;A String&quot;, # Required. A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`
      },
      &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity. # Static Service IP connectivity.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The update time of the resource.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, force=None, requestId=None, updateMask=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Use this method to update the parameters of a connection profile.

Args:
  name: string, Output only. The resource&#x27;s name. (required)
  body: object, The request body.
    The object takes the form of:

{ # A set of reusable connection configurations to be used as a source or destination for a stream.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The create time of the resource.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;forwardSshConnectivity&quot;: { # Forward SSH Tunnel connectivity. # Forward SSH tunnel connectivity.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the SSH tunnel.
    &quot;password&quot;: &quot;A String&quot;, # Input only. SSH password.
    &quot;port&quot;: 42, # Port for the SSH tunnel, default value is 22.
    &quot;privateKey&quot;: &quot;A String&quot;, # Input only. SSH private key.
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the SSH tunnel.
  },
  &quot;gcsProfile&quot;: { # Cloud Storage bucket profile. # Cloud Storage ConnectionProfile configuration.
    &quot;bucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket name.
    &quot;rootPath&quot;: &quot;A String&quot;, # The root path inside the Cloud Storage bucket.
  },
  &quot;labels&quot;: { # Labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mysqlProfile&quot;: { # MySQL database profile. # MySQL ConnectionProfile configuration.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the MySQL connection.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the MySQL connection.
    &quot;port&quot;: 42, # Port for the MySQL connection, default value is 3306.
    &quot;sslConfig&quot;: { # MySQL SSL configuration information. # SSL configuration for the MySQL connection.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate.
      &quot;caCertificateSet&quot;: True or False, # Output only. Indicates whether the ca_certificate field is set.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the &#x27;client_key&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
      &quot;clientCertificateSet&quot;: True or False, # Output only. Indicates whether the client_certificate field is set.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; and the &#x27;ca_certificate&#x27; fields are mandatory.
      &quot;clientKeySet&quot;: True or False, # Output only. Indicates whether the client_key field is set.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the MySQL connection.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource&#x27;s name.
  &quot;oracleProfile&quot;: { # Oracle database profile. # Oracle ConnectionProfile configuration.
    &quot;connectionAttributes&quot;: { # Connection string attributes
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database for the Oracle connection.
    &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle connection.
    &quot;password&quot;: &quot;A String&quot;, # Required. Password for the Oracle connection.
    &quot;port&quot;: 42, # Port for the Oracle connection, default value is 1521.
    &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle connection.
  },
  &quot;privateConnectivity&quot;: { # Private Connectivity # Private connectivity.
    &quot;privateConnection&quot;: &quot;A String&quot;, # Required. A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`
  },
  &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity. # Static Service IP connectivity.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The update time of the resource.
}

  force: boolean, Optional. Update the connection profile without validating it.
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  updateMask: string, Optional. Field mask is used to specify the fields to be overwritten in the ConnectionProfile resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.
  validateOnly: boolean, Optional. Only validate the connection profile, but don&#x27;t update any resources. The default is false.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&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). # The error result of the operation in case of failure or cancellation.
    &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;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>