<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="datamigration_v1.html">Database Migration API</a> . <a href="datamigration_v1.projects.html">projects</a> . <a href="datamigration_v1.projects.locations.html">locations</a> . <a href="datamigration_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, requestId=None, skipValidation=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new connection profile in a given project and location.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, force=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a single Database Migration Service connection profile. A connection profile can only be deleted if it is not in use by any active migration jobs.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of a single connection profile.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</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">Retrieves a list of all connection profiles in a given 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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, requestId=None, skipValidation=None, updateMask=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the configuration of a single connection profile.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may "fail open" without warning.</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, requestId=None, skipValidation=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Creates a new connection profile in a given project and location.

Args:
  parent: string, Required. The parent which owns this collection of connection profiles. (required)
  body: object, The request body.
    The object takes the form of:

{ # A connection profile definition.
  &quot;alloydb&quot;: { # Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster. # An AlloyDB cluster connection profile.
    &quot;clusterId&quot;: &quot;A String&quot;, # Required. The AlloyDB cluster ID that this connection profile is associated with.
    &quot;settings&quot;: { # Settings for creating an AlloyDB cluster. # Immutable. Metadata used to create the destination AlloyDB cluster.
      &quot;databaseVersion&quot;: &quot;A String&quot;, # Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used.
      &quot;encryptionConfig&quot;: { # EncryptionConfig describes the encryption config of a cluster that is encrypted with a CMEK (customer-managed encryption key). # Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]
      },
      &quot;initialUser&quot;: { # The username/password for a database user. Used for specifying initial users at cluster creation time. # Required. Input only. Initial user to setup during cluster creation. Required.
        &quot;password&quot;: &quot;A String&quot;, # The initial password for the user.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates if the initial_user.password field has been set.
        &quot;user&quot;: &quot;A String&quot;, # The database username.
      },
      &quot;labels&quot;: { # Labels for the AlloyDB cluster created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;primaryInstanceSettings&quot;: { # Settings for the cluster&#x27;s primary instance # Settings for the cluster&#x27;s primary instance
        &quot;databaseFlags&quot;: { # Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the AlloyDB primary instance. The ID must satisfy the regex expression &quot;[a-z0-9-]+&quot;.
        &quot;instanceNetworkConfig&quot;: { # Metadata related to instance level network configuration. # Optional. Metadata related to instance level network configuration.
          &quot;authorizedExternalNetworks&quot;: [ # Optional. A list of external network authorized to access this instance.
            { # AuthorizedNetwork contains metadata for an authorized network.
              &quot;cidrRange&quot;: &quot;A String&quot;, # Optional. CIDR range for one authorzied network of the instance.
            },
          ],
          &quot;enableOutboundPublicIp&quot;: True or False, # Optional. Enabling an outbound public IP address to support a database server sending requests out into the internet.
          &quot;enablePublicIp&quot;: True or False, # Optional. Enabling public ip for the instance.
        },
        &quot;labels&quot;: { # Labels for the AlloyDB primary instance created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;machineConfig&quot;: { # MachineConfig describes the configuration of a machine. # Configuration for the machines that host the underlying database engine.
          &quot;cpuCount&quot;: 42, # The number of CPU&#x27;s in the VM instance.
          &quot;machineType&quot;: &quot;A String&quot;, # Optional. Machine type of the VM instance. E.g. &quot;n2-highmem-4&quot;, &quot;n2-highmem-8&quot;, &quot;c4a-highmem-4-lssd&quot;. cpu_count must match the number of vCPUs in the machine type.
        },
        &quot;outboundPublicIpAddresses&quot;: [ # Output only. All outbound public IP addresses configured for the instance.
          &quot;A String&quot;,
        ],
        &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The private IP address for the Instance. This is the connection endpoint for an end-user application.
      },
      &quot;vpcNetwork&quot;: &quot;A String&quot;, # Required. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster. It is specified in the form: &quot;projects/{project_number}/global/networks/{network_id}&quot;. This is required to create a cluster.
    },
  },
  &quot;cloudsql&quot;: { # Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance. # A CloudSQL database connection profile.
    &quot;additionalPublicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s additional (outgoing) public IP. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # Output only. The Cloud SQL instance ID that this connection profile is associated with.
    &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s private IP.
    &quot;publicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s public IP.
    &quot;settings&quot;: { # Settings for creating a Cloud SQL database instance. # Immutable. Metadata used to create the destination Cloud SQL database.
      &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is &#x27;RUNNABLE&#x27;. Valid values: &#x27;ALWAYS&#x27;: The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives.
      &quot;autoStorageIncrease&quot;: True or False, # [default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB.
      &quot;availabilityType&quot;: &quot;A String&quot;, # Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available).
      &quot;cmekKeyName&quot;: &quot;A String&quot;, # The KMS key name used for the csql instance.
      &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL default instance level collation.
      &quot;dataCacheConfig&quot;: { # Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation. # Optional. Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation.
        &quot;dataCacheEnabled&quot;: True or False, # Optional. Whether data cache is enabled for the instance.
      },
      &quot;dataDiskProvisionedIops&quot;: &quot;A String&quot;, # Optional. Provisioned number of I/O operations per second for the data disk. This field is only used for hyperdisk-balanced disk types.
      &quot;dataDiskProvisionedThroughput&quot;: &quot;A String&quot;, # Optional. Provisioned throughput measured in MiB per second for the data disk. This field is only used for hyperdisk-balanced disk types.
      &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The storage capacity available to the database, in GB. The minimum (and default) size is 10GB.
      &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of storage: `PD_SSD` (default) or `PD_HDD` or `HYPERDISK_BALANCED`.
      &quot;databaseFlags&quot;: { # The database flags passed to the Cloud SQL instance at startup. An object containing a list of &quot;key&quot;: value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. Deprecated. Use database_version_name instead.
      &quot;databaseVersionName&quot;: &quot;A String&quot;, # Optional. The database engine type and version name.
      &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the given Cloud SQL instance.
      &quot;ipConfig&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
        &quot;allocatedIpRange&quot;: &quot;A String&quot;, # Optional. The name of the allocated IP address range for the private IP Cloud SQL instance. This name refers to an already allocated IP range address. If set, the instance IP address will be created in the allocated range. Note that this IP address range can&#x27;t be modified after the instance is created. If you change the VPC when configuring connectivity settings for the migration job, this field is not relevant.
        &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as &#x27;slash&#x27; notation (e.g. `192.168.100.0/24`).
          { # An entry for an Access Control list.
            &quot;expireTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`.
            &quot;label&quot;: &quot;A String&quot;, # A label to identify this entry.
            &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time-to-leave of this access control entry.
            &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
          },
        ],
        &quot;enableIpv4&quot;: True or False, # Whether the instance should be assigned an IPv4 address or not.
        &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set.
        &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP should be enforced or not.
      },
      &quot;rootPassword&quot;: &quot;A String&quot;, # Input only. Initial root password.
      &quot;rootPasswordSet&quot;: True or False, # Output only. Indicates If this connection profile root password is stored.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # Optional. The Google Cloud Platform zone where the failover Cloud SQL database instance is located. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
      &quot;sourceId&quot;: &quot;A String&quot;, # The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`
      &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
      &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances) or `db-custom-1-3840` (PostgreSQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings).
      &quot;userLabels&quot;: { # The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;18kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;zone&quot;: &quot;A String&quot;, # The Google Cloud Platform zone where your Cloud SQL database instance is located.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
  &quot;displayName&quot;: &quot;A String&quot;, # The connection profile display name.
  &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). # Output only. The error details in case of state FAILED.
    &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;labels&quot;: { # The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mysql&quot;: { # Specifies connection parameters required specifically for MySQL databases. # A MySQL database connection profile.
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source MySQL database.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
    &quot;port&quot;: 42, # Required. The network port of the source MySQL database.
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;name&quot;: &quot;A String&quot;, # The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.
  &quot;oracle&quot;: { # Specifies connection parameters required specifically for Oracle databases. # An Oracle database connection profile.
    &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database service for the Oracle connection.
    &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source Oracle database.
    &quot;oracleAsmConfig&quot;: { # Configuration for Oracle Automatic Storage Management (ASM) connection. # Optional. Configuration for Oracle ASM connection.
      &quot;asmService&quot;: &quot;A String&quot;, # Required. ASM service name for the Oracle ASM connection.
      &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle ASM connection.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the Oracle ASM connection.
      &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
      &quot;port&quot;: 42, # Required. Port for the Oracle ASM connection.
      &quot;ssl&quot;: { # SSL configuration information. # Optional. SSL configuration for the Oracle connection.
        &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
        &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
        &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
      },
      &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle ASM connection.
    },
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
    &quot;port&quot;: 42, # Required. The network port of the source Oracle database.
    &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity configured on service project. # Static Service IP connectivity.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;postgresql&quot;: { # Specifies connection parameters required specifically for PostgreSQL databases. # A PostgreSQL database connection profile.
    &quot;alloydbClusterId&quot;: &quot;A String&quot;, # Optional. If the destination is an AlloyDB database, use this field to provide the AlloyDB cluster ID.
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;database&quot;: &quot;A String&quot;, # Optional. The name of the specific database within the host.
    &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source PostgreSQL database.
    &quot;networkArchitecture&quot;: &quot;A String&quot;, # Output only. If the source is a Cloud SQL database, this field indicates the network architecture it&#x27;s associated with.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
    &quot;port&quot;: 42, # Required. The network port of the source PostgreSQL database.
    &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private service connect connectivity.
      &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static ip connectivity data (default, no additional details needed).
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;provider&quot;: &quot;A String&quot;, # The database provider.
  &quot;role&quot;: &quot;A String&quot;, # Optional. The connection profile role.
  &quot;satisfiesPzi&quot;: True or False, # Output only. Reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
  &quot;sqlserver&quot;: { # Specifies connection parameters required specifically for SQL Server databases. # Connection profile for a SQL Server data source.
    &quot;backups&quot;: { # Specifies the backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server. # The backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server.
      &quot;gcsBucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket that stores backups for all replicated databases.
      &quot;gcsPrefix&quot;: &quot;A String&quot;, # Optional. Cloud Storage path inside the bucket that stores backups.
    },
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;cloudSqlProjectId&quot;: &quot;A String&quot;, # Optional. The project id of the Cloud SQL instance. If not provided, the project id of the connection profile will be used.
    &quot;database&quot;: &quot;A String&quot;, # Required. The name of the specific database within the host.
    &quot;dbmPort&quot;: 42, # Optional. The Database Mirroring (DBM) port of the source SQL Server instance.
    &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source SQL Server database.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
    &quot;port&quot;: 42, # Required. The network port of the source SQL Server database.
    &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
    },
    &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private Service Connect connectivity.
      &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static IP connectivity data (default, no additional details needed).
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;state&quot;: &quot;A String&quot;, # The current connection profile state (e.g. DRAFT, READY, or FAILED).
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
}

  connectionProfileId: string, Required. The connection profile identifier.
  requestId: string, Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
  skipValidation: boolean, Optional. Create the connection profile without validating it. The default is false. Only supported for Oracle connection profiles.
  validateOnly: boolean, Optional. Only validate the connection profile, but don&#x27;t create any resources. The default is false. Only supported for Oracle connection profiles.
  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, successful response of the operation. 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, force=None, requestId=None, x__xgafv=None)</code>
  <pre>Deletes a single Database Migration Service connection profile. A connection profile can only be deleted if it is not in use by any active migration jobs.

Args:
  name: string, Required. Name of the connection profile resource to delete. (required)
  force: boolean, In case of force delete, the CloudSQL replica database is also deleted (only for CloudSQL connection profile).
  requestId: string, A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
  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, successful response of the operation. 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="get">get(name, x__xgafv=None)</code>
  <pre>Gets details of a single connection profile.

Args:
  name: string, Required. 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 connection profile definition.
  &quot;alloydb&quot;: { # Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster. # An AlloyDB cluster connection profile.
    &quot;clusterId&quot;: &quot;A String&quot;, # Required. The AlloyDB cluster ID that this connection profile is associated with.
    &quot;settings&quot;: { # Settings for creating an AlloyDB cluster. # Immutable. Metadata used to create the destination AlloyDB cluster.
      &quot;databaseVersion&quot;: &quot;A String&quot;, # Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used.
      &quot;encryptionConfig&quot;: { # EncryptionConfig describes the encryption config of a cluster that is encrypted with a CMEK (customer-managed encryption key). # Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]
      },
      &quot;initialUser&quot;: { # The username/password for a database user. Used for specifying initial users at cluster creation time. # Required. Input only. Initial user to setup during cluster creation. Required.
        &quot;password&quot;: &quot;A String&quot;, # The initial password for the user.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates if the initial_user.password field has been set.
        &quot;user&quot;: &quot;A String&quot;, # The database username.
      },
      &quot;labels&quot;: { # Labels for the AlloyDB cluster created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;primaryInstanceSettings&quot;: { # Settings for the cluster&#x27;s primary instance # Settings for the cluster&#x27;s primary instance
        &quot;databaseFlags&quot;: { # Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the AlloyDB primary instance. The ID must satisfy the regex expression &quot;[a-z0-9-]+&quot;.
        &quot;instanceNetworkConfig&quot;: { # Metadata related to instance level network configuration. # Optional. Metadata related to instance level network configuration.
          &quot;authorizedExternalNetworks&quot;: [ # Optional. A list of external network authorized to access this instance.
            { # AuthorizedNetwork contains metadata for an authorized network.
              &quot;cidrRange&quot;: &quot;A String&quot;, # Optional. CIDR range for one authorzied network of the instance.
            },
          ],
          &quot;enableOutboundPublicIp&quot;: True or False, # Optional. Enabling an outbound public IP address to support a database server sending requests out into the internet.
          &quot;enablePublicIp&quot;: True or False, # Optional. Enabling public ip for the instance.
        },
        &quot;labels&quot;: { # Labels for the AlloyDB primary instance created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;machineConfig&quot;: { # MachineConfig describes the configuration of a machine. # Configuration for the machines that host the underlying database engine.
          &quot;cpuCount&quot;: 42, # The number of CPU&#x27;s in the VM instance.
          &quot;machineType&quot;: &quot;A String&quot;, # Optional. Machine type of the VM instance. E.g. &quot;n2-highmem-4&quot;, &quot;n2-highmem-8&quot;, &quot;c4a-highmem-4-lssd&quot;. cpu_count must match the number of vCPUs in the machine type.
        },
        &quot;outboundPublicIpAddresses&quot;: [ # Output only. All outbound public IP addresses configured for the instance.
          &quot;A String&quot;,
        ],
        &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The private IP address for the Instance. This is the connection endpoint for an end-user application.
      },
      &quot;vpcNetwork&quot;: &quot;A String&quot;, # Required. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster. It is specified in the form: &quot;projects/{project_number}/global/networks/{network_id}&quot;. This is required to create a cluster.
    },
  },
  &quot;cloudsql&quot;: { # Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance. # A CloudSQL database connection profile.
    &quot;additionalPublicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s additional (outgoing) public IP. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # Output only. The Cloud SQL instance ID that this connection profile is associated with.
    &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s private IP.
    &quot;publicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s public IP.
    &quot;settings&quot;: { # Settings for creating a Cloud SQL database instance. # Immutable. Metadata used to create the destination Cloud SQL database.
      &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is &#x27;RUNNABLE&#x27;. Valid values: &#x27;ALWAYS&#x27;: The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives.
      &quot;autoStorageIncrease&quot;: True or False, # [default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB.
      &quot;availabilityType&quot;: &quot;A String&quot;, # Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available).
      &quot;cmekKeyName&quot;: &quot;A String&quot;, # The KMS key name used for the csql instance.
      &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL default instance level collation.
      &quot;dataCacheConfig&quot;: { # Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation. # Optional. Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation.
        &quot;dataCacheEnabled&quot;: True or False, # Optional. Whether data cache is enabled for the instance.
      },
      &quot;dataDiskProvisionedIops&quot;: &quot;A String&quot;, # Optional. Provisioned number of I/O operations per second for the data disk. This field is only used for hyperdisk-balanced disk types.
      &quot;dataDiskProvisionedThroughput&quot;: &quot;A String&quot;, # Optional. Provisioned throughput measured in MiB per second for the data disk. This field is only used for hyperdisk-balanced disk types.
      &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The storage capacity available to the database, in GB. The minimum (and default) size is 10GB.
      &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of storage: `PD_SSD` (default) or `PD_HDD` or `HYPERDISK_BALANCED`.
      &quot;databaseFlags&quot;: { # The database flags passed to the Cloud SQL instance at startup. An object containing a list of &quot;key&quot;: value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. Deprecated. Use database_version_name instead.
      &quot;databaseVersionName&quot;: &quot;A String&quot;, # Optional. The database engine type and version name.
      &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the given Cloud SQL instance.
      &quot;ipConfig&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
        &quot;allocatedIpRange&quot;: &quot;A String&quot;, # Optional. The name of the allocated IP address range for the private IP Cloud SQL instance. This name refers to an already allocated IP range address. If set, the instance IP address will be created in the allocated range. Note that this IP address range can&#x27;t be modified after the instance is created. If you change the VPC when configuring connectivity settings for the migration job, this field is not relevant.
        &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as &#x27;slash&#x27; notation (e.g. `192.168.100.0/24`).
          { # An entry for an Access Control list.
            &quot;expireTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`.
            &quot;label&quot;: &quot;A String&quot;, # A label to identify this entry.
            &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time-to-leave of this access control entry.
            &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
          },
        ],
        &quot;enableIpv4&quot;: True or False, # Whether the instance should be assigned an IPv4 address or not.
        &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set.
        &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP should be enforced or not.
      },
      &quot;rootPassword&quot;: &quot;A String&quot;, # Input only. Initial root password.
      &quot;rootPasswordSet&quot;: True or False, # Output only. Indicates If this connection profile root password is stored.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # Optional. The Google Cloud Platform zone where the failover Cloud SQL database instance is located. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
      &quot;sourceId&quot;: &quot;A String&quot;, # The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`
      &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
      &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances) or `db-custom-1-3840` (PostgreSQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings).
      &quot;userLabels&quot;: { # The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;18kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;zone&quot;: &quot;A String&quot;, # The Google Cloud Platform zone where your Cloud SQL database instance is located.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
  &quot;displayName&quot;: &quot;A String&quot;, # The connection profile display name.
  &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). # Output only. The error details in case of state FAILED.
    &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;labels&quot;: { # The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mysql&quot;: { # Specifies connection parameters required specifically for MySQL databases. # A MySQL database connection profile.
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source MySQL database.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
    &quot;port&quot;: 42, # Required. The network port of the source MySQL database.
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;name&quot;: &quot;A String&quot;, # The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.
  &quot;oracle&quot;: { # Specifies connection parameters required specifically for Oracle databases. # An Oracle database connection profile.
    &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database service for the Oracle connection.
    &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source Oracle database.
    &quot;oracleAsmConfig&quot;: { # Configuration for Oracle Automatic Storage Management (ASM) connection. # Optional. Configuration for Oracle ASM connection.
      &quot;asmService&quot;: &quot;A String&quot;, # Required. ASM service name for the Oracle ASM connection.
      &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle ASM connection.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the Oracle ASM connection.
      &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
      &quot;port&quot;: 42, # Required. Port for the Oracle ASM connection.
      &quot;ssl&quot;: { # SSL configuration information. # Optional. SSL configuration for the Oracle connection.
        &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
        &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
        &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
      },
      &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle ASM connection.
    },
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
    &quot;port&quot;: 42, # Required. The network port of the source Oracle database.
    &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity configured on service project. # Static Service IP connectivity.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;postgresql&quot;: { # Specifies connection parameters required specifically for PostgreSQL databases. # A PostgreSQL database connection profile.
    &quot;alloydbClusterId&quot;: &quot;A String&quot;, # Optional. If the destination is an AlloyDB database, use this field to provide the AlloyDB cluster ID.
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;database&quot;: &quot;A String&quot;, # Optional. The name of the specific database within the host.
    &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source PostgreSQL database.
    &quot;networkArchitecture&quot;: &quot;A String&quot;, # Output only. If the source is a Cloud SQL database, this field indicates the network architecture it&#x27;s associated with.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
    &quot;port&quot;: 42, # Required. The network port of the source PostgreSQL database.
    &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private service connect connectivity.
      &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static ip connectivity data (default, no additional details needed).
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;provider&quot;: &quot;A String&quot;, # The database provider.
  &quot;role&quot;: &quot;A String&quot;, # Optional. The connection profile role.
  &quot;satisfiesPzi&quot;: True or False, # Output only. Reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
  &quot;sqlserver&quot;: { # Specifies connection parameters required specifically for SQL Server databases. # Connection profile for a SQL Server data source.
    &quot;backups&quot;: { # Specifies the backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server. # The backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server.
      &quot;gcsBucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket that stores backups for all replicated databases.
      &quot;gcsPrefix&quot;: &quot;A String&quot;, # Optional. Cloud Storage path inside the bucket that stores backups.
    },
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;cloudSqlProjectId&quot;: &quot;A String&quot;, # Optional. The project id of the Cloud SQL instance. If not provided, the project id of the connection profile will be used.
    &quot;database&quot;: &quot;A String&quot;, # Required. The name of the specific database within the host.
    &quot;dbmPort&quot;: 42, # Optional. The Database Mirroring (DBM) port of the source SQL Server instance.
    &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source SQL Server database.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
    &quot;port&quot;: 42, # Required. The network port of the source SQL Server database.
    &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
    },
    &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private Service Connect connectivity.
      &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static IP connectivity data (default, no additional details needed).
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;state&quot;: &quot;A String&quot;, # The current connection profile state (e.g. DRAFT, READY, or FAILED).
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</code>
  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. (required)
  options_requestedPolicyVersion: integer, Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
  &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
    { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.
      &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
        { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
          &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
            &quot;A String&quot;,
          ],
          &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
        },
      ],
      &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
    },
  ],
  &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
    { # Associates `members`, or principals, with a `role`.
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</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>Retrieves a list of all connection profiles in a given project and location.

Args:
  parent: string, Required. The parent which owns this collection of connection profiles. (required)
  filter: string, A filter expression that filters connection profiles listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, &gt;, or &lt;. For example, list connection profiles created this year by specifying **createTime %gt; 2020-01-01T00:00:00.000000000Z**. You can also filter nested fields. For example, you could specify **mySql.username = %lt;my_username%gt;** to list all connection profiles configured to connect with a specific username.
  orderBy: string, A comma-separated list of fields to order results according to.
  pageSize: integer, The maximum number of connection profiles to return. The service may return fewer than this value. If unspecified, at most 50 connection profiles will be returned. The maximum value is 1000; values above 1000 are coerced to 1000.
  pageToken: string, A 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 &#x27;ListConnectionProfiles&#x27; request.
  &quot;connectionProfiles&quot;: [ # The response list of connection profiles.
    { # A connection profile definition.
      &quot;alloydb&quot;: { # Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster. # An AlloyDB cluster connection profile.
        &quot;clusterId&quot;: &quot;A String&quot;, # Required. The AlloyDB cluster ID that this connection profile is associated with.
        &quot;settings&quot;: { # Settings for creating an AlloyDB cluster. # Immutable. Metadata used to create the destination AlloyDB cluster.
          &quot;databaseVersion&quot;: &quot;A String&quot;, # Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used.
          &quot;encryptionConfig&quot;: { # EncryptionConfig describes the encryption config of a cluster that is encrypted with a CMEK (customer-managed encryption key). # Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data.
            &quot;kmsKeyName&quot;: &quot;A String&quot;, # The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]
          },
          &quot;initialUser&quot;: { # The username/password for a database user. Used for specifying initial users at cluster creation time. # Required. Input only. Initial user to setup during cluster creation. Required.
            &quot;password&quot;: &quot;A String&quot;, # The initial password for the user.
            &quot;passwordSet&quot;: True or False, # Output only. Indicates if the initial_user.password field has been set.
            &quot;user&quot;: &quot;A String&quot;, # The database username.
          },
          &quot;labels&quot;: { # Labels for the AlloyDB cluster created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;primaryInstanceSettings&quot;: { # Settings for the cluster&#x27;s primary instance # Settings for the cluster&#x27;s primary instance
            &quot;databaseFlags&quot;: { # Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the AlloyDB primary instance. The ID must satisfy the regex expression &quot;[a-z0-9-]+&quot;.
            &quot;instanceNetworkConfig&quot;: { # Metadata related to instance level network configuration. # Optional. Metadata related to instance level network configuration.
              &quot;authorizedExternalNetworks&quot;: [ # Optional. A list of external network authorized to access this instance.
                { # AuthorizedNetwork contains metadata for an authorized network.
                  &quot;cidrRange&quot;: &quot;A String&quot;, # Optional. CIDR range for one authorzied network of the instance.
                },
              ],
              &quot;enableOutboundPublicIp&quot;: True or False, # Optional. Enabling an outbound public IP address to support a database server sending requests out into the internet.
              &quot;enablePublicIp&quot;: True or False, # Optional. Enabling public ip for the instance.
            },
            &quot;labels&quot;: { # Labels for the AlloyDB primary instance created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;machineConfig&quot;: { # MachineConfig describes the configuration of a machine. # Configuration for the machines that host the underlying database engine.
              &quot;cpuCount&quot;: 42, # The number of CPU&#x27;s in the VM instance.
              &quot;machineType&quot;: &quot;A String&quot;, # Optional. Machine type of the VM instance. E.g. &quot;n2-highmem-4&quot;, &quot;n2-highmem-8&quot;, &quot;c4a-highmem-4-lssd&quot;. cpu_count must match the number of vCPUs in the machine type.
            },
            &quot;outboundPublicIpAddresses&quot;: [ # Output only. All outbound public IP addresses configured for the instance.
              &quot;A String&quot;,
            ],
            &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The private IP address for the Instance. This is the connection endpoint for an end-user application.
          },
          &quot;vpcNetwork&quot;: &quot;A String&quot;, # Required. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster. It is specified in the form: &quot;projects/{project_number}/global/networks/{network_id}&quot;. This is required to create a cluster.
        },
      },
      &quot;cloudsql&quot;: { # Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance. # A CloudSQL database connection profile.
        &quot;additionalPublicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s additional (outgoing) public IP. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
        &quot;cloudSqlId&quot;: &quot;A String&quot;, # Output only. The Cloud SQL instance ID that this connection profile is associated with.
        &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s private IP.
        &quot;publicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s public IP.
        &quot;settings&quot;: { # Settings for creating a Cloud SQL database instance. # Immutable. Metadata used to create the destination Cloud SQL database.
          &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is &#x27;RUNNABLE&#x27;. Valid values: &#x27;ALWAYS&#x27;: The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives.
          &quot;autoStorageIncrease&quot;: True or False, # [default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB.
          &quot;availabilityType&quot;: &quot;A String&quot;, # Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available).
          &quot;cmekKeyName&quot;: &quot;A String&quot;, # The KMS key name used for the csql instance.
          &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL default instance level collation.
          &quot;dataCacheConfig&quot;: { # Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation. # Optional. Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation.
            &quot;dataCacheEnabled&quot;: True or False, # Optional. Whether data cache is enabled for the instance.
          },
          &quot;dataDiskProvisionedIops&quot;: &quot;A String&quot;, # Optional. Provisioned number of I/O operations per second for the data disk. This field is only used for hyperdisk-balanced disk types.
          &quot;dataDiskProvisionedThroughput&quot;: &quot;A String&quot;, # Optional. Provisioned throughput measured in MiB per second for the data disk. This field is only used for hyperdisk-balanced disk types.
          &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The storage capacity available to the database, in GB. The minimum (and default) size is 10GB.
          &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of storage: `PD_SSD` (default) or `PD_HDD` or `HYPERDISK_BALANCED`.
          &quot;databaseFlags&quot;: { # The database flags passed to the Cloud SQL instance at startup. An object containing a list of &quot;key&quot;: value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. Deprecated. Use database_version_name instead.
          &quot;databaseVersionName&quot;: &quot;A String&quot;, # Optional. The database engine type and version name.
          &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the given Cloud SQL instance.
          &quot;ipConfig&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
            &quot;allocatedIpRange&quot;: &quot;A String&quot;, # Optional. The name of the allocated IP address range for the private IP Cloud SQL instance. This name refers to an already allocated IP range address. If set, the instance IP address will be created in the allocated range. Note that this IP address range can&#x27;t be modified after the instance is created. If you change the VPC when configuring connectivity settings for the migration job, this field is not relevant.
            &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as &#x27;slash&#x27; notation (e.g. `192.168.100.0/24`).
              { # An entry for an Access Control list.
                &quot;expireTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`.
                &quot;label&quot;: &quot;A String&quot;, # A label to identify this entry.
                &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time-to-leave of this access control entry.
                &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
              },
            ],
            &quot;enableIpv4&quot;: True or False, # Whether the instance should be assigned an IPv4 address or not.
            &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set.
            &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP should be enforced or not.
          },
          &quot;rootPassword&quot;: &quot;A String&quot;, # Input only. Initial root password.
          &quot;rootPasswordSet&quot;: True or False, # Output only. Indicates If this connection profile root password is stored.
          &quot;secondaryZone&quot;: &quot;A String&quot;, # Optional. The Google Cloud Platform zone where the failover Cloud SQL database instance is located. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
          &quot;sourceId&quot;: &quot;A String&quot;, # The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`
          &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
          &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances) or `db-custom-1-3840` (PostgreSQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings).
          &quot;userLabels&quot;: { # The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;18kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;zone&quot;: &quot;A String&quot;, # The Google Cloud Platform zone where your Cloud SQL database instance is located.
        },
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
      &quot;displayName&quot;: &quot;A String&quot;, # The connection profile display name.
      &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). # Output only. The error details in case of state FAILED.
        &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;labels&quot;: { # The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;mysql&quot;: { # Specifies connection parameters required specifically for MySQL databases. # A MySQL database connection profile.
        &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
        &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source MySQL database.
        &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
        &quot;port&quot;: 42, # Required. The network port of the source MySQL database.
        &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
          &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
          &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
          &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
          &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
        },
        &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
      },
      &quot;name&quot;: &quot;A String&quot;, # The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.
      &quot;oracle&quot;: { # Specifies connection parameters required specifically for Oracle databases. # An Oracle database connection profile.
        &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database service for the Oracle connection.
        &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source Oracle database.
        &quot;oracleAsmConfig&quot;: { # Configuration for Oracle Automatic Storage Management (ASM) connection. # Optional. Configuration for Oracle ASM connection.
          &quot;asmService&quot;: &quot;A String&quot;, # Required. ASM service name for the Oracle ASM connection.
          &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle ASM connection.
          &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the Oracle ASM connection.
          &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
          &quot;port&quot;: 42, # Required. Port for the Oracle ASM connection.
          &quot;ssl&quot;: { # SSL configuration information. # Optional. SSL configuration for the Oracle connection.
            &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
            &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
            &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
            &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
          },
          &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle ASM connection.
        },
        &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
        &quot;port&quot;: 42, # Required. The network port of the source Oracle database.
        &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
          &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
        },
        &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above.
          &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
          &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
          &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
          &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
        },
        &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity configured on service project. # Static Service IP connectivity.
        },
        &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
      },
      &quot;postgresql&quot;: { # Specifies connection parameters required specifically for PostgreSQL databases. # A PostgreSQL database connection profile.
        &quot;alloydbClusterId&quot;: &quot;A String&quot;, # Optional. If the destination is an AlloyDB database, use this field to provide the AlloyDB cluster ID.
        &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
        &quot;database&quot;: &quot;A String&quot;, # Optional. The name of the specific database within the host.
        &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source PostgreSQL database.
        &quot;networkArchitecture&quot;: &quot;A String&quot;, # Output only. If the source is a Cloud SQL database, this field indicates the network architecture it&#x27;s associated with.
        &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
        &quot;port&quot;: 42, # Required. The network port of the source PostgreSQL database.
        &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private service connect connectivity.
          &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
        },
        &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
          &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
          &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
          &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
          &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
        },
        &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static ip connectivity data (default, no additional details needed).
        },
        &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
      },
      &quot;provider&quot;: &quot;A String&quot;, # The database provider.
      &quot;role&quot;: &quot;A String&quot;, # Optional. The connection profile role.
      &quot;satisfiesPzi&quot;: True or False, # Output only. Reserved for future use.
      &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
      &quot;sqlserver&quot;: { # Specifies connection parameters required specifically for SQL Server databases. # Connection profile for a SQL Server data source.
        &quot;backups&quot;: { # Specifies the backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server. # The backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server.
          &quot;gcsBucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket that stores backups for all replicated databases.
          &quot;gcsPrefix&quot;: &quot;A String&quot;, # Optional. Cloud Storage path inside the bucket that stores backups.
        },
        &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
        &quot;cloudSqlProjectId&quot;: &quot;A String&quot;, # Optional. The project id of the Cloud SQL instance. If not provided, the project id of the connection profile will be used.
        &quot;database&quot;: &quot;A String&quot;, # Required. The name of the specific database within the host.
        &quot;dbmPort&quot;: 42, # Optional. The Database Mirroring (DBM) port of the source SQL Server instance.
        &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source SQL Server database.
        &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
        &quot;port&quot;: 42, # Required. The network port of the source SQL Server database.
        &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
          &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
        },
        &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private Service Connect connectivity.
          &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
        },
        &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
          &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
          &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
          &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
          &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
        },
        &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static IP connectivity data (default, no additional details needed).
        },
        &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
      },
      &quot;state&quot;: &quot;A String&quot;, # The current connection profile state (e.g. DRAFT, READY, or FAILED).
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
    },
  ],
  &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()</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, requestId=None, skipValidation=None, updateMask=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Update the configuration of a single connection profile.

Args:
  name: string, The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}. (required)
  body: object, The request body.
    The object takes the form of:

{ # A connection profile definition.
  &quot;alloydb&quot;: { # Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster. # An AlloyDB cluster connection profile.
    &quot;clusterId&quot;: &quot;A String&quot;, # Required. The AlloyDB cluster ID that this connection profile is associated with.
    &quot;settings&quot;: { # Settings for creating an AlloyDB cluster. # Immutable. Metadata used to create the destination AlloyDB cluster.
      &quot;databaseVersion&quot;: &quot;A String&quot;, # Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used.
      &quot;encryptionConfig&quot;: { # EncryptionConfig describes the encryption config of a cluster that is encrypted with a CMEK (customer-managed encryption key). # Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]
      },
      &quot;initialUser&quot;: { # The username/password for a database user. Used for specifying initial users at cluster creation time. # Required. Input only. Initial user to setup during cluster creation. Required.
        &quot;password&quot;: &quot;A String&quot;, # The initial password for the user.
        &quot;passwordSet&quot;: True or False, # Output only. Indicates if the initial_user.password field has been set.
        &quot;user&quot;: &quot;A String&quot;, # The database username.
      },
      &quot;labels&quot;: { # Labels for the AlloyDB cluster created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;primaryInstanceSettings&quot;: { # Settings for the cluster&#x27;s primary instance # Settings for the cluster&#x27;s primary instance
        &quot;databaseFlags&quot;: { # Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;id&quot;: &quot;A String&quot;, # Required. The ID of the AlloyDB primary instance. The ID must satisfy the regex expression &quot;[a-z0-9-]+&quot;.
        &quot;instanceNetworkConfig&quot;: { # Metadata related to instance level network configuration. # Optional. Metadata related to instance level network configuration.
          &quot;authorizedExternalNetworks&quot;: [ # Optional. A list of external network authorized to access this instance.
            { # AuthorizedNetwork contains metadata for an authorized network.
              &quot;cidrRange&quot;: &quot;A String&quot;, # Optional. CIDR range for one authorzied network of the instance.
            },
          ],
          &quot;enableOutboundPublicIp&quot;: True or False, # Optional. Enabling an outbound public IP address to support a database server sending requests out into the internet.
          &quot;enablePublicIp&quot;: True or False, # Optional. Enabling public ip for the instance.
        },
        &quot;labels&quot;: { # Labels for the AlloyDB primary instance created by DMS. An object containing a list of &#x27;key&#x27;, &#x27;value&#x27; pairs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;machineConfig&quot;: { # MachineConfig describes the configuration of a machine. # Configuration for the machines that host the underlying database engine.
          &quot;cpuCount&quot;: 42, # The number of CPU&#x27;s in the VM instance.
          &quot;machineType&quot;: &quot;A String&quot;, # Optional. Machine type of the VM instance. E.g. &quot;n2-highmem-4&quot;, &quot;n2-highmem-8&quot;, &quot;c4a-highmem-4-lssd&quot;. cpu_count must match the number of vCPUs in the machine type.
        },
        &quot;outboundPublicIpAddresses&quot;: [ # Output only. All outbound public IP addresses configured for the instance.
          &quot;A String&quot;,
        ],
        &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The private IP address for the Instance. This is the connection endpoint for an end-user application.
      },
      &quot;vpcNetwork&quot;: &quot;A String&quot;, # Required. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster. It is specified in the form: &quot;projects/{project_number}/global/networks/{network_id}&quot;. This is required to create a cluster.
    },
  },
  &quot;cloudsql&quot;: { # Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance. # A CloudSQL database connection profile.
    &quot;additionalPublicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s additional (outgoing) public IP. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # Output only. The Cloud SQL instance ID that this connection profile is associated with.
    &quot;privateIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s private IP.
    &quot;publicIp&quot;: &quot;A String&quot;, # Output only. The Cloud SQL database instance&#x27;s public IP.
    &quot;settings&quot;: { # Settings for creating a Cloud SQL database instance. # Immutable. Metadata used to create the destination Cloud SQL database.
      &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is &#x27;RUNNABLE&#x27;. Valid values: &#x27;ALWAYS&#x27;: The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives.
      &quot;autoStorageIncrease&quot;: True or False, # [default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB.
      &quot;availabilityType&quot;: &quot;A String&quot;, # Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available).
      &quot;cmekKeyName&quot;: &quot;A String&quot;, # The KMS key name used for the csql instance.
      &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL default instance level collation.
      &quot;dataCacheConfig&quot;: { # Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation. # Optional. Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation.
        &quot;dataCacheEnabled&quot;: True or False, # Optional. Whether data cache is enabled for the instance.
      },
      &quot;dataDiskProvisionedIops&quot;: &quot;A String&quot;, # Optional. Provisioned number of I/O operations per second for the data disk. This field is only used for hyperdisk-balanced disk types.
      &quot;dataDiskProvisionedThroughput&quot;: &quot;A String&quot;, # Optional. Provisioned throughput measured in MiB per second for the data disk. This field is only used for hyperdisk-balanced disk types.
      &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The storage capacity available to the database, in GB. The minimum (and default) size is 10GB.
      &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of storage: `PD_SSD` (default) or `PD_HDD` or `HYPERDISK_BALANCED`.
      &quot;databaseFlags&quot;: { # The database flags passed to the Cloud SQL instance at startup. An object containing a list of &quot;key&quot;: value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. Deprecated. Use database_version_name instead.
      &quot;databaseVersionName&quot;: &quot;A String&quot;, # Optional. The database engine type and version name.
      &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the given Cloud SQL instance.
      &quot;ipConfig&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
        &quot;allocatedIpRange&quot;: &quot;A String&quot;, # Optional. The name of the allocated IP address range for the private IP Cloud SQL instance. This name refers to an already allocated IP range address. If set, the instance IP address will be created in the allocated range. Note that this IP address range can&#x27;t be modified after the instance is created. If you change the VPC when configuring connectivity settings for the migration job, this field is not relevant.
        &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as &#x27;slash&#x27; notation (e.g. `192.168.100.0/24`).
          { # An entry for an Access Control list.
            &quot;expireTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`.
            &quot;label&quot;: &quot;A String&quot;, # A label to identify this entry.
            &quot;ttl&quot;: &quot;A String&quot;, # Input only. The time-to-leave of this access control entry.
            &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
          },
        ],
        &quot;enableIpv4&quot;: True or False, # Whether the instance should be assigned an IPv4 address or not.
        &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set.
        &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP should be enforced or not.
      },
      &quot;rootPassword&quot;: &quot;A String&quot;, # Input only. Initial root password.
      &quot;rootPasswordSet&quot;: True or False, # Output only. Indicates If this connection profile root password is stored.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # Optional. The Google Cloud Platform zone where the failover Cloud SQL database instance is located. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available).
      &quot;sourceId&quot;: &quot;A String&quot;, # The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`
      &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
      &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances) or `db-custom-1-3840` (PostgreSQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings).
      &quot;userLabels&quot;: { # The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;18kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;zone&quot;: &quot;A String&quot;, # The Google Cloud Platform zone where your Cloud SQL database instance is located.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
  &quot;displayName&quot;: &quot;A String&quot;, # The connection profile display name.
  &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). # Output only. The error details in case of state FAILED.
    &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;labels&quot;: { # The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1.3kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mysql&quot;: { # Specifies connection parameters required specifically for MySQL databases. # A MySQL database connection profile.
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source MySQL database.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
    &quot;port&quot;: 42, # Required. The network port of the source MySQL database.
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;name&quot;: &quot;A String&quot;, # The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.
  &quot;oracle&quot;: { # Specifies connection parameters required specifically for Oracle databases. # An Oracle database connection profile.
    &quot;databaseService&quot;: &quot;A String&quot;, # Required. Database service for the Oracle connection.
    &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source Oracle database.
    &quot;oracleAsmConfig&quot;: { # Configuration for Oracle Automatic Storage Management (ASM) connection. # Optional. Configuration for Oracle ASM connection.
      &quot;asmService&quot;: &quot;A String&quot;, # Required. ASM service name for the Oracle ASM connection.
      &quot;hostname&quot;: &quot;A String&quot;, # Required. Hostname for the Oracle ASM connection.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. Password for the Oracle ASM connection.
      &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
      &quot;port&quot;: 42, # Required. Port for the Oracle ASM connection.
      &quot;ssl&quot;: { # SSL configuration information. # Optional. SSL configuration for the Oracle connection.
        &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
        &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
        &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
      },
      &quot;username&quot;: &quot;A String&quot;, # Required. Username for the Oracle ASM connection.
    },
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
    &quot;port&quot;: 42, # Required. The network port of the source Oracle database.
    &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticServiceIpConnectivity&quot;: { # Static IP address connectivity configured on service project. # Static Service IP connectivity.
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;postgresql&quot;: { # Specifies connection parameters required specifically for PostgreSQL databases. # A PostgreSQL database connection profile.
    &quot;alloydbClusterId&quot;: &quot;A String&quot;, # Optional. If the destination is an AlloyDB database, use this field to provide the AlloyDB cluster ID.
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;database&quot;: &quot;A String&quot;, # Optional. The name of the specific database within the host.
    &quot;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source PostgreSQL database.
    &quot;networkArchitecture&quot;: &quot;A String&quot;, # Output only. If the source is a Cloud SQL database, this field indicates the network architecture it&#x27;s associated with.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates If this connection profile password is stored.
    &quot;port&quot;: 42, # Required. The network port of the source PostgreSQL database.
    &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private service connect connectivity.
      &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static ip connectivity data (default, no additional details needed).
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;provider&quot;: &quot;A String&quot;, # The database provider.
  &quot;role&quot;: &quot;A String&quot;, # Optional. The connection profile role.
  &quot;satisfiesPzi&quot;: True or False, # Output only. Reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
  &quot;sqlserver&quot;: { # Specifies connection parameters required specifically for SQL Server databases. # Connection profile for a SQL Server data source.
    &quot;backups&quot;: { # Specifies the backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server. # The backup details in Cloud Storage for homogeneous migration to Cloud SQL for SQL Server.
      &quot;gcsBucket&quot;: &quot;A String&quot;, # Required. The Cloud Storage bucket that stores backups for all replicated databases.
      &quot;gcsPrefix&quot;: &quot;A String&quot;, # Optional. Cloud Storage path inside the bucket that stores backups.
    },
    &quot;cloudSqlId&quot;: &quot;A String&quot;, # If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
    &quot;cloudSqlProjectId&quot;: &quot;A String&quot;, # Optional. The project id of the Cloud SQL instance. If not provided, the project id of the connection profile will be used.
    &quot;database&quot;: &quot;A String&quot;, # Required. The name of the specific database within the host.
    &quot;dbmPort&quot;: 42, # Optional. The Database Mirroring (DBM) port of the source SQL Server instance.
    &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;host&quot;: &quot;A String&quot;, # Required. The IP or hostname of the source SQL Server database.
    &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
    &quot;passwordSet&quot;: True or False, # Output only. Indicates whether a new password is included in the request.
    &quot;port&quot;: 42, # Required. The network port of the source SQL Server database.
    &quot;privateConnectivity&quot;: { # Private Connectivity. # Private connectivity.
      &quot;privateConnection&quot;: &quot;A String&quot;, # Required. The resource name (URI) of the private connection.
    },
    &quot;privateServiceConnectConnectivity&quot;: { # [Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments) # Private Service Connect connectivity.
      &quot;serviceAttachment&quot;: &quot;A String&quot;, # Required. A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}
    },
    &quot;ssl&quot;: { # SSL configuration information. # SSL configuration for the destination to connect to the source database.
      &quot;caCertificate&quot;: &quot;A String&quot;, # Required. Input only. The x509 PEM-encoded certificate of the CA that signed the source database server&#x27;s certificate. The replica will use this certificate to verify it&#x27;s connecting to the right host.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # Input only. The x509 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; field is mandatory.
      &quot;clientKey&quot;: &quot;A String&quot;, # Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the &#x27;client_certificate&#x27; field is mandatory.
      &quot;sslFlags&quot;: { # Optional. SSL flags used for establishing SSL connection to the source database. Only source specific flags are supported. An object containing a list of &quot;key&quot;: &quot;value&quot; pairs. Example: { &quot;server_certificate_hostname&quot;: &quot;server.com&quot;}.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Optional. The ssl config type according to &#x27;client_key&#x27;, &#x27;client_certificate&#x27; and &#x27;ca_certificate&#x27;.
    },
    &quot;staticIpConnectivity&quot;: { # The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required. # Static IP connectivity data (default, no additional details needed).
    },
    &quot;username&quot;: &quot;A String&quot;, # Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
  },
  &quot;state&quot;: &quot;A String&quot;, # The current connection profile state (e.g. DRAFT, READY, or FAILED).
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. A timestamp in RFC3339 UTC &quot;Zulu&quot; format, accurate to nanoseconds. Example: &quot;2014-10-02T15:01:23.045123456Z&quot;.
}

  requestId: string, Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
  skipValidation: boolean, Optional. Update the connection profile without validating it. The default is false. Only supported for Oracle connection profiles.
  updateMask: string, Required. Field mask is used to specify the fields to be overwritten by the update in the conversion workspace resource.
  validateOnly: boolean, Optional. Only validate the connection profile, but don&#x27;t update any resources. The default is false. Only supported for Oracle connection profiles.
  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, successful response of the operation. 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="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `SetIamPolicy` method.
  &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them.
    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
      { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.
        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
          { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
              &quot;A String&quot;,
            ],
            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
          },
        ],
        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
      },
    ],
    &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
      { # Associates `members`, or principals, with a `role`.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
        },
        &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  },
  &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: &quot;bindings, etag&quot;`
}

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

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
  &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
    { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.
      &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
        { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
          &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
            &quot;A String&quot;,
          ],
          &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
        },
      ],
      &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
    },
  ],
  &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
    { # Associates `members`, or principals, with a `role`.
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
  <pre>Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may &quot;fail open&quot; without warning.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `TestIamPermissions` method.
  &quot;permissions&quot;: [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
    &quot;A String&quot;,
  ],
}

  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 `TestIamPermissions` method.
  &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>