<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="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.instances.html">instances</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#ListServerCertificates">ListServerCertificates(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all versions of server certificates and certificate authorities (CAs) for the specified instance. There can be up to three sets of certs listed: the certificate that is currently in use, a future that has been added but not yet used to sign a certificate, and a certificate that has been rotated out. For instances not using Certificate Authority Service (CAS) server CA, use ListServerCas instead.</p>
<p class="toc_element">
  <code><a href="#RotateServerCertificate">RotateServerCertificate(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rotates the server certificate version to one previously added with the addServerCertificate method. For instances not using Certificate Authority Service (CAS) server CA, use RotateServerCa instead.</p>
<p class="toc_element">
  <code><a href="#acquireSsrsLease">acquireSsrsLease(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Acquire a lease for the setup of SQL Server Reporting Services (SSRS).</p>
<p class="toc_element">
  <code><a href="#addServerCa">addServerCa(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Adds a new trusted Certificate Authority (CA) version for the specified instance. Required to prepare for a certificate rotation. If a CA version was previously added but never used in a certificate rotation, this operation replaces that version. There cannot be more than one CA version waiting to be rotated in. For instances that have enabled Certificate Authority Service (CAS) based server CA, use AddServerCertificate to add a new server certificate.</p>
<p class="toc_element">
  <code><a href="#addServerCertificate">addServerCertificate(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Add a new trusted server certificate version for the specified instance using Certificate Authority Service (CAS) server CA. Required to prepare for a certificate rotation. If a server certificate version was previously added but never used in a certificate rotation, this operation replaces that version. There cannot be more than one certificate version waiting to be rotated in. For instances not using CAS server CA, use AddServerCa instead.</p>
<p class="toc_element">
  <code><a href="#clone">clone(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a Cloud SQL instance as a clone of the source instance. Using this operation might cause your instance to restart.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(project, instance, enableFinalBackup=None, finalBackupDescription=None, finalBackupExpiryTime=None, finalBackupTtlDays=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a Cloud SQL instance.</p>
<p class="toc_element">
  <code><a href="#demote">demote(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Demotes an existing standalone instance to be a Cloud SQL read replica for an external database server.</p>
<p class="toc_element">
  <code><a href="#demoteMaster">demoteMaster(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Demotes the stand-alone instance to be a Cloud SQL read replica for an external database server.</p>
<p class="toc_element">
  <code><a href="#executeSql">executeSql(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Execute SQL statements.</p>
<p class="toc_element">
  <code><a href="#export">export(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file.</p>
<p class="toc_element">
  <code><a href="#failover">failover(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Initiates a manual failover of a high availability (HA) primary instance to a standby instance, which becomes the primary instance. Users are then rerouted to the new primary. For more information, see the [Overview of high availability](https://cloud.google.com/sql/docs/mysql/high-availability) page in the Cloud SQL documentation. If using Legacy HA (MySQL only), this causes the instance to failover to its failover replica instance.</p>
<p class="toc_element">
  <code><a href="#get">get(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a resource containing information about a Cloud SQL instance.</p>
<p class="toc_element">
  <code><a href="#import_">import_(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Imports data into a Cloud SQL instance from a SQL dump or CSV file in Cloud Storage.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Cloud SQL instance.</p>
<p class="toc_element">
  <code><a href="#list">list(project, filter=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists instances under a given project.</p>
<p class="toc_element">
  <code><a href="#listServerCas">listServerCas(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all of the trusted Certificate Authorities (CAs) for the specified instance. There can be up to three CAs listed: the CA that was used to sign the certificate that is currently in use, a CA that has been added but not yet used to sign a certificate, and a CA used to sign a certificate that has previously rotated out.</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(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Partially updates settings of a Cloud SQL instance by merging the request with the current configuration. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#pointInTimeRestore">pointInTimeRestore(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Point in time restore for an instance managed by Google Cloud Backup and Disaster Recovery.</p>
<p class="toc_element">
  <code><a href="#preCheckMajorVersionUpgrade">preCheckMajorVersionUpgrade(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Execute MVU Pre-checks</p>
<p class="toc_element">
  <code><a href="#promoteReplica">promoteReplica(project, instance, failover=None, x__xgafv=None)</a></code></p>
<p class="firstline">Promotes the read replica instance to be an independent Cloud SQL primary instance. Using this operation might cause your instance to restart.</p>
<p class="toc_element">
  <code><a href="#reencrypt">reencrypt(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Reencrypt CMEK instance with latest key version.</p>
<p class="toc_element">
  <code><a href="#releaseSsrsLease">releaseSsrsLease(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Release a lease for the setup of SQL Server Reporting Services (SSRS).</p>
<p class="toc_element">
  <code><a href="#resetSslConfig">resetSslConfig(project, instance, mode=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes all client certificates and generates a new server SSL certificate for the instance.</p>
<p class="toc_element">
  <code><a href="#restart">restart(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Restarts a Cloud SQL instance.</p>
<p class="toc_element">
  <code><a href="#restoreBackup">restoreBackup(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Restores a backup of a Cloud SQL instance. Using this operation might cause your instance to restart.</p>
<p class="toc_element">
  <code><a href="#rotateServerCa">rotateServerCa(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rotates the server certificate to one signed by the Certificate Authority (CA) version previously added with the addServerCA method. For instances that have enabled Certificate Authority Service (CAS) based server CA, use RotateServerCertificate to rotate the server certificate.</p>
<p class="toc_element">
  <code><a href="#startReplica">startReplica(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Starts the replication in the read replica instance.</p>
<p class="toc_element">
  <code><a href="#stopReplica">stopReplica(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Stops the replication in the read replica instance.</p>
<p class="toc_element">
  <code><a href="#switchover">switchover(project, instance, dbTimeout=None, x__xgafv=None)</a></code></p>
<p class="firstline">Switches over from the primary instance to the DR replica instance.</p>
<p class="toc_element">
  <code><a href="#truncateLog">truncateLog(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Truncate MySQL general and slow query log tables MySQL only.</p>
<p class="toc_element">
  <code><a href="#update">update(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates settings of a Cloud SQL instance. Using this operation might cause your instance to restart.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="ListServerCertificates">ListServerCertificates(project, instance, x__xgafv=None)</code>
  <pre>Lists all versions of server certificates and certificate authorities (CAs) for the specified instance. There can be up to three sets of certs listed: the certificate that is currently in use, a future that has been added but not yet used to sign a certificate, and a certificate that has been rotated out. For instances not using Certificate Authority Service (CAS) server CA, use ListServerCas instead.

Args:
  project: string, Required. Project ID of the project that contains the instance. (required)
  instance: string, Required. Cloud SQL instance ID. This does not include the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Instances ListServerCertificates response.
  &quot;activeVersion&quot;: &quot;A String&quot;, # The `sha1_fingerprint` of the active certificate from `server_certs`.
  &quot;caCerts&quot;: [ # List of server CA certificates for the instance.
    { # SslCerts Resource
      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instancesListServerCertificates`.
  &quot;serverCerts&quot;: [ # List of server certificates for the instance, signed by the corresponding CA from the `ca_certs` list.
    { # SslCerts Resource
      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="RotateServerCertificate">RotateServerCertificate(project, instance, body=None, x__xgafv=None)</code>
  <pre>Rotates the server certificate version to one previously added with the addServerCertificate method. For instances not using Certificate Authority Service (CAS) server CA, use RotateServerCa instead.

Args:
  project: string, Required. Project ID of the project that contains the instance. (required)
  instance: string, Required. Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Rotate server certificate request.
  &quot;rotateServerCertificateContext&quot;: { # Instance rotate server certificate context. # Optional. Contains details about the rotate server certificate operation.
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#rotateServerCertificateContext`.
    &quot;nextVersion&quot;: &quot;A String&quot;, # The fingerprint of the next version to be rotated to. If left unspecified, will be rotated to the most recently added server certificate version.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="acquireSsrsLease">acquireSsrsLease(project, instance, body=None, x__xgafv=None)</code>
  <pre>Acquire a lease for the setup of SQL Server Reporting Services (SSRS).

Args:
  project: string, Required. Project ID of the project that contains the instance (Example: project-id). (required)
  instance: string, Required. Cloud SQL instance ID. This doesn&#x27;t include the project ID. It&#x27;s composed of lowercase letters, numbers, and hyphens, and it must start with a letter. The total length must be 98 characters or less (Example: instance-id). (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to acquire a lease for SSRS.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # Contains details about the acquire SSRS lease operation.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
}

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

Returns:
  An object of the form:

    { # Response for the acquire SSRS lease request.
  &quot;operationId&quot;: &quot;A String&quot;, # The unique identifier for this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="addServerCa">addServerCa(project, instance, x__xgafv=None)</code>
  <pre>Adds a new trusted Certificate Authority (CA) version for the specified instance. Required to prepare for a certificate rotation. If a CA version was previously added but never used in a certificate rotation, this operation replaces that version. There cannot be more than one CA version waiting to be rotated in. For instances that have enabled Certificate Authority Service (CAS) based server CA, use AddServerCertificate to add a new server certificate.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="addServerCertificate">addServerCertificate(project, instance, x__xgafv=None)</code>
  <pre>Add a new trusted server certificate version for the specified instance using Certificate Authority Service (CAS) server CA. Required to prepare for a certificate rotation. If a server certificate version was previously added but never used in a certificate rotation, this operation replaces that version. There cannot be more than one certificate version waiting to be rotated in. For instances not using CAS server CA, use AddServerCa instead.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="clone">clone(project, instance, body=None, x__xgafv=None)</code>
  <pre>Creates a Cloud SQL instance as a clone of the source instance. Using this operation might cause your instance to restart.

Args:
  project: string, Required. Project ID of the source as well as the clone Cloud SQL instance. (required)
  instance: string, Required. The ID of the Cloud SQL instance to be cloned (source). This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Database instance clone request.
  &quot;cloneContext&quot;: { # Database instance clone context. # Required. Contains details about the clone operation.
    &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the cloned instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?. Reserved for future use.
    &quot;binLogCoordinates&quot;: { # Binary log coordinates. # Binary log coordinates, if specified, identify the position up to which the source instance is cloned. If not specified, the source instance is cloned up to the most recent binary log coordinates.
      &quot;binLogFileName&quot;: &quot;A String&quot;, # Name of the binary log file for a Cloud SQL instance.
      &quot;binLogPosition&quot;: &quot;A String&quot;, # Position (offset) within the binary log file.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#binLogCoordinates`.
    },
    &quot;databaseNames&quot;: [ # (SQL Server only) Clone only the specified databases from the source instance. Clone all databases if empty.
      &quot;A String&quot;,
    ],
    &quot;destinationInstanceName&quot;: &quot;A String&quot;, # Required. Name of the Cloud SQL instance to be created as a clone.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#cloneContext`.
    &quot;pitrTimestampMs&quot;: &quot;A String&quot;, # Reserved for future use.
    &quot;pointInTime&quot;: &quot;A String&quot;, # Timestamp, if specified, identifies the time to which the source instance is cloned.
    &quot;preferredSecondaryZone&quot;: &quot;A String&quot;, # Optional. Copy clone and point-in-time recovery clone of a regional instance in the specified zones. If not specified, clone to the same secondary zone as the source instance. This value cannot be the same as the preferred_zone field. This field applies to all DB types.
    &quot;preferredZone&quot;: &quot;A String&quot;, # Optional. Copy clone and point-in-time recovery clone of an instance to the specified zone. If no zone is specified, clone to the same primary zone as the source instance. This field applies to all DB types.
    &quot;sourceInstanceDeletionTime&quot;: &quot;A String&quot;, # The timestamp used to identify the time when the source instance is deleted. If this instance is deleted, then you must set the timestamp.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(project, instance, enableFinalBackup=None, finalBackupDescription=None, finalBackupExpiryTime=None, finalBackupTtlDays=None, x__xgafv=None)</code>
  <pre>Deletes a Cloud SQL instance.

Args:
  project: string, Project ID of the project that contains the instance to be deleted. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  enableFinalBackup: boolean, Flag to opt-in for final backup. By default, it is turned off.
  finalBackupDescription: string, Optional. The description of the final backup.
  finalBackupExpiryTime: string, Optional. Final Backup expiration time. Timestamp in UTC of when this resource is considered expired.
  finalBackupTtlDays: string, Optional. Retention period of the final backup.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="demote">demote(project, instance, body=None, x__xgafv=None)</code>
  <pre>Demotes an existing standalone instance to be a Cloud SQL read replica for an external database server.

Args:
  project: string, Required. ID of the project that contains the instance. (required)
  instance: string, Required. Cloud SQL instance name. (required)
  body: object, The request body.
    The object takes the form of:

{ # This request is used to demote an existing standalone instance to be a Cloud SQL read replica for an external database server.
  &quot;demoteContext&quot;: { # This context is used to demote an existing standalone instance to be a Cloud SQL read replica for an external database server. # Required. Contains details about the demote operation.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#demoteContext`.
    &quot;sourceRepresentativeInstanceName&quot;: &quot;A String&quot;, # Required. The name of the instance which acts as the on-premises primary instance in the replication setup.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="demoteMaster">demoteMaster(project, instance, body=None, x__xgafv=None)</code>
  <pre>Demotes the stand-alone instance to be a Cloud SQL read replica for an external database server.

Args:
  project: string, ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Database demote primary instance request.
  &quot;demoteMasterContext&quot;: { # Database instance demote primary instance context. # Contains details about the demoteMaster operation.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#demoteMasterContext`.
    &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as on-premises primary instance in the replication setup.
    &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the on-premises primary instance. # Configuration specific to read-replicas replicating from the on-premises primary instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#demoteMasterConfiguration`.
      &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
        &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
        &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate. The format of the replica&#x27;s private key can be either PKCS #1 or PKCS #8.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#demoteMasterMysqlReplicaConfiguration`.
        &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
        &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
      },
    },
    &quot;skipReplicationSetup&quot;: True or False, # Flag to skip replication setup on the instance.
    &quot;verifyGtidConsistency&quot;: True or False, # Verify the GTID consistency for demote operation. Default value: `True`. Setting this flag to `false` enables you to bypass the GTID consistency check between on-premises primary instance and Cloud SQL instance during the demotion operation but also exposes you to the risk of future replication failures. Change the value only if you know the reason for the GTID divergence and are confident that doing so will not cause any replication issues.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="executeSql">executeSql(project, instance, body=None, x__xgafv=None)</code>
  <pre>Execute SQL statements.

Args:
  project: string, Required. Project ID of the project that contains the instance. (required)
  instance: string, Required. Database instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request payload used to execute SQL statements.
  &quot;autoIamAuthn&quot;: True or False, # Optional. When set to true, the API caller identity associated with the request is used for database authentication. The API caller must be an IAM user in the database.
  &quot;database&quot;: &quot;A String&quot;, # Optional. Name of the database on which the statement will be executed.
  &quot;partialResultMode&quot;: &quot;A String&quot;, # Optional. Controls how the API should respond when the SQL execution result is incomplete due to the size limit or another error. The default mode is to throw an error.
  &quot;rowLimit&quot;: &quot;A String&quot;, # Optional. The maximum number of rows returned per SQL statement.
  &quot;sqlStatement&quot;: &quot;A String&quot;, # Required. SQL statements to run on the database. It can be a single statement or a sequence of statements separated by semicolons.
  &quot;user&quot;: &quot;A String&quot;, # Optional. The name of an existing database user to connect to the database. When `auto_iam_authn` is set to true, this field is ignored and the API caller&#x27;s IAM user is used.
}

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

Returns:
  An object of the form:

    { # Execute SQL statements response.
  &quot;messages&quot;: [ # A list of notices and warnings generated during query execution. For PostgreSQL, this includes all notices and warnings. For MySQL, this includes warnings generated by the last executed statement. To retrieve all warnings for a multi-statement query, `SHOW WARNINGS` must be executed after each statement.
    { # Represents a notice or warning message from the database.
      &quot;message&quot;: &quot;A String&quot;, # The full message string. For PostgreSQL, this is a formatted string that may include severity, code, and the notice/warning message. For MySQL, this contains the warning message.
      &quot;severity&quot;: &quot;A String&quot;, # The severity of the message (e.g., &quot;NOTICE&quot; for PostgreSQL, &quot;WARNING&quot; for MySQL).
    },
  ],
  &quot;metadata&quot;: { # The additional metadata information regarding the execution of the SQL statements. # The additional metadata information regarding the execution of the SQL statements.
    &quot;sqlStatementExecutionTime&quot;: &quot;A String&quot;, # The time taken to execute the SQL statements.
  },
  &quot;results&quot;: [ # The list of results after executing all the SQL statements.
    { # QueryResult contains the result of executing a single SQL statement.
      &quot;columns&quot;: [ # List of columns included in the result. This also includes the data type of the column.
        { # Contains the name and datatype of a column.
          &quot;name&quot;: &quot;A String&quot;, # Name of the column.
          &quot;type&quot;: &quot;A String&quot;, # Datatype of the column.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # Message related to the SQL execution result.
      &quot;partialResult&quot;: True or False, # Set to true if the SQL execution&#x27;s result is truncated due to size limits or an error retrieving results.
      &quot;rows&quot;: [ # Rows returned by the SQL statement.
        { # Contains the values for a row.
          &quot;values&quot;: [ # The values for the row.
            { # The cell value of the table.
              &quot;nullValue&quot;: True or False, # If cell value is null, then this flag will be set to true.
              &quot;value&quot;: &quot;A String&quot;, # The cell value in string format.
            },
          ],
        },
      ],
      &quot;status&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). # If results were truncated due to an error, details of that error.
        &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;status&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). # Contains the error from the database if the SQL execution 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.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="export">export(project, instance, body=None, x__xgafv=None)</code>
  <pre>Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file.

Args:
  project: string, Project ID of the project that contains the instance to be exported. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Database instance export request.
  &quot;exportContext&quot;: { # Database instance export context. # Contains details about the export operation.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="failover">failover(project, instance, body=None, x__xgafv=None)</code>
  <pre>Initiates a manual failover of a high availability (HA) primary instance to a standby instance, which becomes the primary instance. Users are then rerouted to the new primary. For more information, see the [Overview of high availability](https://cloud.google.com/sql/docs/mysql/high-availability) page in the Cloud SQL documentation. If using Legacy HA (MySQL only), this causes the instance to failover to its failover replica instance.

Args:
  project: string, ID of the project that contains the read replica. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Instance failover request.
  &quot;failoverContext&quot;: { # Database instance failover context. # Failover Context.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#failoverContext`.
    &quot;settingsVersion&quot;: &quot;A String&quot;, # The current settings version of this instance. Request will be rejected if this version doesn&#x27;t match the current settings version.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, instance, x__xgafv=None)</code>
  <pre>Retrieves a resource containing information about a Cloud SQL instance.

Args:
  project: string, Required. Project ID of the project that contains the instance. (required)
  instance: string, Required. Database instance ID. This does not include the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Cloud SQL instance resource.
  &quot;availableMaintenanceVersions&quot;: [ # Output only. List all maintenance versions applicable on the instance
    &quot;A String&quot;,
  ],
  &quot;backendType&quot;: &quot;A String&quot;, # The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.
  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.
  &quot;databaseInstalledVersion&quot;: &quot;A String&quot;, # Output only. Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.
  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.
  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionConfiguration`.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
  },
  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionStatus`.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
  },
  &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The dns name of the instance.
  &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this instance.
    { # DNS metadata.
      &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
      &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
      &quot;name&quot;: &quot;A String&quot;, # The DNS name.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.
  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
  },
  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.
  &quot;geminiConfig&quot;: { # Gemini instance configuration. # Gemini instance configuration.
    &quot;activeQueryEnabled&quot;: True or False, # Output only. Whether the active query is enabled.
    &quot;entitled&quot;: True or False, # Output only. Whether Gemini is enabled.
    &quot;flagRecommenderEnabled&quot;: True or False, # Output only. Whether the flag recommender is enabled.
    &quot;googleVacuumMgmtEnabled&quot;: True or False, # Output only. Whether the vacuum management is enabled.
    &quot;indexAdvisorEnabled&quot;: True or False, # Output only. Whether the index advisor is enabled.
    &quot;oomSessionCancelEnabled&quot;: True or False, # Output only. Whether canceling the out-of-memory (OOM) session is enabled.
  },
  &quot;includeReplicasForMajorVersionUpgrade&quot;: True or False, # Input only. Determines whether an in-place major version upgrade of replicas happens when an in-place major version upgrade of a primary instance is initiated.
  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type.
  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
    { # Database instance IP mapping
      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
    },
  ],
  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instance`.
  &quot;maintenanceVersion&quot;: &quot;A String&quot;, # The current software version on the instance.
  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
  &quot;nodeCount&quot;: 42, # The number of read pool nodes in a read pool.
  &quot;nodes&quot;: [ # Output only. Entries containing information about each read pool node of the read pool.
    { # Details of a single read pool node of a read pool.
      &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The DNS name of the read pool node.
      &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this read pool node.
        { # DNS metadata.
          &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
          &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
          &quot;name&quot;: &quot;A String&quot;, # The DNS name.
        },
      ],
      &quot;gceZone&quot;: &quot;A String&quot;, # Output only. The zone of the read pool node.
      &quot;ipAddresses&quot;: [ # Output only. Mappings containing IP addresses that can be used to connect to the read pool node.
        { # Database instance IP mapping
          &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
          &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
          &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the read pool node, to be used for retrieving metrics and logs.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the read pool node.
    },
  ],
  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#onPremisesConfiguration`.
    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
    &quot;selectedObjects&quot;: [ # Optional. A list of objects that the user selects for replication from an external source instance.
      { # A list of objects that the user selects for replication from an external source instance.
        &quot;database&quot;: &quot;A String&quot;, # Required. The name of the database to migrate.
      },
    ],
    &quot;sourceInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to Cloud SQL instance if the source is Cloud SQL.
      &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced. This does not include the project ID.
      &quot;project&quot;: &quot;A String&quot;, # The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it.
      &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
    },
    &quot;sslOption&quot;: &quot;A String&quot;, # Optional. SSL option for replica connection to the on-premises source.
    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
  },
  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:
    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
  },
  &quot;primaryDnsName&quot;: &quot;A String&quot;, # Output only. DEPRECATED: please use write_endpoint instead.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
  &quot;pscServiceAttachmentLink&quot;: &quot;A String&quot;, # Output only. The link to service attachment of PSC instance.
  &quot;region&quot;: &quot;A String&quot;, # The geographical region of the Cloud SQL instance. It can be one of the [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) where Cloud SQL operates: For example, `asia-east1`, `europe-west1`, and `us-central1`. The default value is `us-central1`.
  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
    &quot;cascadableReplica&quot;: True or False, # Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#replicaConfiguration`.
    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#mysqlReplicaConfiguration`.
      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
    },
  },
  &quot;replicaNames&quot;: [ # The replicas of the instance.
    &quot;A String&quot;,
  ],
  &quot;replicationCluster&quot;: { # A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL. # Optional. A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL.
    &quot;drReplica&quot;: True or False, # Output only. Read-only field that indicates whether the replica is a DR replica. This field is not set if the instance is a primary instance.
    &quot;failoverDrReplicaName&quot;: &quot;A String&quot;, # Optional. If the instance is a primary instance, then this field identifies the disaster recovery (DR) replica. A DR replica is an optional configuration for Enterprise Plus edition instances. If the instance is a read replica, then the field is not set. Set this field to a replica name to designate a DR replica for a primary instance. Remove the replica name to remove the DR replica designation.
    &quot;psaWriteEndpoint&quot;: &quot;A String&quot;, # Output only. If set, this field indicates this instance has a private service access (PSA) DNS endpoint that is pointing to the primary instance of the cluster. If this instance is the primary, then the DNS endpoint points to this instance. After a switchover or replica failover operation, this DNS endpoint points to the promoted instance. This is a read-only field, returned to the user as information. This field can exist even if a standalone instance doesn&#x27;t have a DR replica yet or the DR replica is deleted.
  },
  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.
  &quot;satisfiesPzi&quot;: True or False, # Output only. This status indicates whether the instance satisfies PZI. The status is reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # This status indicates whether the instance satisfies PZS. The status is reserved for future use.
  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenance for this instance. # The start time of any upcoming scheduled maintenance for this instance.
    &quot;canDefer&quot;: True or False,
    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
  },
  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
  },
  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance.\This property is read-only.
  &quot;settings&quot;: { # Database instance settings. # The user settings.
    &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 RUNNABLE. Valid values: * `ALWAYS`: 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;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
      &quot;adminCredentialSecretName&quot;: &quot;A String&quot;, # Optional. The secret manager key storing the administrator credential. (e.g., projects/{project}/secrets/{secret}).
      &quot;dnsServers&quot;: [ # Optional. Domain controller IPv4 addresses used to bootstrap Active Directory.
        &quot;A String&quot;,
      ],
      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
      &quot;mode&quot;: &quot;A String&quot;, # Optional. The mode of the Active Directory configuration.
      &quot;organizationalUnit&quot;: &quot;A String&quot;, # Optional. The organizational unit distinguished name. This is the full hierarchical path to the organizational unit.
    },
    &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Specifies advanced machine configuration for the instances relevant only for SQL Server.
      &quot;threadsPerCore&quot;: 42, # The number of threads per physical core.
    },
    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
      &quot;A String&quot;,
    ],
    &quot;autoUpgradeEnabled&quot;: True or False, # Optional. Cloud SQL for MySQL auto-upgrade configuration. When this parameter is set to true, auto-upgrade is enabled for MySQL 8.0 minor versions. The MySQL version must be 8.0.35 or higher.
    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
      },
      &quot;backupTier&quot;: &quot;A String&quot;, # Output only. Backup tier that manages the backups for the instance.
      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupConfiguration`.
      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # Whether point in time recovery is enabled.
      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`.
      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
      &quot;transactionalLogStorageState&quot;: &quot;A String&quot;, # Output only. This value contains the storage location of transactional logs used to perform point-in-time recovery (PITR) for the database.
    },
    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
    &quot;connectionPoolConfig&quot;: { # The managed connection pooling configuration. # Optional. The managed connection pooling configuration for the instance.
      &quot;connectionPoolingEnabled&quot;: True or False, # Whether managed connection pooling is enabled.
      &quot;flags&quot;: [ # Optional. List of connection pool configuration flags.
        { # Connection pool flags for Cloud SQL instances managed connection pool configuration.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the flag.
          &quot;value&quot;: &quot;A String&quot;, # Required. The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
        },
      ],
      &quot;poolerCount&quot;: 42, # Output only. Number of connection poolers.
    },
    &quot;connectorEnforcement&quot;: &quot;A String&quot;, # Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.
    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
    &quot;dataApiAccess&quot;: &quot;A String&quot;, # This parameter controls whether to allow using Data API to connect to the instance. Not allowed by default.
    &quot;dataCacheConfig&quot;: { # Data cache configurations. # Configuration for data cache.
      &quot;dataCacheEnabled&quot;: True or False, # 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 size of data disk, in GB. The data disk size minimum is 10GB.
    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.
    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
      { # Database flags for Cloud SQL instances.
        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
      },
    ],
    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance.
    &quot;deletionProtectionEnabled&quot;: True or False, # Configuration to protect against accidental instance deletion.
    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
      },
    ],
    &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the instance.
    &quot;enableDataplexIntegration&quot;: True or False, # Optional. By default, Cloud SQL instances have schema extraction disabled for Dataplex. When this parameter is set to true, schema extraction for Dataplex on Cloud SQL instances is activated.
    &quot;enableGoogleMlIntegration&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL instances can connect to Vertex AI to pass requests for real-time predictions and insights to the AI. The default value is false. This applies only to Cloud SQL for MySQL and Cloud SQL for PostgreSQL instances.
    &quot;finalBackupConfig&quot;: { # Config used to determine the final backup settings for the instance. # Optional. The final backup configuration for the instance.
      &quot;enabled&quot;: True or False, # Whether the final backup is enabled for the instance.
      &quot;retentionDays&quot;: 42, # The number of days to retain the final backup after the instance deletion. The final backup will be purged at (time_of_instance_deletion + retention_days).
    },
    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query lengths greater than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
    },
    &quot;ipConfiguration&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 for Second Generation instances.
      &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`
      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: `157.197.200.0/24`).
        { # An entry for an Access Control list.
          &quot;expirationTime&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;kind&quot;: &quot;A String&quot;, # This is always `sql#aclEntry`.
          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
        },
      ],
      &quot;customSubjectAlternativeNames&quot;: [ # Optional. Custom Subject Alternative Name(SAN)s for a Cloud SQL instance.
        &quot;A String&quot;,
      ],
      &quot;enablePrivatePathForGoogleCloudServices&quot;: True or False, # Controls connectivity to private IP instances from Google services, such as BigQuery.
      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP 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;pscConfig&quot;: { # PSC settings for a Cloud SQL instance. # PSC settings for this instance.
        &quot;allowedConsumerProjects&quot;: [ # Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric).
          &quot;A String&quot;,
        ],
        &quot;networkAttachmentUri&quot;: &quot;A String&quot;, # Optional. The network attachment of the consumer network that the Private Service Connect enabled Cloud SQL instance is authorized to connect via PSC interface. format: projects/PROJECT/regions/REGION/networkAttachments/ID
        &quot;pscAutoConnections&quot;: [ # Optional. The list of settings for requested Private Service Connect consumer endpoints that can be used to connect to this Cloud SQL instance.
          { # Settings for an automatically-setup Private Service Connect consumer endpoint that is used to connect to a Cloud SQL instance.
            &quot;consumerNetwork&quot;: &quot;A String&quot;, # Optional. The consumer network of this consumer endpoint. This must be a resource path that includes both the host project and the network name. For example, `projects/project1/global/networks/network1`. The consumer host project of this network might be different from the consumer service project.
            &quot;consumerNetworkStatus&quot;: &quot;A String&quot;, # The connection policy status of the consumer network.
            &quot;consumerProject&quot;: &quot;A String&quot;, # Optional. This is the project ID of consumer service project of this consumer endpoint. Optional. This is only applicable if consumer_network is a shared vpc network.
            &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address of the consumer endpoint.
            &quot;status&quot;: &quot;A String&quot;, # The connection status of the consumer endpoint.
          },
        ],
        &quot;pscEnabled&quot;: True or False, # Whether PSC connectivity is enabled for this instance.
      },
      &quot;requireSsl&quot;: True or False, # Use `ssl_mode` instead. Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won&#x27;t be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the `require_ssl` flag.
      &quot;serverCaMode&quot;: &quot;A String&quot;, # Specify what type of CA is used for the server certificate.
      &quot;serverCaPool&quot;: &quot;A String&quot;, # Optional. The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. Format: projects/{PROJECT}/locations/{REGION}/caPools/{CA_POOL_ID}
      &quot;sslMode&quot;: &quot;A String&quot;, # Specify how SSL/TLS is enforced in database connections. If you must use the `require_ssl` flag for backward compatibility, then only the following value pairs are valid: For PostgreSQL and MySQL: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` For SQL Server: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=true` The value of `ssl_mode` has priority over the value of `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false`, `ssl_mode=ENCRYPTED_ONLY` means accept only SSL connections, while `require_ssl=false` means accept both non-SSL and SSL connections. In this case, MySQL and PostgreSQL databases respect `ssl_mode` and accepts only SSL connections.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#settings`.
    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances.
      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#locationPreference`.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to &#x27;no_secondary_zone&#x27;.
      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance.
    },
    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
      &quot;day&quot;: 42, # Day of week - `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, or `SUNDAY`. Specify in the UTC time zone. Returned in output as an integer, 1 to 7, where `1` equals Monday.
      &quot;hour&quot;: 42, # Hour of day - 0 to 23. Specify in the UTC time zone.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#maintenanceWindow`.
      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing settings: `canary`, `stable`, or `week5`. For more information, see [About maintenance on Cloud SQL instances](https://cloud.google.com/sql/docs/mysql/maintenance).
    },
    &quot;passwordValidationPolicy&quot;: { # Database instance local user password validation policy # The local user password validation policy of the instance.
      &quot;complexity&quot;: &quot;A String&quot;, # The complexity of the password.
      &quot;disallowCompromisedCredentials&quot;: True or False, # This field is deprecated and will be removed in a future version of the API.
      &quot;disallowUsernameSubstring&quot;: True or False, # Disallow username as a part of the password.
      &quot;enablePasswordPolicy&quot;: True or False, # Whether the password policy is enabled or not.
      &quot;minLength&quot;: 42, # Minimum number of characters allowed.
      &quot;passwordChangeInterval&quot;: &quot;A String&quot;, # Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL.
      &quot;reuseInterval&quot;: 42, # Number of previous passwords that cannot be reused.
    },
    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.
    &quot;readPoolAutoScaleConfig&quot;: { # The read pool auto-scale configuration. # Optional. The read pool auto-scale configuration for the instance.
      &quot;disableScaleIn&quot;: True or False, # Indicates whether read pool auto scaling supports scale in operations (removing nodes).
      &quot;enabled&quot;: True or False, # Indicates whether read pool auto scaling is enabled.
      &quot;maxNodeCount&quot;: 42, # Maximum number of read pool nodes to be maintained.
      &quot;minNodeCount&quot;: 42, # Minimum number of read pool nodes to be maintained.
      &quot;scaleInCooldownSeconds&quot;: 42, # The cooldown period for scale-in operations.
      &quot;scaleOutCooldownSeconds&quot;: 42, # The cooldown period for scale-out operations.
      &quot;targetMetrics&quot;: [ # Optional. Target metrics for read pool auto scaling.
        { # Target metric for read pool auto scaling.
          &quot;metric&quot;: &quot;A String&quot;, # The metric name to be used for auto scaling.
          &quot;targetValue&quot;: 3.14, # The target value for the metric.
        },
      ],
    },
    &quot;replicationLagMaxSeconds&quot;: 42, # Optional. Configuration value for recreation of replica after certain replication lag
    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.
    &quot;retainBackupsOnDelete&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL retains backups of the instance even after the instance is deleted. The ON_DEMAND backup will be retained until customer deletes the backup or the project. The AUTOMATED backup will be retained based on the backups retention setting.
    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
    &quot;sqlServerAuditConfig&quot;: { # SQL Server specific audit configuration. # SQL Server specific audit configuration.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the destination bucket (e.g., gs://mybucket).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sqlServerAuditConfig
      &quot;retentionInterval&quot;: &quot;A String&quot;, # How long to keep generated audit files.
      &quot;uploadInterval&quot;: &quot;A String&quot;, # How often to upload generated audit files.
    },
    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
    &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-custom-1-3840`. WARNING: Changing this restarts the instance.
    &quot;timeZone&quot;: &quot;A String&quot;, # Server timezone, relevant only for Cloud SQL for SQL Server.
    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sqlNetworkArchitecture&quot;: &quot;A String&quot;,
  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance.
  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
    &quot;A String&quot;,
  ],
  &quot;switchTransactionLogsToCloudStorageEnabled&quot;: True or False, # Input only. Whether Cloud SQL is enabled to switch storing point-in-time recovery log files from a data disk to Cloud Storage.
  &quot;tags&quot;: { # Optional. Input only. Immutable. Tag keys and tag values that are bound to this instance. You must represent each item in the map as: `&quot;&quot; : &quot;&quot;`. For example, a single resource can have the following tags: ``` &quot;123/environment&quot;: &quot;production&quot;, &quot;123/costCenter&quot;: &quot;marketing&quot;, ``` For more information on tag creation and management, see https://cloud.google.com/resource-manager/docs/tags/tags-overview.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;upgradableDatabaseVersions&quot;: [ # Output only. All database versions that are available for upgrade.
    { # An available database version. It can be a major or a minor version.
      &quot;displayName&quot;: &quot;A String&quot;, # The database version&#x27;s display name.
      &quot;majorVersion&quot;: &quot;A String&quot;, # The version&#x27;s major version name.
      &quot;name&quot;: &quot;A String&quot;, # The database version name. For MySQL 8.0, this string provides the database major and minor version.
    },
  ],
  &quot;writeEndpoint&quot;: &quot;A String&quot;, # Output only. The dns name of the primary instance in a replication group.
}</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(project, instance, body=None, x__xgafv=None)</code>
  <pre>Imports data into a Cloud SQL instance from a SQL dump or CSV file in Cloud Storage.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Database instance import request.
  &quot;importContext&quot;: { # Database instance import context. # Contains details about the import operation.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body=None, x__xgafv=None)</code>
  <pre>Creates a new Cloud SQL instance.

Args:
  project: string, Project ID of the project to which the newly created Cloud SQL instances should belong. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Cloud SQL instance resource.
  &quot;availableMaintenanceVersions&quot;: [ # Output only. List all maintenance versions applicable on the instance
    &quot;A String&quot;,
  ],
  &quot;backendType&quot;: &quot;A String&quot;, # The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.
  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.
  &quot;databaseInstalledVersion&quot;: &quot;A String&quot;, # Output only. Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.
  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.
  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionConfiguration`.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
  },
  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionStatus`.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
  },
  &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The dns name of the instance.
  &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this instance.
    { # DNS metadata.
      &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
      &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
      &quot;name&quot;: &quot;A String&quot;, # The DNS name.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.
  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
  },
  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.
  &quot;geminiConfig&quot;: { # Gemini instance configuration. # Gemini instance configuration.
    &quot;activeQueryEnabled&quot;: True or False, # Output only. Whether the active query is enabled.
    &quot;entitled&quot;: True or False, # Output only. Whether Gemini is enabled.
    &quot;flagRecommenderEnabled&quot;: True or False, # Output only. Whether the flag recommender is enabled.
    &quot;googleVacuumMgmtEnabled&quot;: True or False, # Output only. Whether the vacuum management is enabled.
    &quot;indexAdvisorEnabled&quot;: True or False, # Output only. Whether the index advisor is enabled.
    &quot;oomSessionCancelEnabled&quot;: True or False, # Output only. Whether canceling the out-of-memory (OOM) session is enabled.
  },
  &quot;includeReplicasForMajorVersionUpgrade&quot;: True or False, # Input only. Determines whether an in-place major version upgrade of replicas happens when an in-place major version upgrade of a primary instance is initiated.
  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type.
  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
    { # Database instance IP mapping
      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
    },
  ],
  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instance`.
  &quot;maintenanceVersion&quot;: &quot;A String&quot;, # The current software version on the instance.
  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
  &quot;nodeCount&quot;: 42, # The number of read pool nodes in a read pool.
  &quot;nodes&quot;: [ # Output only. Entries containing information about each read pool node of the read pool.
    { # Details of a single read pool node of a read pool.
      &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The DNS name of the read pool node.
      &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this read pool node.
        { # DNS metadata.
          &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
          &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
          &quot;name&quot;: &quot;A String&quot;, # The DNS name.
        },
      ],
      &quot;gceZone&quot;: &quot;A String&quot;, # Output only. The zone of the read pool node.
      &quot;ipAddresses&quot;: [ # Output only. Mappings containing IP addresses that can be used to connect to the read pool node.
        { # Database instance IP mapping
          &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
          &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
          &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the read pool node, to be used for retrieving metrics and logs.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the read pool node.
    },
  ],
  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#onPremisesConfiguration`.
    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
    &quot;selectedObjects&quot;: [ # Optional. A list of objects that the user selects for replication from an external source instance.
      { # A list of objects that the user selects for replication from an external source instance.
        &quot;database&quot;: &quot;A String&quot;, # Required. The name of the database to migrate.
      },
    ],
    &quot;sourceInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to Cloud SQL instance if the source is Cloud SQL.
      &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced. This does not include the project ID.
      &quot;project&quot;: &quot;A String&quot;, # The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it.
      &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
    },
    &quot;sslOption&quot;: &quot;A String&quot;, # Optional. SSL option for replica connection to the on-premises source.
    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
  },
  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:
    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
  },
  &quot;primaryDnsName&quot;: &quot;A String&quot;, # Output only. DEPRECATED: please use write_endpoint instead.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
  &quot;pscServiceAttachmentLink&quot;: &quot;A String&quot;, # Output only. The link to service attachment of PSC instance.
  &quot;region&quot;: &quot;A String&quot;, # The geographical region of the Cloud SQL instance. It can be one of the [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) where Cloud SQL operates: For example, `asia-east1`, `europe-west1`, and `us-central1`. The default value is `us-central1`.
  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
    &quot;cascadableReplica&quot;: True or False, # Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#replicaConfiguration`.
    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#mysqlReplicaConfiguration`.
      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
    },
  },
  &quot;replicaNames&quot;: [ # The replicas of the instance.
    &quot;A String&quot;,
  ],
  &quot;replicationCluster&quot;: { # A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL. # Optional. A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL.
    &quot;drReplica&quot;: True or False, # Output only. Read-only field that indicates whether the replica is a DR replica. This field is not set if the instance is a primary instance.
    &quot;failoverDrReplicaName&quot;: &quot;A String&quot;, # Optional. If the instance is a primary instance, then this field identifies the disaster recovery (DR) replica. A DR replica is an optional configuration for Enterprise Plus edition instances. If the instance is a read replica, then the field is not set. Set this field to a replica name to designate a DR replica for a primary instance. Remove the replica name to remove the DR replica designation.
    &quot;psaWriteEndpoint&quot;: &quot;A String&quot;, # Output only. If set, this field indicates this instance has a private service access (PSA) DNS endpoint that is pointing to the primary instance of the cluster. If this instance is the primary, then the DNS endpoint points to this instance. After a switchover or replica failover operation, this DNS endpoint points to the promoted instance. This is a read-only field, returned to the user as information. This field can exist even if a standalone instance doesn&#x27;t have a DR replica yet or the DR replica is deleted.
  },
  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.
  &quot;satisfiesPzi&quot;: True or False, # Output only. This status indicates whether the instance satisfies PZI. The status is reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # This status indicates whether the instance satisfies PZS. The status is reserved for future use.
  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenance for this instance. # The start time of any upcoming scheduled maintenance for this instance.
    &quot;canDefer&quot;: True or False,
    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
  },
  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
  },
  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance.\This property is read-only.
  &quot;settings&quot;: { # Database instance settings. # The user settings.
    &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 RUNNABLE. Valid values: * `ALWAYS`: 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;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
      &quot;adminCredentialSecretName&quot;: &quot;A String&quot;, # Optional. The secret manager key storing the administrator credential. (e.g., projects/{project}/secrets/{secret}).
      &quot;dnsServers&quot;: [ # Optional. Domain controller IPv4 addresses used to bootstrap Active Directory.
        &quot;A String&quot;,
      ],
      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
      &quot;mode&quot;: &quot;A String&quot;, # Optional. The mode of the Active Directory configuration.
      &quot;organizationalUnit&quot;: &quot;A String&quot;, # Optional. The organizational unit distinguished name. This is the full hierarchical path to the organizational unit.
    },
    &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Specifies advanced machine configuration for the instances relevant only for SQL Server.
      &quot;threadsPerCore&quot;: 42, # The number of threads per physical core.
    },
    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
      &quot;A String&quot;,
    ],
    &quot;autoUpgradeEnabled&quot;: True or False, # Optional. Cloud SQL for MySQL auto-upgrade configuration. When this parameter is set to true, auto-upgrade is enabled for MySQL 8.0 minor versions. The MySQL version must be 8.0.35 or higher.
    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
      },
      &quot;backupTier&quot;: &quot;A String&quot;, # Output only. Backup tier that manages the backups for the instance.
      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupConfiguration`.
      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # Whether point in time recovery is enabled.
      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`.
      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
      &quot;transactionalLogStorageState&quot;: &quot;A String&quot;, # Output only. This value contains the storage location of transactional logs used to perform point-in-time recovery (PITR) for the database.
    },
    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
    &quot;connectionPoolConfig&quot;: { # The managed connection pooling configuration. # Optional. The managed connection pooling configuration for the instance.
      &quot;connectionPoolingEnabled&quot;: True or False, # Whether managed connection pooling is enabled.
      &quot;flags&quot;: [ # Optional. List of connection pool configuration flags.
        { # Connection pool flags for Cloud SQL instances managed connection pool configuration.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the flag.
          &quot;value&quot;: &quot;A String&quot;, # Required. The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
        },
      ],
      &quot;poolerCount&quot;: 42, # Output only. Number of connection poolers.
    },
    &quot;connectorEnforcement&quot;: &quot;A String&quot;, # Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.
    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
    &quot;dataApiAccess&quot;: &quot;A String&quot;, # This parameter controls whether to allow using Data API to connect to the instance. Not allowed by default.
    &quot;dataCacheConfig&quot;: { # Data cache configurations. # Configuration for data cache.
      &quot;dataCacheEnabled&quot;: True or False, # 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 size of data disk, in GB. The data disk size minimum is 10GB.
    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.
    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
      { # Database flags for Cloud SQL instances.
        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
      },
    ],
    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance.
    &quot;deletionProtectionEnabled&quot;: True or False, # Configuration to protect against accidental instance deletion.
    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
      },
    ],
    &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the instance.
    &quot;enableDataplexIntegration&quot;: True or False, # Optional. By default, Cloud SQL instances have schema extraction disabled for Dataplex. When this parameter is set to true, schema extraction for Dataplex on Cloud SQL instances is activated.
    &quot;enableGoogleMlIntegration&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL instances can connect to Vertex AI to pass requests for real-time predictions and insights to the AI. The default value is false. This applies only to Cloud SQL for MySQL and Cloud SQL for PostgreSQL instances.
    &quot;finalBackupConfig&quot;: { # Config used to determine the final backup settings for the instance. # Optional. The final backup configuration for the instance.
      &quot;enabled&quot;: True or False, # Whether the final backup is enabled for the instance.
      &quot;retentionDays&quot;: 42, # The number of days to retain the final backup after the instance deletion. The final backup will be purged at (time_of_instance_deletion + retention_days).
    },
    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query lengths greater than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
    },
    &quot;ipConfiguration&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 for Second Generation instances.
      &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`
      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: `157.197.200.0/24`).
        { # An entry for an Access Control list.
          &quot;expirationTime&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;kind&quot;: &quot;A String&quot;, # This is always `sql#aclEntry`.
          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
        },
      ],
      &quot;customSubjectAlternativeNames&quot;: [ # Optional. Custom Subject Alternative Name(SAN)s for a Cloud SQL instance.
        &quot;A String&quot;,
      ],
      &quot;enablePrivatePathForGoogleCloudServices&quot;: True or False, # Controls connectivity to private IP instances from Google services, such as BigQuery.
      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP 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;pscConfig&quot;: { # PSC settings for a Cloud SQL instance. # PSC settings for this instance.
        &quot;allowedConsumerProjects&quot;: [ # Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric).
          &quot;A String&quot;,
        ],
        &quot;networkAttachmentUri&quot;: &quot;A String&quot;, # Optional. The network attachment of the consumer network that the Private Service Connect enabled Cloud SQL instance is authorized to connect via PSC interface. format: projects/PROJECT/regions/REGION/networkAttachments/ID
        &quot;pscAutoConnections&quot;: [ # Optional. The list of settings for requested Private Service Connect consumer endpoints that can be used to connect to this Cloud SQL instance.
          { # Settings for an automatically-setup Private Service Connect consumer endpoint that is used to connect to a Cloud SQL instance.
            &quot;consumerNetwork&quot;: &quot;A String&quot;, # Optional. The consumer network of this consumer endpoint. This must be a resource path that includes both the host project and the network name. For example, `projects/project1/global/networks/network1`. The consumer host project of this network might be different from the consumer service project.
            &quot;consumerNetworkStatus&quot;: &quot;A String&quot;, # The connection policy status of the consumer network.
            &quot;consumerProject&quot;: &quot;A String&quot;, # Optional. This is the project ID of consumer service project of this consumer endpoint. Optional. This is only applicable if consumer_network is a shared vpc network.
            &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address of the consumer endpoint.
            &quot;status&quot;: &quot;A String&quot;, # The connection status of the consumer endpoint.
          },
        ],
        &quot;pscEnabled&quot;: True or False, # Whether PSC connectivity is enabled for this instance.
      },
      &quot;requireSsl&quot;: True or False, # Use `ssl_mode` instead. Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won&#x27;t be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the `require_ssl` flag.
      &quot;serverCaMode&quot;: &quot;A String&quot;, # Specify what type of CA is used for the server certificate.
      &quot;serverCaPool&quot;: &quot;A String&quot;, # Optional. The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. Format: projects/{PROJECT}/locations/{REGION}/caPools/{CA_POOL_ID}
      &quot;sslMode&quot;: &quot;A String&quot;, # Specify how SSL/TLS is enforced in database connections. If you must use the `require_ssl` flag for backward compatibility, then only the following value pairs are valid: For PostgreSQL and MySQL: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` For SQL Server: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=true` The value of `ssl_mode` has priority over the value of `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false`, `ssl_mode=ENCRYPTED_ONLY` means accept only SSL connections, while `require_ssl=false` means accept both non-SSL and SSL connections. In this case, MySQL and PostgreSQL databases respect `ssl_mode` and accepts only SSL connections.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#settings`.
    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances.
      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#locationPreference`.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to &#x27;no_secondary_zone&#x27;.
      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance.
    },
    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
      &quot;day&quot;: 42, # Day of week - `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, or `SUNDAY`. Specify in the UTC time zone. Returned in output as an integer, 1 to 7, where `1` equals Monday.
      &quot;hour&quot;: 42, # Hour of day - 0 to 23. Specify in the UTC time zone.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#maintenanceWindow`.
      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing settings: `canary`, `stable`, or `week5`. For more information, see [About maintenance on Cloud SQL instances](https://cloud.google.com/sql/docs/mysql/maintenance).
    },
    &quot;passwordValidationPolicy&quot;: { # Database instance local user password validation policy # The local user password validation policy of the instance.
      &quot;complexity&quot;: &quot;A String&quot;, # The complexity of the password.
      &quot;disallowCompromisedCredentials&quot;: True or False, # This field is deprecated and will be removed in a future version of the API.
      &quot;disallowUsernameSubstring&quot;: True or False, # Disallow username as a part of the password.
      &quot;enablePasswordPolicy&quot;: True or False, # Whether the password policy is enabled or not.
      &quot;minLength&quot;: 42, # Minimum number of characters allowed.
      &quot;passwordChangeInterval&quot;: &quot;A String&quot;, # Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL.
      &quot;reuseInterval&quot;: 42, # Number of previous passwords that cannot be reused.
    },
    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.
    &quot;readPoolAutoScaleConfig&quot;: { # The read pool auto-scale configuration. # Optional. The read pool auto-scale configuration for the instance.
      &quot;disableScaleIn&quot;: True or False, # Indicates whether read pool auto scaling supports scale in operations (removing nodes).
      &quot;enabled&quot;: True or False, # Indicates whether read pool auto scaling is enabled.
      &quot;maxNodeCount&quot;: 42, # Maximum number of read pool nodes to be maintained.
      &quot;minNodeCount&quot;: 42, # Minimum number of read pool nodes to be maintained.
      &quot;scaleInCooldownSeconds&quot;: 42, # The cooldown period for scale-in operations.
      &quot;scaleOutCooldownSeconds&quot;: 42, # The cooldown period for scale-out operations.
      &quot;targetMetrics&quot;: [ # Optional. Target metrics for read pool auto scaling.
        { # Target metric for read pool auto scaling.
          &quot;metric&quot;: &quot;A String&quot;, # The metric name to be used for auto scaling.
          &quot;targetValue&quot;: 3.14, # The target value for the metric.
        },
      ],
    },
    &quot;replicationLagMaxSeconds&quot;: 42, # Optional. Configuration value for recreation of replica after certain replication lag
    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.
    &quot;retainBackupsOnDelete&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL retains backups of the instance even after the instance is deleted. The ON_DEMAND backup will be retained until customer deletes the backup or the project. The AUTOMATED backup will be retained based on the backups retention setting.
    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
    &quot;sqlServerAuditConfig&quot;: { # SQL Server specific audit configuration. # SQL Server specific audit configuration.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the destination bucket (e.g., gs://mybucket).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sqlServerAuditConfig
      &quot;retentionInterval&quot;: &quot;A String&quot;, # How long to keep generated audit files.
      &quot;uploadInterval&quot;: &quot;A String&quot;, # How often to upload generated audit files.
    },
    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
    &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-custom-1-3840`. WARNING: Changing this restarts the instance.
    &quot;timeZone&quot;: &quot;A String&quot;, # Server timezone, relevant only for Cloud SQL for SQL Server.
    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sqlNetworkArchitecture&quot;: &quot;A String&quot;,
  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance.
  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
    &quot;A String&quot;,
  ],
  &quot;switchTransactionLogsToCloudStorageEnabled&quot;: True or False, # Input only. Whether Cloud SQL is enabled to switch storing point-in-time recovery log files from a data disk to Cloud Storage.
  &quot;tags&quot;: { # Optional. Input only. Immutable. Tag keys and tag values that are bound to this instance. You must represent each item in the map as: `&quot;&quot; : &quot;&quot;`. For example, a single resource can have the following tags: ``` &quot;123/environment&quot;: &quot;production&quot;, &quot;123/costCenter&quot;: &quot;marketing&quot;, ``` For more information on tag creation and management, see https://cloud.google.com/resource-manager/docs/tags/tags-overview.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;upgradableDatabaseVersions&quot;: [ # Output only. All database versions that are available for upgrade.
    { # An available database version. It can be a major or a minor version.
      &quot;displayName&quot;: &quot;A String&quot;, # The database version&#x27;s display name.
      &quot;majorVersion&quot;: &quot;A String&quot;, # The version&#x27;s major version name.
      &quot;name&quot;: &quot;A String&quot;, # The database version name. For MySQL 8.0, this string provides the database major and minor version.
    },
  ],
  &quot;writeEndpoint&quot;: &quot;A String&quot;, # Output only. The dns name of the primary instance in a replication group.
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, filter=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists instances under a given project.

Args:
  project: string, Project ID of the project for which to list Cloud SQL instances. (required)
  filter: string, A filter expression that filters resources listed in the response. The expression is in the form of field:value. For example, &#x27;instanceType:CLOUD_SQL_INSTANCE&#x27;. Fields can be nested as needed as per their JSON representation, such as &#x27;settings.userLabels.auto_start:true&#x27;. Multiple filter queries are space-separated. For example. &#x27;state:RUNNABLE instanceType:CLOUD_SQL_INSTANCE&#x27;. By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly.
  maxResults: integer, The maximum number of instances to return. The service may return fewer than this value. If unspecified, at most 500 instances are returned. The maximum value is 1000; values above 1000 are coerced to 1000.
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Database instances list response.
  &quot;items&quot;: [ # List of database instance resources.
    { # A Cloud SQL instance resource.
      &quot;availableMaintenanceVersions&quot;: [ # Output only. List all maintenance versions applicable on the instance
        &quot;A String&quot;,
      ],
      &quot;backendType&quot;: &quot;A String&quot;, # The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.
      &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
      &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.
      &quot;databaseInstalledVersion&quot;: &quot;A String&quot;, # Output only. Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.
      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.
      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionConfiguration`.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
      },
      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionStatus`.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
      },
      &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The dns name of the instance.
      &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this instance.
        { # DNS metadata.
          &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
          &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
          &quot;name&quot;: &quot;A String&quot;, # The DNS name.
        },
      ],
      &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.
      &quot;failoverReplica&quot;: { # The name and status of the failover replica.
        &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
        &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
      },
      &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.
      &quot;geminiConfig&quot;: { # Gemini instance configuration. # Gemini instance configuration.
        &quot;activeQueryEnabled&quot;: True or False, # Output only. Whether the active query is enabled.
        &quot;entitled&quot;: True or False, # Output only. Whether Gemini is enabled.
        &quot;flagRecommenderEnabled&quot;: True or False, # Output only. Whether the flag recommender is enabled.
        &quot;googleVacuumMgmtEnabled&quot;: True or False, # Output only. Whether the vacuum management is enabled.
        &quot;indexAdvisorEnabled&quot;: True or False, # Output only. Whether the index advisor is enabled.
        &quot;oomSessionCancelEnabled&quot;: True or False, # Output only. Whether canceling the out-of-memory (OOM) session is enabled.
      },
      &quot;includeReplicasForMajorVersionUpgrade&quot;: True or False, # Input only. Determines whether an in-place major version upgrade of replicas happens when an in-place major version upgrade of a primary instance is initiated.
      &quot;instanceType&quot;: &quot;A String&quot;, # The instance type.
      &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
        { # Database instance IP mapping
          &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
          &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
          &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
        },
      ],
      &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instance`.
      &quot;maintenanceVersion&quot;: &quot;A String&quot;, # The current software version on the instance.
      &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
      &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
      &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
      &quot;nodeCount&quot;: 42, # The number of read pool nodes in a read pool.
      &quot;nodes&quot;: [ # Output only. Entries containing information about each read pool node of the read pool.
        { # Details of a single read pool node of a read pool.
          &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The DNS name of the read pool node.
          &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this read pool node.
            { # DNS metadata.
              &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
              &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
              &quot;name&quot;: &quot;A String&quot;, # The DNS name.
            },
          ],
          &quot;gceZone&quot;: &quot;A String&quot;, # Output only. The zone of the read pool node.
          &quot;ipAddresses&quot;: [ # Output only. Mappings containing IP addresses that can be used to connect to the read pool node.
            { # Database instance IP mapping
              &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
              &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
              &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the read pool node, to be used for retrieving metrics and logs.
          &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the read pool node.
        },
      ],
      &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
        &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
        &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
        &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
        &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#onPremisesConfiguration`.
        &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
        &quot;selectedObjects&quot;: [ # Optional. A list of objects that the user selects for replication from an external source instance.
          { # A list of objects that the user selects for replication from an external source instance.
            &quot;database&quot;: &quot;A String&quot;, # Required. The name of the database to migrate.
          },
        ],
        &quot;sourceInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to Cloud SQL instance if the source is Cloud SQL.
          &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced. This does not include the project ID.
          &quot;project&quot;: &quot;A String&quot;, # The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it.
          &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
        },
        &quot;sslOption&quot;: &quot;A String&quot;, # Optional. SSL option for replica connection to the on-premises source.
        &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
      },
      &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
        &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:
        &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
      },
      &quot;primaryDnsName&quot;: &quot;A String&quot;, # Output only. DEPRECATED: please use write_endpoint instead.
      &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
      &quot;pscServiceAttachmentLink&quot;: &quot;A String&quot;, # Output only. The link to service attachment of PSC instance.
      &quot;region&quot;: &quot;A String&quot;, # The geographical region of the Cloud SQL instance. It can be one of the [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) where Cloud SQL operates: For example, `asia-east1`, `europe-west1`, and `us-central1`. The default value is `us-central1`.
      &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
        &quot;cascadableReplica&quot;: True or False, # Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
        &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#replicaConfiguration`.
        &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
          &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
          &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
          &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
          &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
          &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
          &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#mysqlReplicaConfiguration`.
          &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
          &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
          &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
          &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
          &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
        },
      },
      &quot;replicaNames&quot;: [ # The replicas of the instance.
        &quot;A String&quot;,
      ],
      &quot;replicationCluster&quot;: { # A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL. # Optional. A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL.
        &quot;drReplica&quot;: True or False, # Output only. Read-only field that indicates whether the replica is a DR replica. This field is not set if the instance is a primary instance.
        &quot;failoverDrReplicaName&quot;: &quot;A String&quot;, # Optional. If the instance is a primary instance, then this field identifies the disaster recovery (DR) replica. A DR replica is an optional configuration for Enterprise Plus edition instances. If the instance is a read replica, then the field is not set. Set this field to a replica name to designate a DR replica for a primary instance. Remove the replica name to remove the DR replica designation.
        &quot;psaWriteEndpoint&quot;: &quot;A String&quot;, # Output only. If set, this field indicates this instance has a private service access (PSA) DNS endpoint that is pointing to the primary instance of the cluster. If this instance is the primary, then the DNS endpoint points to this instance. After a switchover or replica failover operation, this DNS endpoint points to the promoted instance. This is a read-only field, returned to the user as information. This field can exist even if a standalone instance doesn&#x27;t have a DR replica yet or the DR replica is deleted.
      },
      &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.
      &quot;satisfiesPzi&quot;: True or False, # Output only. This status indicates whether the instance satisfies PZI. The status is reserved for future use.
      &quot;satisfiesPzs&quot;: True or False, # This status indicates whether the instance satisfies PZS. The status is reserved for future use.
      &quot;scheduledMaintenance&quot;: { # Any scheduled maintenance for this instance. # The start time of any upcoming scheduled maintenance for this instance.
        &quot;canDefer&quot;: True or False,
        &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
        &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
      },
      &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
        &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
        &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
        &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
        &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
        &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
        &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
        &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
      },
      &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance.\This property is read-only.
      &quot;settings&quot;: { # Database instance settings. # The user settings.
        &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 RUNNABLE. Valid values: * `ALWAYS`: 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;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
          &quot;adminCredentialSecretName&quot;: &quot;A String&quot;, # Optional. The secret manager key storing the administrator credential. (e.g., projects/{project}/secrets/{secret}).
          &quot;dnsServers&quot;: [ # Optional. Domain controller IPv4 addresses used to bootstrap Active Directory.
            &quot;A String&quot;,
          ],
          &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
          &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
          &quot;mode&quot;: &quot;A String&quot;, # Optional. The mode of the Active Directory configuration.
          &quot;organizationalUnit&quot;: &quot;A String&quot;, # Optional. The organizational unit distinguished name. This is the full hierarchical path to the organizational unit.
        },
        &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Specifies advanced machine configuration for the instances relevant only for SQL Server.
          &quot;threadsPerCore&quot;: 42, # The number of threads per physical core.
        },
        &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
          &quot;A String&quot;,
        ],
        &quot;autoUpgradeEnabled&quot;: True or False, # Optional. Cloud SQL for MySQL auto-upgrade configuration. When this parameter is set to true, auto-upgrade is enabled for MySQL 8.0 minor versions. The MySQL version must be 8.0.35 or higher.
        &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
        &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
          &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
            &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
            &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
          },
          &quot;backupTier&quot;: &quot;A String&quot;, # Output only. Backup tier that manages the backups for the instance.
          &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
          &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
          &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupConfiguration`.
          &quot;location&quot;: &quot;A String&quot;, # Location of the backup
          &quot;pointInTimeRecoveryEnabled&quot;: True or False, # Whether point in time recovery is enabled.
          &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
          &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`.
          &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
          &quot;transactionalLogStorageState&quot;: &quot;A String&quot;, # Output only. This value contains the storage location of transactional logs used to perform point-in-time recovery (PITR) for the database.
        },
        &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
        &quot;connectionPoolConfig&quot;: { # The managed connection pooling configuration. # Optional. The managed connection pooling configuration for the instance.
          &quot;connectionPoolingEnabled&quot;: True or False, # Whether managed connection pooling is enabled.
          &quot;flags&quot;: [ # Optional. List of connection pool configuration flags.
            { # Connection pool flags for Cloud SQL instances managed connection pool configuration.
              &quot;name&quot;: &quot;A String&quot;, # Required. The name of the flag.
              &quot;value&quot;: &quot;A String&quot;, # Required. The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
            },
          ],
          &quot;poolerCount&quot;: 42, # Output only. Number of connection poolers.
        },
        &quot;connectorEnforcement&quot;: &quot;A String&quot;, # Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.
        &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
        &quot;dataApiAccess&quot;: &quot;A String&quot;, # This parameter controls whether to allow using Data API to connect to the instance. Not allowed by default.
        &quot;dataCacheConfig&quot;: { # Data cache configurations. # Configuration for data cache.
          &quot;dataCacheEnabled&quot;: True or False, # 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 size of data disk, in GB. The data disk size minimum is 10GB.
        &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.
        &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
          { # Database flags for Cloud SQL instances.
            &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
            &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
          },
        ],
        &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance.
        &quot;deletionProtectionEnabled&quot;: True or False, # Configuration to protect against accidental instance deletion.
        &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
          { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
            &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
            &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
            &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
          },
        ],
        &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the instance.
        &quot;enableDataplexIntegration&quot;: True or False, # Optional. By default, Cloud SQL instances have schema extraction disabled for Dataplex. When this parameter is set to true, schema extraction for Dataplex on Cloud SQL instances is activated.
        &quot;enableGoogleMlIntegration&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL instances can connect to Vertex AI to pass requests for real-time predictions and insights to the AI. The default value is false. This applies only to Cloud SQL for MySQL and Cloud SQL for PostgreSQL instances.
        &quot;finalBackupConfig&quot;: { # Config used to determine the final backup settings for the instance. # Optional. The final backup configuration for the instance.
          &quot;enabled&quot;: True or False, # Whether the final backup is enabled for the instance.
          &quot;retentionDays&quot;: 42, # The number of days to retain the final backup after the instance deletion. The final backup will be purged at (time_of_instance_deletion + retention_days).
        },
        &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
          &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
          &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
          &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query lengths greater than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
          &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
          &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
        },
        &quot;ipConfiguration&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 for Second Generation instances.
          &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`
          &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: `157.197.200.0/24`).
            { # An entry for an Access Control list.
              &quot;expirationTime&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;kind&quot;: &quot;A String&quot;, # This is always `sql#aclEntry`.
              &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
              &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
            },
          ],
          &quot;customSubjectAlternativeNames&quot;: [ # Optional. Custom Subject Alternative Name(SAN)s for a Cloud SQL instance.
            &quot;A String&quot;,
          ],
          &quot;enablePrivatePathForGoogleCloudServices&quot;: True or False, # Controls connectivity to private IP instances from Google services, such as BigQuery.
          &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP 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;pscConfig&quot;: { # PSC settings for a Cloud SQL instance. # PSC settings for this instance.
            &quot;allowedConsumerProjects&quot;: [ # Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric).
              &quot;A String&quot;,
            ],
            &quot;networkAttachmentUri&quot;: &quot;A String&quot;, # Optional. The network attachment of the consumer network that the Private Service Connect enabled Cloud SQL instance is authorized to connect via PSC interface. format: projects/PROJECT/regions/REGION/networkAttachments/ID
            &quot;pscAutoConnections&quot;: [ # Optional. The list of settings for requested Private Service Connect consumer endpoints that can be used to connect to this Cloud SQL instance.
              { # Settings for an automatically-setup Private Service Connect consumer endpoint that is used to connect to a Cloud SQL instance.
                &quot;consumerNetwork&quot;: &quot;A String&quot;, # Optional. The consumer network of this consumer endpoint. This must be a resource path that includes both the host project and the network name. For example, `projects/project1/global/networks/network1`. The consumer host project of this network might be different from the consumer service project.
                &quot;consumerNetworkStatus&quot;: &quot;A String&quot;, # The connection policy status of the consumer network.
                &quot;consumerProject&quot;: &quot;A String&quot;, # Optional. This is the project ID of consumer service project of this consumer endpoint. Optional. This is only applicable if consumer_network is a shared vpc network.
                &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address of the consumer endpoint.
                &quot;status&quot;: &quot;A String&quot;, # The connection status of the consumer endpoint.
              },
            ],
            &quot;pscEnabled&quot;: True or False, # Whether PSC connectivity is enabled for this instance.
          },
          &quot;requireSsl&quot;: True or False, # Use `ssl_mode` instead. Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won&#x27;t be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the `require_ssl` flag.
          &quot;serverCaMode&quot;: &quot;A String&quot;, # Specify what type of CA is used for the server certificate.
          &quot;serverCaPool&quot;: &quot;A String&quot;, # Optional. The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. Format: projects/{PROJECT}/locations/{REGION}/caPools/{CA_POOL_ID}
          &quot;sslMode&quot;: &quot;A String&quot;, # Specify how SSL/TLS is enforced in database connections. If you must use the `require_ssl` flag for backward compatibility, then only the following value pairs are valid: For PostgreSQL and MySQL: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` For SQL Server: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=true` The value of `ssl_mode` has priority over the value of `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false`, `ssl_mode=ENCRYPTED_ONLY` means accept only SSL connections, while `require_ssl=false` means accept both non-SSL and SSL connections. In this case, MySQL and PostgreSQL databases respect `ssl_mode` and accepts only SSL connections.
        },
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#settings`.
        &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances.
          &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance.
          &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#locationPreference`.
          &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to &#x27;no_secondary_zone&#x27;.
          &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance.
        },
        &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
          &quot;day&quot;: 42, # Day of week - `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, or `SUNDAY`. Specify in the UTC time zone. Returned in output as an integer, 1 to 7, where `1` equals Monday.
          &quot;hour&quot;: 42, # Hour of day - 0 to 23. Specify in the UTC time zone.
          &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#maintenanceWindow`.
          &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing settings: `canary`, `stable`, or `week5`. For more information, see [About maintenance on Cloud SQL instances](https://cloud.google.com/sql/docs/mysql/maintenance).
        },
        &quot;passwordValidationPolicy&quot;: { # Database instance local user password validation policy # The local user password validation policy of the instance.
          &quot;complexity&quot;: &quot;A String&quot;, # The complexity of the password.
          &quot;disallowCompromisedCredentials&quot;: True or False, # This field is deprecated and will be removed in a future version of the API.
          &quot;disallowUsernameSubstring&quot;: True or False, # Disallow username as a part of the password.
          &quot;enablePasswordPolicy&quot;: True or False, # Whether the password policy is enabled or not.
          &quot;minLength&quot;: 42, # Minimum number of characters allowed.
          &quot;passwordChangeInterval&quot;: &quot;A String&quot;, # Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL.
          &quot;reuseInterval&quot;: 42, # Number of previous passwords that cannot be reused.
        },
        &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.
        &quot;readPoolAutoScaleConfig&quot;: { # The read pool auto-scale configuration. # Optional. The read pool auto-scale configuration for the instance.
          &quot;disableScaleIn&quot;: True or False, # Indicates whether read pool auto scaling supports scale in operations (removing nodes).
          &quot;enabled&quot;: True or False, # Indicates whether read pool auto scaling is enabled.
          &quot;maxNodeCount&quot;: 42, # Maximum number of read pool nodes to be maintained.
          &quot;minNodeCount&quot;: 42, # Minimum number of read pool nodes to be maintained.
          &quot;scaleInCooldownSeconds&quot;: 42, # The cooldown period for scale-in operations.
          &quot;scaleOutCooldownSeconds&quot;: 42, # The cooldown period for scale-out operations.
          &quot;targetMetrics&quot;: [ # Optional. Target metrics for read pool auto scaling.
            { # Target metric for read pool auto scaling.
              &quot;metric&quot;: &quot;A String&quot;, # The metric name to be used for auto scaling.
              &quot;targetValue&quot;: 3.14, # The target value for the metric.
            },
          ],
        },
        &quot;replicationLagMaxSeconds&quot;: 42, # Optional. Configuration value for recreation of replica after certain replication lag
        &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.
        &quot;retainBackupsOnDelete&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL retains backups of the instance even after the instance is deleted. The ON_DEMAND backup will be retained until customer deletes the backup or the project. The AUTOMATED backup will be retained based on the backups retention setting.
        &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
        &quot;sqlServerAuditConfig&quot;: { # SQL Server specific audit configuration. # SQL Server specific audit configuration.
          &quot;bucket&quot;: &quot;A String&quot;, # The name of the destination bucket (e.g., gs://mybucket).
          &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sqlServerAuditConfig
          &quot;retentionInterval&quot;: &quot;A String&quot;, # How long to keep generated audit files.
          &quot;uploadInterval&quot;: &quot;A String&quot;, # How often to upload generated audit files.
        },
        &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
        &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-custom-1-3840`. WARNING: Changing this restarts the instance.
        &quot;timeZone&quot;: &quot;A String&quot;, # Server timezone, relevant only for Cloud SQL for SQL Server.
        &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;sqlNetworkArchitecture&quot;: &quot;A String&quot;,
      &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance.
      &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
        &quot;A String&quot;,
      ],
      &quot;switchTransactionLogsToCloudStorageEnabled&quot;: True or False, # Input only. Whether Cloud SQL is enabled to switch storing point-in-time recovery log files from a data disk to Cloud Storage.
      &quot;tags&quot;: { # Optional. Input only. Immutable. Tag keys and tag values that are bound to this instance. You must represent each item in the map as: `&quot;&quot; : &quot;&quot;`. For example, a single resource can have the following tags: ``` &quot;123/environment&quot;: &quot;production&quot;, &quot;123/costCenter&quot;: &quot;marketing&quot;, ``` For more information on tag creation and management, see https://cloud.google.com/resource-manager/docs/tags/tags-overview.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;upgradableDatabaseVersions&quot;: [ # Output only. All database versions that are available for upgrade.
        { # An available database version. It can be a major or a minor version.
          &quot;displayName&quot;: &quot;A String&quot;, # The database version&#x27;s display name.
          &quot;majorVersion&quot;: &quot;A String&quot;, # The version&#x27;s major version name.
          &quot;name&quot;: &quot;A String&quot;, # The database version name. For MySQL 8.0, this string provides the database major and minor version.
        },
      ],
      &quot;writeEndpoint&quot;: &quot;A String&quot;, # Output only. The dns name of the primary instance in a replication group.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instancesList`.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
  &quot;warnings&quot;: [ # List of warnings that occurred while handling the request.
    { # An Admin API warning message.
      &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
      &quot;message&quot;: &quot;A String&quot;, # The warning message.
      &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listServerCas">listServerCas(project, instance, x__xgafv=None)</code>
  <pre>Lists all of the trusted Certificate Authorities (CAs) for the specified instance. There can be up to three CAs listed: the CA that was used to sign the certificate that is currently in use, a CA that has been added but not yet used to sign a certificate, and a CA used to sign a certificate that has previously rotated out.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Instances ListServerCas response.
  &quot;activeVersion&quot;: &quot;A String&quot;,
  &quot;certs&quot;: [ # List of server CA certificates for the instance.
    { # SslCerts Resource
      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instancesListServerCas`.
}</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(project, instance, body=None, x__xgafv=None)</code>
  <pre>Partially updates settings of a Cloud SQL instance by merging the request with the current configuration. This method supports patch semantics.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Cloud SQL instance resource.
  &quot;availableMaintenanceVersions&quot;: [ # Output only. List all maintenance versions applicable on the instance
    &quot;A String&quot;,
  ],
  &quot;backendType&quot;: &quot;A String&quot;, # The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.
  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.
  &quot;databaseInstalledVersion&quot;: &quot;A String&quot;, # Output only. Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.
  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.
  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionConfiguration`.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
  },
  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionStatus`.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
  },
  &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The dns name of the instance.
  &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this instance.
    { # DNS metadata.
      &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
      &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
      &quot;name&quot;: &quot;A String&quot;, # The DNS name.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.
  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
  },
  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.
  &quot;geminiConfig&quot;: { # Gemini instance configuration. # Gemini instance configuration.
    &quot;activeQueryEnabled&quot;: True or False, # Output only. Whether the active query is enabled.
    &quot;entitled&quot;: True or False, # Output only. Whether Gemini is enabled.
    &quot;flagRecommenderEnabled&quot;: True or False, # Output only. Whether the flag recommender is enabled.
    &quot;googleVacuumMgmtEnabled&quot;: True or False, # Output only. Whether the vacuum management is enabled.
    &quot;indexAdvisorEnabled&quot;: True or False, # Output only. Whether the index advisor is enabled.
    &quot;oomSessionCancelEnabled&quot;: True or False, # Output only. Whether canceling the out-of-memory (OOM) session is enabled.
  },
  &quot;includeReplicasForMajorVersionUpgrade&quot;: True or False, # Input only. Determines whether an in-place major version upgrade of replicas happens when an in-place major version upgrade of a primary instance is initiated.
  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type.
  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
    { # Database instance IP mapping
      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
    },
  ],
  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instance`.
  &quot;maintenanceVersion&quot;: &quot;A String&quot;, # The current software version on the instance.
  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
  &quot;nodeCount&quot;: 42, # The number of read pool nodes in a read pool.
  &quot;nodes&quot;: [ # Output only. Entries containing information about each read pool node of the read pool.
    { # Details of a single read pool node of a read pool.
      &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The DNS name of the read pool node.
      &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this read pool node.
        { # DNS metadata.
          &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
          &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
          &quot;name&quot;: &quot;A String&quot;, # The DNS name.
        },
      ],
      &quot;gceZone&quot;: &quot;A String&quot;, # Output only. The zone of the read pool node.
      &quot;ipAddresses&quot;: [ # Output only. Mappings containing IP addresses that can be used to connect to the read pool node.
        { # Database instance IP mapping
          &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
          &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
          &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the read pool node, to be used for retrieving metrics and logs.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the read pool node.
    },
  ],
  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#onPremisesConfiguration`.
    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
    &quot;selectedObjects&quot;: [ # Optional. A list of objects that the user selects for replication from an external source instance.
      { # A list of objects that the user selects for replication from an external source instance.
        &quot;database&quot;: &quot;A String&quot;, # Required. The name of the database to migrate.
      },
    ],
    &quot;sourceInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to Cloud SQL instance if the source is Cloud SQL.
      &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced. This does not include the project ID.
      &quot;project&quot;: &quot;A String&quot;, # The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it.
      &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
    },
    &quot;sslOption&quot;: &quot;A String&quot;, # Optional. SSL option for replica connection to the on-premises source.
    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
  },
  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:
    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
  },
  &quot;primaryDnsName&quot;: &quot;A String&quot;, # Output only. DEPRECATED: please use write_endpoint instead.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
  &quot;pscServiceAttachmentLink&quot;: &quot;A String&quot;, # Output only. The link to service attachment of PSC instance.
  &quot;region&quot;: &quot;A String&quot;, # The geographical region of the Cloud SQL instance. It can be one of the [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) where Cloud SQL operates: For example, `asia-east1`, `europe-west1`, and `us-central1`. The default value is `us-central1`.
  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
    &quot;cascadableReplica&quot;: True or False, # Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#replicaConfiguration`.
    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#mysqlReplicaConfiguration`.
      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
    },
  },
  &quot;replicaNames&quot;: [ # The replicas of the instance.
    &quot;A String&quot;,
  ],
  &quot;replicationCluster&quot;: { # A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL. # Optional. A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL.
    &quot;drReplica&quot;: True or False, # Output only. Read-only field that indicates whether the replica is a DR replica. This field is not set if the instance is a primary instance.
    &quot;failoverDrReplicaName&quot;: &quot;A String&quot;, # Optional. If the instance is a primary instance, then this field identifies the disaster recovery (DR) replica. A DR replica is an optional configuration for Enterprise Plus edition instances. If the instance is a read replica, then the field is not set. Set this field to a replica name to designate a DR replica for a primary instance. Remove the replica name to remove the DR replica designation.
    &quot;psaWriteEndpoint&quot;: &quot;A String&quot;, # Output only. If set, this field indicates this instance has a private service access (PSA) DNS endpoint that is pointing to the primary instance of the cluster. If this instance is the primary, then the DNS endpoint points to this instance. After a switchover or replica failover operation, this DNS endpoint points to the promoted instance. This is a read-only field, returned to the user as information. This field can exist even if a standalone instance doesn&#x27;t have a DR replica yet or the DR replica is deleted.
  },
  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.
  &quot;satisfiesPzi&quot;: True or False, # Output only. This status indicates whether the instance satisfies PZI. The status is reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # This status indicates whether the instance satisfies PZS. The status is reserved for future use.
  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenance for this instance. # The start time of any upcoming scheduled maintenance for this instance.
    &quot;canDefer&quot;: True or False,
    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
  },
  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
  },
  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance.\This property is read-only.
  &quot;settings&quot;: { # Database instance settings. # The user settings.
    &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 RUNNABLE. Valid values: * `ALWAYS`: 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;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
      &quot;adminCredentialSecretName&quot;: &quot;A String&quot;, # Optional. The secret manager key storing the administrator credential. (e.g., projects/{project}/secrets/{secret}).
      &quot;dnsServers&quot;: [ # Optional. Domain controller IPv4 addresses used to bootstrap Active Directory.
        &quot;A String&quot;,
      ],
      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
      &quot;mode&quot;: &quot;A String&quot;, # Optional. The mode of the Active Directory configuration.
      &quot;organizationalUnit&quot;: &quot;A String&quot;, # Optional. The organizational unit distinguished name. This is the full hierarchical path to the organizational unit.
    },
    &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Specifies advanced machine configuration for the instances relevant only for SQL Server.
      &quot;threadsPerCore&quot;: 42, # The number of threads per physical core.
    },
    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
      &quot;A String&quot;,
    ],
    &quot;autoUpgradeEnabled&quot;: True or False, # Optional. Cloud SQL for MySQL auto-upgrade configuration. When this parameter is set to true, auto-upgrade is enabled for MySQL 8.0 minor versions. The MySQL version must be 8.0.35 or higher.
    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
      },
      &quot;backupTier&quot;: &quot;A String&quot;, # Output only. Backup tier that manages the backups for the instance.
      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupConfiguration`.
      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # Whether point in time recovery is enabled.
      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`.
      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
      &quot;transactionalLogStorageState&quot;: &quot;A String&quot;, # Output only. This value contains the storage location of transactional logs used to perform point-in-time recovery (PITR) for the database.
    },
    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
    &quot;connectionPoolConfig&quot;: { # The managed connection pooling configuration. # Optional. The managed connection pooling configuration for the instance.
      &quot;connectionPoolingEnabled&quot;: True or False, # Whether managed connection pooling is enabled.
      &quot;flags&quot;: [ # Optional. List of connection pool configuration flags.
        { # Connection pool flags for Cloud SQL instances managed connection pool configuration.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the flag.
          &quot;value&quot;: &quot;A String&quot;, # Required. The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
        },
      ],
      &quot;poolerCount&quot;: 42, # Output only. Number of connection poolers.
    },
    &quot;connectorEnforcement&quot;: &quot;A String&quot;, # Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.
    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
    &quot;dataApiAccess&quot;: &quot;A String&quot;, # This parameter controls whether to allow using Data API to connect to the instance. Not allowed by default.
    &quot;dataCacheConfig&quot;: { # Data cache configurations. # Configuration for data cache.
      &quot;dataCacheEnabled&quot;: True or False, # 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 size of data disk, in GB. The data disk size minimum is 10GB.
    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.
    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
      { # Database flags for Cloud SQL instances.
        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
      },
    ],
    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance.
    &quot;deletionProtectionEnabled&quot;: True or False, # Configuration to protect against accidental instance deletion.
    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
      },
    ],
    &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the instance.
    &quot;enableDataplexIntegration&quot;: True or False, # Optional. By default, Cloud SQL instances have schema extraction disabled for Dataplex. When this parameter is set to true, schema extraction for Dataplex on Cloud SQL instances is activated.
    &quot;enableGoogleMlIntegration&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL instances can connect to Vertex AI to pass requests for real-time predictions and insights to the AI. The default value is false. This applies only to Cloud SQL for MySQL and Cloud SQL for PostgreSQL instances.
    &quot;finalBackupConfig&quot;: { # Config used to determine the final backup settings for the instance. # Optional. The final backup configuration for the instance.
      &quot;enabled&quot;: True or False, # Whether the final backup is enabled for the instance.
      &quot;retentionDays&quot;: 42, # The number of days to retain the final backup after the instance deletion. The final backup will be purged at (time_of_instance_deletion + retention_days).
    },
    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query lengths greater than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
    },
    &quot;ipConfiguration&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 for Second Generation instances.
      &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`
      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: `157.197.200.0/24`).
        { # An entry for an Access Control list.
          &quot;expirationTime&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;kind&quot;: &quot;A String&quot;, # This is always `sql#aclEntry`.
          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
        },
      ],
      &quot;customSubjectAlternativeNames&quot;: [ # Optional. Custom Subject Alternative Name(SAN)s for a Cloud SQL instance.
        &quot;A String&quot;,
      ],
      &quot;enablePrivatePathForGoogleCloudServices&quot;: True or False, # Controls connectivity to private IP instances from Google services, such as BigQuery.
      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP 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;pscConfig&quot;: { # PSC settings for a Cloud SQL instance. # PSC settings for this instance.
        &quot;allowedConsumerProjects&quot;: [ # Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric).
          &quot;A String&quot;,
        ],
        &quot;networkAttachmentUri&quot;: &quot;A String&quot;, # Optional. The network attachment of the consumer network that the Private Service Connect enabled Cloud SQL instance is authorized to connect via PSC interface. format: projects/PROJECT/regions/REGION/networkAttachments/ID
        &quot;pscAutoConnections&quot;: [ # Optional. The list of settings for requested Private Service Connect consumer endpoints that can be used to connect to this Cloud SQL instance.
          { # Settings for an automatically-setup Private Service Connect consumer endpoint that is used to connect to a Cloud SQL instance.
            &quot;consumerNetwork&quot;: &quot;A String&quot;, # Optional. The consumer network of this consumer endpoint. This must be a resource path that includes both the host project and the network name. For example, `projects/project1/global/networks/network1`. The consumer host project of this network might be different from the consumer service project.
            &quot;consumerNetworkStatus&quot;: &quot;A String&quot;, # The connection policy status of the consumer network.
            &quot;consumerProject&quot;: &quot;A String&quot;, # Optional. This is the project ID of consumer service project of this consumer endpoint. Optional. This is only applicable if consumer_network is a shared vpc network.
            &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address of the consumer endpoint.
            &quot;status&quot;: &quot;A String&quot;, # The connection status of the consumer endpoint.
          },
        ],
        &quot;pscEnabled&quot;: True or False, # Whether PSC connectivity is enabled for this instance.
      },
      &quot;requireSsl&quot;: True or False, # Use `ssl_mode` instead. Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won&#x27;t be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the `require_ssl` flag.
      &quot;serverCaMode&quot;: &quot;A String&quot;, # Specify what type of CA is used for the server certificate.
      &quot;serverCaPool&quot;: &quot;A String&quot;, # Optional. The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. Format: projects/{PROJECT}/locations/{REGION}/caPools/{CA_POOL_ID}
      &quot;sslMode&quot;: &quot;A String&quot;, # Specify how SSL/TLS is enforced in database connections. If you must use the `require_ssl` flag for backward compatibility, then only the following value pairs are valid: For PostgreSQL and MySQL: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` For SQL Server: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=true` The value of `ssl_mode` has priority over the value of `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false`, `ssl_mode=ENCRYPTED_ONLY` means accept only SSL connections, while `require_ssl=false` means accept both non-SSL and SSL connections. In this case, MySQL and PostgreSQL databases respect `ssl_mode` and accepts only SSL connections.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#settings`.
    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances.
      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#locationPreference`.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to &#x27;no_secondary_zone&#x27;.
      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance.
    },
    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
      &quot;day&quot;: 42, # Day of week - `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, or `SUNDAY`. Specify in the UTC time zone. Returned in output as an integer, 1 to 7, where `1` equals Monday.
      &quot;hour&quot;: 42, # Hour of day - 0 to 23. Specify in the UTC time zone.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#maintenanceWindow`.
      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing settings: `canary`, `stable`, or `week5`. For more information, see [About maintenance on Cloud SQL instances](https://cloud.google.com/sql/docs/mysql/maintenance).
    },
    &quot;passwordValidationPolicy&quot;: { # Database instance local user password validation policy # The local user password validation policy of the instance.
      &quot;complexity&quot;: &quot;A String&quot;, # The complexity of the password.
      &quot;disallowCompromisedCredentials&quot;: True or False, # This field is deprecated and will be removed in a future version of the API.
      &quot;disallowUsernameSubstring&quot;: True or False, # Disallow username as a part of the password.
      &quot;enablePasswordPolicy&quot;: True or False, # Whether the password policy is enabled or not.
      &quot;minLength&quot;: 42, # Minimum number of characters allowed.
      &quot;passwordChangeInterval&quot;: &quot;A String&quot;, # Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL.
      &quot;reuseInterval&quot;: 42, # Number of previous passwords that cannot be reused.
    },
    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.
    &quot;readPoolAutoScaleConfig&quot;: { # The read pool auto-scale configuration. # Optional. The read pool auto-scale configuration for the instance.
      &quot;disableScaleIn&quot;: True or False, # Indicates whether read pool auto scaling supports scale in operations (removing nodes).
      &quot;enabled&quot;: True or False, # Indicates whether read pool auto scaling is enabled.
      &quot;maxNodeCount&quot;: 42, # Maximum number of read pool nodes to be maintained.
      &quot;minNodeCount&quot;: 42, # Minimum number of read pool nodes to be maintained.
      &quot;scaleInCooldownSeconds&quot;: 42, # The cooldown period for scale-in operations.
      &quot;scaleOutCooldownSeconds&quot;: 42, # The cooldown period for scale-out operations.
      &quot;targetMetrics&quot;: [ # Optional. Target metrics for read pool auto scaling.
        { # Target metric for read pool auto scaling.
          &quot;metric&quot;: &quot;A String&quot;, # The metric name to be used for auto scaling.
          &quot;targetValue&quot;: 3.14, # The target value for the metric.
        },
      ],
    },
    &quot;replicationLagMaxSeconds&quot;: 42, # Optional. Configuration value for recreation of replica after certain replication lag
    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.
    &quot;retainBackupsOnDelete&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL retains backups of the instance even after the instance is deleted. The ON_DEMAND backup will be retained until customer deletes the backup or the project. The AUTOMATED backup will be retained based on the backups retention setting.
    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
    &quot;sqlServerAuditConfig&quot;: { # SQL Server specific audit configuration. # SQL Server specific audit configuration.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the destination bucket (e.g., gs://mybucket).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sqlServerAuditConfig
      &quot;retentionInterval&quot;: &quot;A String&quot;, # How long to keep generated audit files.
      &quot;uploadInterval&quot;: &quot;A String&quot;, # How often to upload generated audit files.
    },
    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
    &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-custom-1-3840`. WARNING: Changing this restarts the instance.
    &quot;timeZone&quot;: &quot;A String&quot;, # Server timezone, relevant only for Cloud SQL for SQL Server.
    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sqlNetworkArchitecture&quot;: &quot;A String&quot;,
  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance.
  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
    &quot;A String&quot;,
  ],
  &quot;switchTransactionLogsToCloudStorageEnabled&quot;: True or False, # Input only. Whether Cloud SQL is enabled to switch storing point-in-time recovery log files from a data disk to Cloud Storage.
  &quot;tags&quot;: { # Optional. Input only. Immutable. Tag keys and tag values that are bound to this instance. You must represent each item in the map as: `&quot;&quot; : &quot;&quot;`. For example, a single resource can have the following tags: ``` &quot;123/environment&quot;: &quot;production&quot;, &quot;123/costCenter&quot;: &quot;marketing&quot;, ``` For more information on tag creation and management, see https://cloud.google.com/resource-manager/docs/tags/tags-overview.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;upgradableDatabaseVersions&quot;: [ # Output only. All database versions that are available for upgrade.
    { # An available database version. It can be a major or a minor version.
      &quot;displayName&quot;: &quot;A String&quot;, # The database version&#x27;s display name.
      &quot;majorVersion&quot;: &quot;A String&quot;, # The version&#x27;s major version name.
      &quot;name&quot;: &quot;A String&quot;, # The database version name. For MySQL 8.0, this string provides the database major and minor version.
    },
  ],
  &quot;writeEndpoint&quot;: &quot;A String&quot;, # Output only. The dns name of the primary instance in a replication group.
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="pointInTimeRestore">pointInTimeRestore(parent, body=None, x__xgafv=None)</code>
  <pre>Point in time restore for an instance managed by Google Cloud Backup and Disaster Recovery.

Args:
  parent: string, Required. The parent resource where you created this instance. Format: projects/{project} (required)
  body: object, The request body.
    The object takes the form of:

{ # The context to perform a point-in-time recovery of an instance managed by Google Cloud Backup and Disaster Recovery.
  &quot;allocatedIpRange&quot;: &quot;A String&quot;, # Optional. The name of the allocated IP range for the internal IP Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If you set this, then Cloud SQL creates the IP address for the cloned instance in the allocated range. This range must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035) standards. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?. Reserved for future use.
  &quot;datasource&quot;: &quot;A String&quot;, # The Google Cloud Backup and Disaster Recovery Datasource URI. Format: projects/{project}/locations/{region}/backupVaults/{backupvault}/dataSources/{datasource}.
  &quot;pointInTime&quot;: &quot;A String&quot;, # Required. The date and time to which you want to restore the instance.
  &quot;preferredSecondaryZone&quot;: &quot;A String&quot;, # Optional. Point-in-time recovery of a regional instance in the specified zones. If not specified, clone to the same secondary zone as the source instance. This value cannot be the same as the preferred_zone field.
  &quot;preferredZone&quot;: &quot;A String&quot;, # Optional. Point-in-time recovery of an instance to the specified zone. If no zone is specified, then clone to the same primary zone as the source instance.
  &quot;privateNetwork&quot;: &quot;A String&quot;, # Optional. 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`.
  &quot;targetInstance&quot;: &quot;A String&quot;, # Target instance name.
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="preCheckMajorVersionUpgrade">preCheckMajorVersionUpgrade(project, instance, body=None, x__xgafv=None)</code>
  <pre>Execute MVU Pre-checks

Args:
  project: string, Required. Project ID of the project that contains the instance. (required)
  instance: string, Required. Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for Pre-checks for MVU
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # Required. Contains details about the pre-check major version upgrade operation.
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="promoteReplica">promoteReplica(project, instance, failover=None, x__xgafv=None)</code>
  <pre>Promotes the read replica instance to be an independent Cloud SQL primary instance. Using this operation might cause your instance to restart.

Args:
  project: string, ID of the project that contains the read replica. (required)
  instance: string, Cloud SQL read replica instance name. (required)
  failover: boolean, Set to true to invoke a replica failover to the DR replica. As part of replica failover, the promote operation attempts to add the original primary instance as a replica of the promoted DR replica when the original primary instance comes back online. If set to false or not specified, then the original primary instance becomes an independent Cloud SQL primary instance.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="reencrypt">reencrypt(project, instance, body=None, x__xgafv=None)</code>
  <pre>Reencrypt CMEK instance with latest key version.

Args:
  project: string, ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Database Instance reencrypt request.
  &quot;backupReencryptionConfig&quot;: { # Backup Reencryption Config # Configuration specific to backup re-encryption
    &quot;backupLimit&quot;: 42, # Backup re-encryption limit
    &quot;backupType&quot;: &quot;A String&quot;, # Type of backups users want to re-encrypt.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="releaseSsrsLease">releaseSsrsLease(project, instance, x__xgafv=None)</code>
  <pre>Release a lease for the setup of SQL Server Reporting Services (SSRS).

Args:
  project: string, Required. The project ID that contains the instance. (required)
  instance: string, Required. The Cloud SQL instance ID. This doesn&#x27;t include the project ID. The instance ID contains lowercase letters, numbers, and hyphens, and it must start with a letter. This ID can have a maximum length of 98 characters. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for the release SSRS lease request.
  &quot;operationId&quot;: &quot;A String&quot;, # The unique identifier for this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="resetSslConfig">resetSslConfig(project, instance, mode=None, x__xgafv=None)</code>
  <pre>Deletes all client certificates and generates a new server SSL certificate for the instance.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  mode: string, Optional. Reset SSL mode to use.
    Allowed values
      RESET_SSL_MODE_UNSPECIFIED - Reset SSL mode is not specified.
      ALL - Refresh all TLS configs. This is the default behaviour.
      SYNC_FROM_PRIMARY - Refreshes the replication-related TLS configuration settings provided by the primary instance. Not applicable to on-premises replication instances.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="restart">restart(project, instance, x__xgafv=None)</code>
  <pre>Restarts a Cloud SQL instance.

Args:
  project: string, Project ID of the project that contains the instance to be restarted. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="restoreBackup">restoreBackup(project, instance, body=None, x__xgafv=None)</code>
  <pre>Restores a backup of a Cloud SQL instance. Using this operation might cause your instance to restart.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Database instance restore backup request.
  &quot;backup&quot;: &quot;A String&quot;, # The name of the backup that&#x27;s used to restore a Cloud SQL instance: Format: projects/{project-id}/backups/{backup-uid}. Only one of restore_backup_context, backup, backupdr_backup can be passed to the input.
  &quot;backupdrBackup&quot;: &quot;A String&quot;, # The name of the backup that&#x27;s used to restore a Cloud SQL instance: Format: &quot;projects/{project-id}/locations/{location}/backupVaults/{backupvault}/dataSources/{datasource}/backups/{backup-uid}&quot;. Only one of restore_backup_context, backup, backupdr_backup can be passed to the input.
  &quot;restoreBackupContext&quot;: { # Database instance restore from backup context. Backup context contains source instance id and project id. # Parameters required to perform the restore backup operation.
    &quot;backupRunId&quot;: &quot;A String&quot;, # The ID of the backup run to restore from.
    &quot;instanceId&quot;: &quot;A String&quot;, # The ID of the instance that the backup was taken from.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#restoreBackupContext`.
    &quot;project&quot;: &quot;A String&quot;, # The full project ID of the source instance.
  },
  &quot;restoreInstanceClearOverridesFieldNames&quot;: [ # Optional. This field has the same purpose as restore_instance_settings, changes any instance settings stored in the backup you are restoring from. With the difference that these fields are cleared in the settings.
    &quot;A String&quot;,
  ],
  &quot;restoreInstanceSettings&quot;: { # A Cloud SQL instance resource. # Optional. By using this parameter, Cloud SQL overrides any instance settings stored in the backup you are restoring from. You can&#x27;t change the instance&#x27;s major database version and you can only increase the disk size. You can use this field to restore new instances only. This field is not applicable for restore to existing instances.
    &quot;availableMaintenanceVersions&quot;: [ # Output only. List all maintenance versions applicable on the instance
      &quot;A String&quot;,
    ],
    &quot;backendType&quot;: &quot;A String&quot;, # The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.
    &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
    &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.
    &quot;databaseInstalledVersion&quot;: &quot;A String&quot;, # Output only. Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.
    &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.
    &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionConfiguration`.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
    },
    &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionStatus`.
      &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
    },
    &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The dns name of the instance.
    &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this instance.
      { # DNS metadata.
        &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
        &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
        &quot;name&quot;: &quot;A String&quot;, # The DNS name.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.
    &quot;failoverReplica&quot;: { # The name and status of the failover replica.
      &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
      &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
    },
    &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.
    &quot;geminiConfig&quot;: { # Gemini instance configuration. # Gemini instance configuration.
      &quot;activeQueryEnabled&quot;: True or False, # Output only. Whether the active query is enabled.
      &quot;entitled&quot;: True or False, # Output only. Whether Gemini is enabled.
      &quot;flagRecommenderEnabled&quot;: True or False, # Output only. Whether the flag recommender is enabled.
      &quot;googleVacuumMgmtEnabled&quot;: True or False, # Output only. Whether the vacuum management is enabled.
      &quot;indexAdvisorEnabled&quot;: True or False, # Output only. Whether the index advisor is enabled.
      &quot;oomSessionCancelEnabled&quot;: True or False, # Output only. Whether canceling the out-of-memory (OOM) session is enabled.
    },
    &quot;includeReplicasForMajorVersionUpgrade&quot;: True or False, # Input only. Determines whether an in-place major version upgrade of replicas happens when an in-place major version upgrade of a primary instance is initiated.
    &quot;instanceType&quot;: &quot;A String&quot;, # The instance type.
    &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
      { # Database instance IP mapping
        &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
        &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
        &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
      },
    ],
    &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instance`.
    &quot;maintenanceVersion&quot;: &quot;A String&quot;, # The current software version on the instance.
    &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
    &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
    &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
    &quot;nodeCount&quot;: 42, # The number of read pool nodes in a read pool.
    &quot;nodes&quot;: [ # Output only. Entries containing information about each read pool node of the read pool.
      { # Details of a single read pool node of a read pool.
        &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The DNS name of the read pool node.
        &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this read pool node.
          { # DNS metadata.
            &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
            &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
            &quot;name&quot;: &quot;A String&quot;, # The DNS name.
          },
        ],
        &quot;gceZone&quot;: &quot;A String&quot;, # Output only. The zone of the read pool node.
        &quot;ipAddresses&quot;: [ # Output only. Mappings containing IP addresses that can be used to connect to the read pool node.
          { # Database instance IP mapping
            &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
            &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
            &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the read pool node, to be used for retrieving metrics and logs.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the read pool node.
      },
    ],
    &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
      &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
      &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#onPremisesConfiguration`.
      &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
      &quot;selectedObjects&quot;: [ # Optional. A list of objects that the user selects for replication from an external source instance.
        { # A list of objects that the user selects for replication from an external source instance.
          &quot;database&quot;: &quot;A String&quot;, # Required. The name of the database to migrate.
        },
      ],
      &quot;sourceInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to Cloud SQL instance if the source is Cloud SQL.
        &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced. This does not include the project ID.
        &quot;project&quot;: &quot;A String&quot;, # The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it.
        &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
      },
      &quot;sslOption&quot;: &quot;A String&quot;, # Optional. SSL option for replica connection to the on-premises source.
      &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
    },
    &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
      &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:
      &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
    },
    &quot;primaryDnsName&quot;: &quot;A String&quot;, # Output only. DEPRECATED: please use write_endpoint instead.
    &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
    &quot;pscServiceAttachmentLink&quot;: &quot;A String&quot;, # Output only. The link to service attachment of PSC instance.
    &quot;region&quot;: &quot;A String&quot;, # The geographical region of the Cloud SQL instance. It can be one of the [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) where Cloud SQL operates: For example, `asia-east1`, `europe-west1`, and `us-central1`. The default value is `us-central1`.
    &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
      &quot;cascadableReplica&quot;: True or False, # Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
      &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#replicaConfiguration`.
      &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
        &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
        &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
        &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
        &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#mysqlReplicaConfiguration`.
        &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
        &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
        &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
        &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
        &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
      },
    },
    &quot;replicaNames&quot;: [ # The replicas of the instance.
      &quot;A String&quot;,
    ],
    &quot;replicationCluster&quot;: { # A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL. # Optional. A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL.
      &quot;drReplica&quot;: True or False, # Output only. Read-only field that indicates whether the replica is a DR replica. This field is not set if the instance is a primary instance.
      &quot;failoverDrReplicaName&quot;: &quot;A String&quot;, # Optional. If the instance is a primary instance, then this field identifies the disaster recovery (DR) replica. A DR replica is an optional configuration for Enterprise Plus edition instances. If the instance is a read replica, then the field is not set. Set this field to a replica name to designate a DR replica for a primary instance. Remove the replica name to remove the DR replica designation.
      &quot;psaWriteEndpoint&quot;: &quot;A String&quot;, # Output only. If set, this field indicates this instance has a private service access (PSA) DNS endpoint that is pointing to the primary instance of the cluster. If this instance is the primary, then the DNS endpoint points to this instance. After a switchover or replica failover operation, this DNS endpoint points to the promoted instance. This is a read-only field, returned to the user as information. This field can exist even if a standalone instance doesn&#x27;t have a DR replica yet or the DR replica is deleted.
    },
    &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.
    &quot;satisfiesPzi&quot;: True or False, # Output only. This status indicates whether the instance satisfies PZI. The status is reserved for future use.
    &quot;satisfiesPzs&quot;: True or False, # This status indicates whether the instance satisfies PZS. The status is reserved for future use.
    &quot;scheduledMaintenance&quot;: { # Any scheduled maintenance for this instance. # The start time of any upcoming scheduled maintenance for this instance.
      &quot;canDefer&quot;: True or False,
      &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
      &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
    },
    &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
    },
    &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance.\This property is read-only.
    &quot;settings&quot;: { # Database instance settings. # The user settings.
      &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 RUNNABLE. Valid values: * `ALWAYS`: 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;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
        &quot;adminCredentialSecretName&quot;: &quot;A String&quot;, # Optional. The secret manager key storing the administrator credential. (e.g., projects/{project}/secrets/{secret}).
        &quot;dnsServers&quot;: [ # Optional. Domain controller IPv4 addresses used to bootstrap Active Directory.
          &quot;A String&quot;,
        ],
        &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
        &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
        &quot;mode&quot;: &quot;A String&quot;, # Optional. The mode of the Active Directory configuration.
        &quot;organizationalUnit&quot;: &quot;A String&quot;, # Optional. The organizational unit distinguished name. This is the full hierarchical path to the organizational unit.
      },
      &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Specifies advanced machine configuration for the instances relevant only for SQL Server.
        &quot;threadsPerCore&quot;: 42, # The number of threads per physical core.
      },
      &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
        &quot;A String&quot;,
      ],
      &quot;autoUpgradeEnabled&quot;: True or False, # Optional. Cloud SQL for MySQL auto-upgrade configuration. When this parameter is set to true, auto-upgrade is enabled for MySQL 8.0 minor versions. The MySQL version must be 8.0.35 or higher.
      &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
      &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
        &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
          &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
          &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
        },
        &quot;backupTier&quot;: &quot;A String&quot;, # Output only. Backup tier that manages the backups for the instance.
        &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
        &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupConfiguration`.
        &quot;location&quot;: &quot;A String&quot;, # Location of the backup
        &quot;pointInTimeRecoveryEnabled&quot;: True or False, # Whether point in time recovery is enabled.
        &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
        &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`.
        &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
        &quot;transactionalLogStorageState&quot;: &quot;A String&quot;, # Output only. This value contains the storage location of transactional logs used to perform point-in-time recovery (PITR) for the database.
      },
      &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
      &quot;connectionPoolConfig&quot;: { # The managed connection pooling configuration. # Optional. The managed connection pooling configuration for the instance.
        &quot;connectionPoolingEnabled&quot;: True or False, # Whether managed connection pooling is enabled.
        &quot;flags&quot;: [ # Optional. List of connection pool configuration flags.
          { # Connection pool flags for Cloud SQL instances managed connection pool configuration.
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of the flag.
            &quot;value&quot;: &quot;A String&quot;, # Required. The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
          },
        ],
        &quot;poolerCount&quot;: 42, # Output only. Number of connection poolers.
      },
      &quot;connectorEnforcement&quot;: &quot;A String&quot;, # Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.
      &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
      &quot;dataApiAccess&quot;: &quot;A String&quot;, # This parameter controls whether to allow using Data API to connect to the instance. Not allowed by default.
      &quot;dataCacheConfig&quot;: { # Data cache configurations. # Configuration for data cache.
        &quot;dataCacheEnabled&quot;: True or False, # 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 size of data disk, in GB. The data disk size minimum is 10GB.
      &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.
      &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
        { # Database flags for Cloud SQL instances.
          &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
          &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
        },
      ],
      &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance.
      &quot;deletionProtectionEnabled&quot;: True or False, # Configuration to protect against accidental instance deletion.
      &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
        { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
          &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
          &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
          &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
        },
      ],
      &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the instance.
      &quot;enableDataplexIntegration&quot;: True or False, # Optional. By default, Cloud SQL instances have schema extraction disabled for Dataplex. When this parameter is set to true, schema extraction for Dataplex on Cloud SQL instances is activated.
      &quot;enableGoogleMlIntegration&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL instances can connect to Vertex AI to pass requests for real-time predictions and insights to the AI. The default value is false. This applies only to Cloud SQL for MySQL and Cloud SQL for PostgreSQL instances.
      &quot;finalBackupConfig&quot;: { # Config used to determine the final backup settings for the instance. # Optional. The final backup configuration for the instance.
        &quot;enabled&quot;: True or False, # Whether the final backup is enabled for the instance.
        &quot;retentionDays&quot;: 42, # The number of days to retain the final backup after the instance deletion. The final backup will be purged at (time_of_instance_deletion + retention_days).
      },
      &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
        &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
        &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
        &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query lengths greater than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
        &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
        &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
      },
      &quot;ipConfiguration&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 for Second Generation instances.
        &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`
        &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: `157.197.200.0/24`).
          { # An entry for an Access Control list.
            &quot;expirationTime&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;kind&quot;: &quot;A String&quot;, # This is always `sql#aclEntry`.
            &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
            &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
          },
        ],
        &quot;customSubjectAlternativeNames&quot;: [ # Optional. Custom Subject Alternative Name(SAN)s for a Cloud SQL instance.
          &quot;A String&quot;,
        ],
        &quot;enablePrivatePathForGoogleCloudServices&quot;: True or False, # Controls connectivity to private IP instances from Google services, such as BigQuery.
        &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP 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;pscConfig&quot;: { # PSC settings for a Cloud SQL instance. # PSC settings for this instance.
          &quot;allowedConsumerProjects&quot;: [ # Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric).
            &quot;A String&quot;,
          ],
          &quot;networkAttachmentUri&quot;: &quot;A String&quot;, # Optional. The network attachment of the consumer network that the Private Service Connect enabled Cloud SQL instance is authorized to connect via PSC interface. format: projects/PROJECT/regions/REGION/networkAttachments/ID
          &quot;pscAutoConnections&quot;: [ # Optional. The list of settings for requested Private Service Connect consumer endpoints that can be used to connect to this Cloud SQL instance.
            { # Settings for an automatically-setup Private Service Connect consumer endpoint that is used to connect to a Cloud SQL instance.
              &quot;consumerNetwork&quot;: &quot;A String&quot;, # Optional. The consumer network of this consumer endpoint. This must be a resource path that includes both the host project and the network name. For example, `projects/project1/global/networks/network1`. The consumer host project of this network might be different from the consumer service project.
              &quot;consumerNetworkStatus&quot;: &quot;A String&quot;, # The connection policy status of the consumer network.
              &quot;consumerProject&quot;: &quot;A String&quot;, # Optional. This is the project ID of consumer service project of this consumer endpoint. Optional. This is only applicable if consumer_network is a shared vpc network.
              &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address of the consumer endpoint.
              &quot;status&quot;: &quot;A String&quot;, # The connection status of the consumer endpoint.
            },
          ],
          &quot;pscEnabled&quot;: True or False, # Whether PSC connectivity is enabled for this instance.
        },
        &quot;requireSsl&quot;: True or False, # Use `ssl_mode` instead. Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won&#x27;t be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the `require_ssl` flag.
        &quot;serverCaMode&quot;: &quot;A String&quot;, # Specify what type of CA is used for the server certificate.
        &quot;serverCaPool&quot;: &quot;A String&quot;, # Optional. The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. Format: projects/{PROJECT}/locations/{REGION}/caPools/{CA_POOL_ID}
        &quot;sslMode&quot;: &quot;A String&quot;, # Specify how SSL/TLS is enforced in database connections. If you must use the `require_ssl` flag for backward compatibility, then only the following value pairs are valid: For PostgreSQL and MySQL: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` For SQL Server: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=true` The value of `ssl_mode` has priority over the value of `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false`, `ssl_mode=ENCRYPTED_ONLY` means accept only SSL connections, while `require_ssl=false` means accept both non-SSL and SSL connections. In this case, MySQL and PostgreSQL databases respect `ssl_mode` and accepts only SSL connections.
      },
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#settings`.
      &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances.
        &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#locationPreference`.
        &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to &#x27;no_secondary_zone&#x27;.
        &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance.
      },
      &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
        &quot;day&quot;: 42, # Day of week - `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, or `SUNDAY`. Specify in the UTC time zone. Returned in output as an integer, 1 to 7, where `1` equals Monday.
        &quot;hour&quot;: 42, # Hour of day - 0 to 23. Specify in the UTC time zone.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#maintenanceWindow`.
        &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing settings: `canary`, `stable`, or `week5`. For more information, see [About maintenance on Cloud SQL instances](https://cloud.google.com/sql/docs/mysql/maintenance).
      },
      &quot;passwordValidationPolicy&quot;: { # Database instance local user password validation policy # The local user password validation policy of the instance.
        &quot;complexity&quot;: &quot;A String&quot;, # The complexity of the password.
        &quot;disallowCompromisedCredentials&quot;: True or False, # This field is deprecated and will be removed in a future version of the API.
        &quot;disallowUsernameSubstring&quot;: True or False, # Disallow username as a part of the password.
        &quot;enablePasswordPolicy&quot;: True or False, # Whether the password policy is enabled or not.
        &quot;minLength&quot;: 42, # Minimum number of characters allowed.
        &quot;passwordChangeInterval&quot;: &quot;A String&quot;, # Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL.
        &quot;reuseInterval&quot;: 42, # Number of previous passwords that cannot be reused.
      },
      &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.
      &quot;readPoolAutoScaleConfig&quot;: { # The read pool auto-scale configuration. # Optional. The read pool auto-scale configuration for the instance.
        &quot;disableScaleIn&quot;: True or False, # Indicates whether read pool auto scaling supports scale in operations (removing nodes).
        &quot;enabled&quot;: True or False, # Indicates whether read pool auto scaling is enabled.
        &quot;maxNodeCount&quot;: 42, # Maximum number of read pool nodes to be maintained.
        &quot;minNodeCount&quot;: 42, # Minimum number of read pool nodes to be maintained.
        &quot;scaleInCooldownSeconds&quot;: 42, # The cooldown period for scale-in operations.
        &quot;scaleOutCooldownSeconds&quot;: 42, # The cooldown period for scale-out operations.
        &quot;targetMetrics&quot;: [ # Optional. Target metrics for read pool auto scaling.
          { # Target metric for read pool auto scaling.
            &quot;metric&quot;: &quot;A String&quot;, # The metric name to be used for auto scaling.
            &quot;targetValue&quot;: 3.14, # The target value for the metric.
          },
        ],
      },
      &quot;replicationLagMaxSeconds&quot;: 42, # Optional. Configuration value for recreation of replica after certain replication lag
      &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.
      &quot;retainBackupsOnDelete&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL retains backups of the instance even after the instance is deleted. The ON_DEMAND backup will be retained until customer deletes the backup or the project. The AUTOMATED backup will be retained based on the backups retention setting.
      &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
      &quot;sqlServerAuditConfig&quot;: { # SQL Server specific audit configuration. # SQL Server specific audit configuration.
        &quot;bucket&quot;: &quot;A String&quot;, # The name of the destination bucket (e.g., gs://mybucket).
        &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sqlServerAuditConfig
        &quot;retentionInterval&quot;: &quot;A String&quot;, # How long to keep generated audit files.
        &quot;uploadInterval&quot;: &quot;A String&quot;, # How often to upload generated audit files.
      },
      &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
      &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-custom-1-3840`. WARNING: Changing this restarts the instance.
      &quot;timeZone&quot;: &quot;A String&quot;, # Server timezone, relevant only for Cloud SQL for SQL Server.
      &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;sqlNetworkArchitecture&quot;: &quot;A String&quot;,
    &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance.
    &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
      &quot;A String&quot;,
    ],
    &quot;switchTransactionLogsToCloudStorageEnabled&quot;: True or False, # Input only. Whether Cloud SQL is enabled to switch storing point-in-time recovery log files from a data disk to Cloud Storage.
    &quot;tags&quot;: { # Optional. Input only. Immutable. Tag keys and tag values that are bound to this instance. You must represent each item in the map as: `&quot;&quot; : &quot;&quot;`. For example, a single resource can have the following tags: ``` &quot;123/environment&quot;: &quot;production&quot;, &quot;123/costCenter&quot;: &quot;marketing&quot;, ``` For more information on tag creation and management, see https://cloud.google.com/resource-manager/docs/tags/tags-overview.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;upgradableDatabaseVersions&quot;: [ # Output only. All database versions that are available for upgrade.
      { # An available database version. It can be a major or a minor version.
        &quot;displayName&quot;: &quot;A String&quot;, # The database version&#x27;s display name.
        &quot;majorVersion&quot;: &quot;A String&quot;, # The version&#x27;s major version name.
        &quot;name&quot;: &quot;A String&quot;, # The database version name. For MySQL 8.0, this string provides the database major and minor version.
      },
    ],
    &quot;writeEndpoint&quot;: &quot;A String&quot;, # Output only. The dns name of the primary instance in a replication group.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="rotateServerCa">rotateServerCa(project, instance, body=None, x__xgafv=None)</code>
  <pre>Rotates the server certificate to one signed by the Certificate Authority (CA) version previously added with the addServerCA method. For instances that have enabled Certificate Authority Service (CAS) based server CA, use RotateServerCertificate to rotate the server certificate.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Rotate server CA request.
  &quot;rotateServerCaContext&quot;: { # Instance rotate server CA context. # Contains details about the rotate server CA operation.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#rotateServerCaContext`.
    &quot;nextVersion&quot;: &quot;A String&quot;, # The fingerprint of the next version to be rotated to. If left unspecified, will be rotated to the most recently added server CA version.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="startReplica">startReplica(project, instance, x__xgafv=None)</code>
  <pre>Starts the replication in the read replica instance.

Args:
  project: string, ID of the project that contains the read replica. (required)
  instance: string, Cloud SQL read replica instance name. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="stopReplica">stopReplica(project, instance, x__xgafv=None)</code>
  <pre>Stops the replication in the read replica instance.

Args:
  project: string, ID of the project that contains the read replica. (required)
  instance: string, Cloud SQL read replica instance name. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="switchover">switchover(project, instance, dbTimeout=None, x__xgafv=None)</code>
  <pre>Switches over from the primary instance to the DR replica instance.

Args:
  project: string, ID of the project that contains the replica. (required)
  instance: string, Cloud SQL read replica instance name. (required)
  dbTimeout: string, Optional. (MySQL and PostgreSQL only) Cloud SQL instance operations timeout, which is a sum of all database operations. Default value is 10 minutes and can be modified to a maximum value of 24 hours.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="truncateLog">truncateLog(project, instance, body=None, x__xgafv=None)</code>
  <pre>Truncate MySQL general and slow query log tables MySQL only.

Args:
  project: string, Project ID of the Cloud SQL project. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Instance truncate log request.
  &quot;truncateLogContext&quot;: { # Database Instance truncate log context. # Contains details about the truncate log operation.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#truncateLogContext`.
    &quot;logType&quot;: &quot;A String&quot;, # The type of log to truncate. Valid values are `MYSQL_GENERAL_TABLE` and `MYSQL_SLOW_TABLE`.
  },
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(project, instance, body=None, x__xgafv=None)</code>
  <pre>Updates settings of a Cloud SQL instance. Using this operation might cause your instance to restart.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Cloud SQL instance resource.
  &quot;availableMaintenanceVersions&quot;: [ # Output only. List all maintenance versions applicable on the instance
    &quot;A String&quot;,
  ],
  &quot;backendType&quot;: &quot;A String&quot;, # The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.
  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.
  &quot;databaseInstalledVersion&quot;: &quot;A String&quot;, # Output only. Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.
  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.
  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionConfiguration`.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
  },
  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#diskEncryptionStatus`.
    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
  },
  &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The dns name of the instance.
  &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this instance.
    { # DNS metadata.
      &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
      &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
      &quot;name&quot;: &quot;A String&quot;, # The DNS name.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.
  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
  },
  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.
  &quot;geminiConfig&quot;: { # Gemini instance configuration. # Gemini instance configuration.
    &quot;activeQueryEnabled&quot;: True or False, # Output only. Whether the active query is enabled.
    &quot;entitled&quot;: True or False, # Output only. Whether Gemini is enabled.
    &quot;flagRecommenderEnabled&quot;: True or False, # Output only. Whether the flag recommender is enabled.
    &quot;googleVacuumMgmtEnabled&quot;: True or False, # Output only. Whether the vacuum management is enabled.
    &quot;indexAdvisorEnabled&quot;: True or False, # Output only. Whether the index advisor is enabled.
    &quot;oomSessionCancelEnabled&quot;: True or False, # Output only. Whether canceling the out-of-memory (OOM) session is enabled.
  },
  &quot;includeReplicasForMajorVersionUpgrade&quot;: True or False, # Input only. Determines whether an in-place major version upgrade of replicas happens when an in-place major version upgrade of a primary instance is initiated.
  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type.
  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
    { # Database instance IP mapping
      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
    },
  ],
  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#instance`.
  &quot;maintenanceVersion&quot;: &quot;A String&quot;, # The current software version on the instance.
  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
  &quot;nodeCount&quot;: 42, # The number of read pool nodes in a read pool.
  &quot;nodes&quot;: [ # Output only. Entries containing information about each read pool node of the read pool.
    { # Details of a single read pool node of a read pool.
      &quot;dnsName&quot;: &quot;A String&quot;, # Output only. The DNS name of the read pool node.
      &quot;dnsNames&quot;: [ # Output only. The list of DNS names used by this read pool node.
        { # DNS metadata.
          &quot;connectionType&quot;: &quot;A String&quot;, # Output only. The connection type of the DNS name.
          &quot;dnsScope&quot;: &quot;A String&quot;, # Output only. The scope that the DNS name applies to.
          &quot;name&quot;: &quot;A String&quot;, # The DNS name.
        },
      ],
      &quot;gceZone&quot;: &quot;A String&quot;, # Output only. The zone of the read pool node.
      &quot;ipAddresses&quot;: [ # Output only. Mappings containing IP addresses that can be used to connect to the read pool node.
        { # Database instance IP mapping
          &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
          &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired.
          &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the read pool node, to be used for retrieving metrics and logs.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the read pool node.
    },
  ],
  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#onPremisesConfiguration`.
    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
    &quot;selectedObjects&quot;: [ # Optional. A list of objects that the user selects for replication from an external source instance.
      { # A list of objects that the user selects for replication from an external source instance.
        &quot;database&quot;: &quot;A String&quot;, # Required. The name of the database to migrate.
      },
    ],
    &quot;sourceInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to Cloud SQL instance if the source is Cloud SQL.
      &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced. This does not include the project ID.
      &quot;project&quot;: &quot;A String&quot;, # The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it.
      &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
    },
    &quot;sslOption&quot;: &quot;A String&quot;, # Optional. SSL option for replica connection to the on-premises source.
    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
  },
  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:
    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job
  },
  &quot;primaryDnsName&quot;: &quot;A String&quot;, # Output only. DEPRECATED: please use write_endpoint instead.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
  &quot;pscServiceAttachmentLink&quot;: &quot;A String&quot;, # Output only. The link to service attachment of PSC instance.
  &quot;region&quot;: &quot;A String&quot;, # The geographical region of the Cloud SQL instance. It can be one of the [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) where Cloud SQL operates: For example, `asia-east1`, `europe-west1`, and `us-central1`. The default value is `us-central1`.
  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
    &quot;cascadableReplica&quot;: True or False, # Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#replicaConfiguration`.
    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory.
      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponding public key is encoded in the client&#x27;s certificate.
      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#mysqlReplicaConfiguration`.
      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
    },
  },
  &quot;replicaNames&quot;: [ # The replicas of the instance.
    &quot;A String&quot;,
  ],
  &quot;replicationCluster&quot;: { # A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL. # Optional. A primary instance and disaster recovery (DR) replica pair. A DR replica is a cross-region replica that you designate for failover in the event that the primary instance experiences regional failure. Applicable to MySQL and PostgreSQL.
    &quot;drReplica&quot;: True or False, # Output only. Read-only field that indicates whether the replica is a DR replica. This field is not set if the instance is a primary instance.
    &quot;failoverDrReplicaName&quot;: &quot;A String&quot;, # Optional. If the instance is a primary instance, then this field identifies the disaster recovery (DR) replica. A DR replica is an optional configuration for Enterprise Plus edition instances. If the instance is a read replica, then the field is not set. Set this field to a replica name to designate a DR replica for a primary instance. Remove the replica name to remove the DR replica designation.
    &quot;psaWriteEndpoint&quot;: &quot;A String&quot;, # Output only. If set, this field indicates this instance has a private service access (PSA) DNS endpoint that is pointing to the primary instance of the cluster. If this instance is the primary, then the DNS endpoint points to this instance. After a switchover or replica failover operation, this DNS endpoint points to the promoted instance. This is a read-only field, returned to the user as information. This field can exist even if a standalone instance doesn&#x27;t have a DR replica yet or the DR replica is deleted.
  },
  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.
  &quot;satisfiesPzi&quot;: True or False, # Output only. This status indicates whether the instance satisfies PZI. The status is reserved for future use.
  &quot;satisfiesPzs&quot;: True or False, # This status indicates whether the instance satisfies PZS. The status is reserved for future use.
  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenance for this instance. # The start time of any upcoming scheduled maintenance for this instance.
    &quot;canDefer&quot;: True or False,
    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
  },
  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`
    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#sslCert`.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
  },
  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance.\This property is read-only.
  &quot;settings&quot;: { # Database instance settings. # The user settings.
    &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 RUNNABLE. Valid values: * `ALWAYS`: 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;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
      &quot;adminCredentialSecretName&quot;: &quot;A String&quot;, # Optional. The secret manager key storing the administrator credential. (e.g., projects/{project}/secrets/{secret}).
      &quot;dnsServers&quot;: [ # Optional. Domain controller IPv4 addresses used to bootstrap Active Directory.
        &quot;A String&quot;,
      ],
      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
      &quot;mode&quot;: &quot;A String&quot;, # Optional. The mode of the Active Directory configuration.
      &quot;organizationalUnit&quot;: &quot;A String&quot;, # Optional. The organizational unit distinguished name. This is the full hierarchical path to the organizational unit.
    },
    &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Specifies advanced machine configuration for the instances relevant only for SQL Server.
      &quot;threadsPerCore&quot;: 42, # The number of threads per physical core.
    },
    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
      &quot;A String&quot;,
    ],
    &quot;autoUpgradeEnabled&quot;: True or False, # Optional. Cloud SQL for MySQL auto-upgrade configuration. When this parameter is set to true, auto-upgrade is enabled for MySQL 8.0 minor versions. The MySQL version must be 8.0.35 or higher.
    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
      },
      &quot;backupTier&quot;: &quot;A String&quot;, # Output only. Backup tier that manages the backups for the instance.
      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupConfiguration`.
      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # Whether point in time recovery is enabled.
      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`.
      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
      &quot;transactionalLogStorageState&quot;: &quot;A String&quot;, # Output only. This value contains the storage location of transactional logs used to perform point-in-time recovery (PITR) for the database.
    },
    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
    &quot;connectionPoolConfig&quot;: { # The managed connection pooling configuration. # Optional. The managed connection pooling configuration for the instance.
      &quot;connectionPoolingEnabled&quot;: True or False, # Whether managed connection pooling is enabled.
      &quot;flags&quot;: [ # Optional. List of connection pool configuration flags.
        { # Connection pool flags for Cloud SQL instances managed connection pool configuration.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the flag.
          &quot;value&quot;: &quot;A String&quot;, # Required. The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
        },
      ],
      &quot;poolerCount&quot;: 42, # Output only. Number of connection poolers.
    },
    &quot;connectorEnforcement&quot;: &quot;A String&quot;, # Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.
    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
    &quot;dataApiAccess&quot;: &quot;A String&quot;, # This parameter controls whether to allow using Data API to connect to the instance. Not allowed by default.
    &quot;dataCacheConfig&quot;: { # Data cache configurations. # Configuration for data cache.
      &quot;dataCacheEnabled&quot;: True or False, # 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 size of data disk, in GB. The data disk size minimum is 10GB.
    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.
    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
      { # Database flags for Cloud SQL instances.
        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn&#x27;t take a value.
      },
    ],
    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance.
    &quot;deletionProtectionEnabled&quot;: True or False, # Configuration to protect against accidental instance deletion.
    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
      },
    ],
    &quot;edition&quot;: &quot;A String&quot;, # Optional. The edition of the instance.
    &quot;enableDataplexIntegration&quot;: True or False, # Optional. By default, Cloud SQL instances have schema extraction disabled for Dataplex. When this parameter is set to true, schema extraction for Dataplex on Cloud SQL instances is activated.
    &quot;enableGoogleMlIntegration&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL instances can connect to Vertex AI to pass requests for real-time predictions and insights to the AI. The default value is false. This applies only to Cloud SQL for MySQL and Cloud SQL for PostgreSQL instances.
    &quot;finalBackupConfig&quot;: { # Config used to determine the final backup settings for the instance. # Optional. The final backup configuration for the instance.
      &quot;enabled&quot;: True or False, # Whether the final backup is enabled for the instance.
      &quot;retentionDays&quot;: 42, # The number of days to retain the final backup after the instance deletion. The final backup will be purged at (time_of_instance_deletion + retention_days).
    },
    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query lengths greater than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
    },
    &quot;ipConfiguration&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 for Second Generation instances.
      &quot;allocatedIpRange&quot;: &quot;A String&quot;, # The name of the allocated ip range for the private ip Cloud SQL instance. For example: &quot;google-managed-services-default&quot;. If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`
      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: `157.197.200.0/24`).
        { # An entry for an Access Control list.
          &quot;expirationTime&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;kind&quot;: &quot;A String&quot;, # This is always `sql#aclEntry`.
          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
        },
      ],
      &quot;customSubjectAlternativeNames&quot;: [ # Optional. Custom Subject Alternative Name(SAN)s for a Cloud SQL instance.
        &quot;A String&quot;,
      ],
      &quot;enablePrivatePathForGoogleCloudServices&quot;: True or False, # Controls connectivity to private IP instances from Google services, such as BigQuery.
      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP 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;pscConfig&quot;: { # PSC settings for a Cloud SQL instance. # PSC settings for this instance.
        &quot;allowedConsumerProjects&quot;: [ # Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric).
          &quot;A String&quot;,
        ],
        &quot;networkAttachmentUri&quot;: &quot;A String&quot;, # Optional. The network attachment of the consumer network that the Private Service Connect enabled Cloud SQL instance is authorized to connect via PSC interface. format: projects/PROJECT/regions/REGION/networkAttachments/ID
        &quot;pscAutoConnections&quot;: [ # Optional. The list of settings for requested Private Service Connect consumer endpoints that can be used to connect to this Cloud SQL instance.
          { # Settings for an automatically-setup Private Service Connect consumer endpoint that is used to connect to a Cloud SQL instance.
            &quot;consumerNetwork&quot;: &quot;A String&quot;, # Optional. The consumer network of this consumer endpoint. This must be a resource path that includes both the host project and the network name. For example, `projects/project1/global/networks/network1`. The consumer host project of this network might be different from the consumer service project.
            &quot;consumerNetworkStatus&quot;: &quot;A String&quot;, # The connection policy status of the consumer network.
            &quot;consumerProject&quot;: &quot;A String&quot;, # Optional. This is the project ID of consumer service project of this consumer endpoint. Optional. This is only applicable if consumer_network is a shared vpc network.
            &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address of the consumer endpoint.
            &quot;status&quot;: &quot;A String&quot;, # The connection status of the consumer endpoint.
          },
        ],
        &quot;pscEnabled&quot;: True or False, # Whether PSC connectivity is enabled for this instance.
      },
      &quot;requireSsl&quot;: True or False, # Use `ssl_mode` instead. Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won&#x27;t be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the `require_ssl` flag.
      &quot;serverCaMode&quot;: &quot;A String&quot;, # Specify what type of CA is used for the server certificate.
      &quot;serverCaPool&quot;: &quot;A String&quot;, # Optional. The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. Format: projects/{PROJECT}/locations/{REGION}/caPools/{CA_POOL_ID}
      &quot;sslMode&quot;: &quot;A String&quot;, # Specify how SSL/TLS is enforced in database connections. If you must use the `require_ssl` flag for backward compatibility, then only the following value pairs are valid: For PostgreSQL and MySQL: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` For SQL Server: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=true` The value of `ssl_mode` has priority over the value of `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false`, `ssl_mode=ENCRYPTED_ONLY` means accept only SSL connections, while `require_ssl=false` means accept both non-SSL and SSL connections. In this case, MySQL and PostgreSQL databases respect `ssl_mode` and accepts only SSL connections.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#settings`.
    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances.
      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#locationPreference`.
      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to &#x27;no_secondary_zone&#x27;.
      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance.
    },
    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
      &quot;day&quot;: 42, # Day of week - `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, or `SUNDAY`. Specify in the UTC time zone. Returned in output as an integer, 1 to 7, where `1` equals Monday.
      &quot;hour&quot;: 42, # Hour of day - 0 to 23. Specify in the UTC time zone.
      &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#maintenanceWindow`.
      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing settings: `canary`, `stable`, or `week5`. For more information, see [About maintenance on Cloud SQL instances](https://cloud.google.com/sql/docs/mysql/maintenance).
    },
    &quot;passwordValidationPolicy&quot;: { # Database instance local user password validation policy # The local user password validation policy of the instance.
      &quot;complexity&quot;: &quot;A String&quot;, # The complexity of the password.
      &quot;disallowCompromisedCredentials&quot;: True or False, # This field is deprecated and will be removed in a future version of the API.
      &quot;disallowUsernameSubstring&quot;: True or False, # Disallow username as a part of the password.
      &quot;enablePasswordPolicy&quot;: True or False, # Whether the password policy is enabled or not.
      &quot;minLength&quot;: 42, # Minimum number of characters allowed.
      &quot;passwordChangeInterval&quot;: &quot;A String&quot;, # Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL.
      &quot;reuseInterval&quot;: 42, # Number of previous passwords that cannot be reused.
    },
    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.
    &quot;readPoolAutoScaleConfig&quot;: { # The read pool auto-scale configuration. # Optional. The read pool auto-scale configuration for the instance.
      &quot;disableScaleIn&quot;: True or False, # Indicates whether read pool auto scaling supports scale in operations (removing nodes).
      &quot;enabled&quot;: True or False, # Indicates whether read pool auto scaling is enabled.
      &quot;maxNodeCount&quot;: 42, # Maximum number of read pool nodes to be maintained.
      &quot;minNodeCount&quot;: 42, # Minimum number of read pool nodes to be maintained.
      &quot;scaleInCooldownSeconds&quot;: 42, # The cooldown period for scale-in operations.
      &quot;scaleOutCooldownSeconds&quot;: 42, # The cooldown period for scale-out operations.
      &quot;targetMetrics&quot;: [ # Optional. Target metrics for read pool auto scaling.
        { # Target metric for read pool auto scaling.
          &quot;metric&quot;: &quot;A String&quot;, # The metric name to be used for auto scaling.
          &quot;targetValue&quot;: 3.14, # The target value for the metric.
        },
      ],
    },
    &quot;replicationLagMaxSeconds&quot;: 42, # Optional. Configuration value for recreation of replica after certain replication lag
    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.
    &quot;retainBackupsOnDelete&quot;: True or False, # Optional. When this parameter is set to true, Cloud SQL retains backups of the instance even after the instance is deleted. The ON_DEMAND backup will be retained until customer deletes the backup or the project. The AUTOMATED backup will be retained based on the backups retention setting.
    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
    &quot;sqlServerAuditConfig&quot;: { # SQL Server specific audit configuration. # SQL Server specific audit configuration.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the destination bucket (e.g., gs://mybucket).
      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sqlServerAuditConfig
      &quot;retentionInterval&quot;: &quot;A String&quot;, # How long to keep generated audit files.
      &quot;uploadInterval&quot;: &quot;A String&quot;, # How often to upload generated audit files.
    },
    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
    &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-custom-1-3840`. WARNING: Changing this restarts the instance.
    &quot;timeZone&quot;: &quot;A String&quot;, # Server timezone, relevant only for Cloud SQL for SQL Server.
    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sqlNetworkArchitecture&quot;: &quot;A String&quot;,
  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance.
  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
    &quot;A String&quot;,
  ],
  &quot;switchTransactionLogsToCloudStorageEnabled&quot;: True or False, # Input only. Whether Cloud SQL is enabled to switch storing point-in-time recovery log files from a data disk to Cloud Storage.
  &quot;tags&quot;: { # Optional. Input only. Immutable. Tag keys and tag values that are bound to this instance. You must represent each item in the map as: `&quot;&quot; : &quot;&quot;`. For example, a single resource can have the following tags: ``` &quot;123/environment&quot;: &quot;production&quot;, &quot;123/costCenter&quot;: &quot;marketing&quot;, ``` For more information on tag creation and management, see https://cloud.google.com/resource-manager/docs/tags/tags-overview.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;upgradableDatabaseVersions&quot;: [ # Output only. All database versions that are available for upgrade.
    { # An available database version. It can be a major or a minor version.
      &quot;displayName&quot;: &quot;A String&quot;, # The database version&#x27;s display name.
      &quot;majorVersion&quot;: &quot;A String&quot;, # The version&#x27;s major version name.
      &quot;name&quot;: &quot;A String&quot;, # The database version name. For MySQL 8.0, this string provides the database major and minor version.
    },
  ],
  &quot;writeEndpoint&quot;: &quot;A String&quot;, # Output only. The dns name of the primary instance in a replication group.
}

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

Returns:
  An object of the form:

    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
  &quot;acquireSsrsLeaseContext&quot;: { # Acquire SSRS lease context. # The context for acquire SSRS lease operation, if applicable.
    &quot;duration&quot;: &quot;A String&quot;, # Lease duration needed for SSRS setup.
    &quot;reportDatabase&quot;: &quot;A String&quot;, # The report database to be used for SSRS setup.
    &quot;serviceLogin&quot;: &quot;A String&quot;, # The username to be used as the service login to connect to the report database for SSRS setup.
    &quot;setupLogin&quot;: &quot;A String&quot;, # The username to be used as the setup login to connect to the database server for SSRS setup.
  },
  &quot;apiWarning&quot;: { # An Admin API warning message. # An Admin API warning message.
    &quot;code&quot;: &quot;A String&quot;, # Code to uniquely identify the warning type.
    &quot;message&quot;: &quot;A String&quot;, # The warning message.
    &quot;region&quot;: &quot;A String&quot;, # The region name for REGION_UNREACHABLE warning.
  },
  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#backupContext`.
    &quot;name&quot;: &quot;A String&quot;, # The name of the backup. Format: projects/{project}/backups/{backup}
  },
  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
      { # Database instance operation error.
        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationError`.
        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operationErrors`.
  },
  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
    &quot;bakExportOptions&quot;: { # Options for exporting BAK files (SQL Server-only)
      &quot;bakType&quot;: &quot;A String&quot;, # Type of this bak file will be export, FULL or DIFF, SQL Server only
      &quot;copyOnly&quot;: True or False, # Deprecated: copy_only is deprecated. Use differential_base instead
      &quot;differentialBase&quot;: True or False, # Whether or not the backup can be used as a differential base copy_only backup can not be served as differential base
      &quot;exportLogEndTime&quot;: &quot;A String&quot;, # Optional. The end timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs until current time will be included. Only applied to Cloud SQL for SQL Server.
      &quot;exportLogStartTime&quot;: &quot;A String&quot;, # Optional. The begin timestamp when transaction log will be included in the export operation. [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`) in UTC. When omitted, all available logs from the beginning of retention period will be included. Only applied to Cloud SQL for SQL Server.
      &quot;stripeCount&quot;: 42, # Option for specifying how many stripes to use for the export. If blank, and the value of the striped field is true, the number of stripes is automatically chosen.
      &quot;striped&quot;: True or False, # Whether or not the export should be striped.
    },
    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. `MySQL` and `PostgreSQL` instances only.
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
    },
    &quot;databases&quot;: [ # Databases to be exported. `MySQL instances:` If `fileType` is `SQL` and no database is specified, all databases are exported, except for the `mysql` system database. If `fileType` is `CSV`, you can specify one database, either by using this property or by using the `csvExportOptions.selectQuery` property, which takes precedence over this property. `PostgreSQL instances:` If you don&#x27;t specify a database by name, all user databases in the instance are exported. This excludes system databases and Cloud SQL databases used to manage internal operations. Exporting all user databases is only available for directory-formatted parallel export. If `fileType` is `CSV`, this database must match the one specified in the `csvExportOptions.selectQuery` property. `SQL Server instances:` You must specify one database to be exported, and the `fileType` must be `BAK`.
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#exportContext`.
    &quot;offload&quot;: True or False, # Whether to perform a serverless export.
    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to `1`, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to `2`, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than `1`, --set-gtid-purged is set to OFF.
      },
      &quot;parallel&quot;: True or False, # Optional. Whether or not the export should be parallel.
      &quot;postgresExportOptions&quot;: { # Options for exporting from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. Use this option to include DROP &lt;object&gt; SQL statements. Use these statements to delete database objects before running the import operation.
        &quot;ifExists&quot;: True or False, # Optional. Option to include an IF EXISTS SQL statement with each DROP statement produced by clean.
      },
      &quot;schemaOnly&quot;: True or False, # Export only schemas.
      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
        &quot;A String&quot;,
      ],
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel export.
    },
    &quot;tdeExportOptions&quot;: { # Optional. Export parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have write access to the bucket. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have write access to the location. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`. If the file already exists, the request succeeds, but the operation fails. If `fileType` is `SQL` and the filename ends with .gz, the contents are compressed.
  },
  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
      &quot;bakType&quot;: &quot;A String&quot;, # Type of the bak content, FULL or DIFF
      &quot;encryptionOptions&quot;: {
        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
        &quot;keepEncrypted&quot;: True or False, # Optional. Whether the imported file remains encrypted.
        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form `gs://bucketName/fileName`. The instance must have write permissions to the bucket and read access to the file.
      },
      &quot;noRecovery&quot;: True or False, # Whether or not the backup importing will restore database with NORECOVERY option Applies only to Cloud SQL for SQL Server.
      &quot;recoveryOnly&quot;: True or False, # Whether or not the backup importing request will just bring database online without downloading Bak content only one of &quot;no_recovery&quot; and &quot;recovery_only&quot; can be true otherwise error will return. Applies only to Cloud SQL for SQL Server.
      &quot;stopAt&quot;: &quot;A String&quot;, # Optional. The timestamp when the import should stop. This timestamp is in the [RFC 3339](https://tools.ietf.org/html/rfc3339) format (for example, `2023-10-01T16:19:00.094`). This field is equivalent to the STOPAT keyword and applies to Cloud SQL for SQL Server only.
      &quot;stopAtMark&quot;: &quot;A String&quot;, # Optional. The marked transaction where the import should stop. This field is equivalent to the STOPATMARK keyword and applies to Cloud SQL for SQL Server only.
      &quot;striped&quot;: True or False, # Whether or not the backup set being restored is striped. Applies only to Cloud SQL for SQL Server.
    },
    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
        &quot;A String&quot;,
      ],
      &quot;escapeCharacter&quot;: &quot;A String&quot;, # Specifies the character that should appear before a data character that needs to be escaped.
      &quot;fieldsTerminatedBy&quot;: &quot;A String&quot;, # Specifies the character that separates columns within each row (line) of the file.
      &quot;linesTerminatedBy&quot;: &quot;A String&quot;, # This is used to separate lines. If a line does not contain all fields, the rest of the columns are set to their default values.
      &quot;quoteCharacter&quot;: &quot;A String&quot;, # Specifies the quoting character to be used when a data value is quoted.
      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
    },
    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If `fileType` is `SQL`, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. For entire instance parallel import operations, the database is overridden by the database name stored in subdirectory name. If `fileType` is `CSV`, one database must be specified.
    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri.\`SQL`: The file contains SQL statements. \`CSV`: The file contains CSV data.
    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
    &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#importContext`.
    &quot;sqlImportOptions&quot;: { # Optional. Options for importing data from SQL statements.
      &quot;parallel&quot;: True or False, # Optional. Whether or not the import should be parallel.
      &quot;postgresImportOptions&quot;: { # Optional. Options for importing from a Cloud SQL for PostgreSQL instance.
        &quot;clean&quot;: True or False, # Optional. The --clean flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
        &quot;ifExists&quot;: True or False, # Optional. The --if-exists flag for the pg_restore utility. This flag applies only if you enabled Cloud SQL to import files in parallel.
      },
      &quot;threads&quot;: 42, # Optional. The number of threads to use for parallel import.
    },
    &quot;tdeImportOptions&quot;: { # Optional. Import parameters specific to SQL Server TDE certificates
      &quot;certificatePath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate public key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
      &quot;name&quot;: &quot;A String&quot;, # Required. Certificate name. Applicable only for SQL Server instances.
      &quot;privateKeyPassword&quot;: &quot;A String&quot;, # Required. Password that encrypts the private key.
      &quot;privateKeyPath&quot;: &quot;A String&quot;, # Required. Path to the TDE certificate private key in the form gs://bucketName/fileName. The instance must have read access to the file. Applicable only for SQL Server instances.
    },
    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form `gs://bucketName/fileName`. Compressed gzip files (.gz) are supported when `fileType` is `SQL`. The instance must have write permissions to the bucket and read access to the file.
  },
  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#operation`.
  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: * `CREATE` * `DELETE` * `UPDATE` * `RESTART` * `IMPORT` * `EXPORT` * `BACKUP_VOLUME` * `RESTORE_VOLUME` * `CREATE_USER` * `DELETE_USER` * `CREATE_DATABASE` * `DELETE_DATABASE`
  &quot;preCheckMajorVersionUpgradeContext&quot;: { # Pre-check major version upgrade context. # This field is only populated when the operation_type is PRE_CHECK_MAJOR_VERSION_UPGRADE. The PreCheckMajorVersionUpgradeContext message itself contains the details for that pre-check, such as the target database version for the upgrade and the results of the check (including any warnings or errors found).
    &quot;kind&quot;: &quot;A String&quot;, # Optional. This is always `sql#preCheckMajorVersionUpgradeContext`.
    &quot;preCheckResponse&quot;: [ # Output only. The responses from the precheck operation.
      { # Structured PreCheckResponse containing message, type, and required actions.
        &quot;actionsRequired&quot;: [ # The actions that the user needs to take. Use repeated for multiple actions.
          &quot;A String&quot;,
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message to be displayed to the user.
        &quot;messageType&quot;: &quot;A String&quot;, # The type of message whether it is an info, warning, or error.
      },
    ],
    &quot;targetDatabaseVersion&quot;: &quot;A String&quot;, # Required. The target database version to upgrade to.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.
  &quot;status&quot;: &quot;A String&quot;, # The status of an operation.
  &quot;subOperationType&quot;: { # The sub operation type based on the operation type. # Optional. The sub operation based on the operation type.
    &quot;maintenanceType&quot;: &quot;A String&quot;, # The type of maintenance to be performed on the instance.
  },
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the resource on which this operation runs.
  &quot;targetLink&quot;: &quot;A String&quot;,
  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
}</pre>
</div>

</body></html>