<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="sql_v1beta4.html">Cloud SQL Admin API</a> . <a href="sql_v1beta4.databases.html">databases</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(project, instance, database, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a database from a Cloud SQL instance.</p>
<p class="toc_element">
  <code><a href="#get">get(project, instance, database, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a resource containing information about a database inside a Cloud</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a resource containing information about a database inside a Cloud</p>
<p class="toc_element">
  <code><a href="#list">list(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Lists databases in the specified Cloud SQL instance.</p>
<p class="toc_element">
  <code><a href="#patch">patch(project, instance, database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Partially updates a resource containing information about a database inside</p>
<p class="toc_element">
  <code><a href="#update">update(project, instance, database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a resource containing information about a database inside a Cloud</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(project, instance, database, x__xgafv=None)</code>
  <pre>Deletes a database from a Cloud SQL instance.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Database instance ID. This does not include the project ID. (required)
  database: string, Name of the database to be deleted in the instance. (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.&amp;nbsp;For successful operations that return an
      # Operation resource, only the fields relevant to the operation are populated
      # in the resource.
    &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;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#exportContext&lt;/code&gt;.
      &quot;databases&quot;: [ # Databases to be exported. &lt;br /&gt; &lt;b&gt;MySQL instances:&lt;/b&gt; If
          # &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt; and no database is specified, all
          # databases are exported, except for the &lt;code&gt;mysql&lt;/code&gt; system database.
          # If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, you can specify one database,
          # either by using this property or by using the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property, which takes precedence
          # over this property. &lt;br /&gt; &lt;b&gt;PostgreSQL instances:&lt;/b&gt; You must specify
          # one database to be exported. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;,
          # this database must match the one specified in the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property.
        &quot;A String&quot;,
      ],
      &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
        &quot;schemaOnly&quot;: True or False, # Export only schemas.
        &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 &lt;code&gt;1&lt;/code&gt;, the dump file includes
              #  a CHANGE MASTER TO statement with the binary log coordinates.
              # If set to &lt;code&gt;2&lt;/code&gt;, the CHANGE MASTER TO statement is written as
              #  a SQL comment, and has no effect.
              # All other values are ignored.
        },
        &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;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
      &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 &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. If the file already exists, the requests
          # // succeeds, but the operation fails. If &lt;code&gt;fileType&lt;/code&gt; is
          # // &lt;code&gt;SQL&lt;/code&gt; and the filename ends with .gz, the contents are
          # // compressed.
      &quot;csvExportOptions&quot;: { # Options for exporting data as CSV.
        &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
      },
    },
    &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
    &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
    &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;targetLink&quot;: &quot;A String&quot;,
    &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are &lt;code&gt;CREATE&lt;/code&gt;,
        # &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;RESTART&lt;/code&gt;,
        # &lt;code&gt;IMPORT&lt;/code&gt;, &lt;code&gt;EXPORT&lt;/code&gt;, &lt;code&gt;BACKUP_VOLUME&lt;/code&gt;,
        # &lt;code&gt;RESTORE_VOLUME&lt;/code&gt;, &lt;code&gt;CREATE_USER&lt;/code&gt;,
        # &lt;code&gt;DELETE_USER&lt;/code&gt;, &lt;code&gt;CREATE_DATABASE&lt;/code&gt;,
        # &lt;code&gt;DELETE_DATABASE&lt;/code&gt; .
    &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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationError&lt;/code&gt;.
          &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
          &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
        },
      ],
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationErrors&lt;/code&gt;.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operation&lt;/code&gt;.
    &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#importContext&lt;/code&gt;.
      &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;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 &lt;code&gt;fileType&lt;/code&gt; is
          # &lt;code&gt;SQL&lt;/code&gt;, 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. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, one database
          # must be specified.
      &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
      &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
        &quot;encryptionOptions&quot;: {
          &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
          &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form
              # &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
          &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk)  in Cloud Storage, in the
              # form &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
        },
      },
      &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form
          # &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. Compressed gzip files (.gz) are supported
          # // when &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt;. The instance must have
          # // write permissions to the bucket and read access to the file.
      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
    },
    &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are &lt;code&gt;PENDING&lt;/code&gt;,
        # &lt;code&gt;RUNNING&lt;/code&gt;, &lt;code&gt;DONE&lt;/code&gt;,
        # &lt;code&gt;SQL_OPERATION_STATUS_UNSPECIFIED&lt;/code&gt;.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # Represents a SQL database on the Cloud SQL instance.
    &quot;collation&quot;: &quot;A String&quot;, # The MySQL collation value.
    &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include
        # the project ID or instance name.
    &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
    &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google
        # apps domain is prefixed if applicable.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
      &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
      &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#database&lt;/code&gt;.
    &quot;charset&quot;: &quot;A String&quot;, # The MySQL charset value.
    &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the
        # API.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
  <pre>Inserts a resource containing information about a database inside a Cloud
SQL instance.

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

{ # Represents a SQL database on the Cloud SQL instance.
  &quot;collation&quot;: &quot;A String&quot;, # The MySQL collation value.
  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include
      # the project ID or instance name.
  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google
      # apps domain is prefixed if applicable.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
  },
  &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#database&lt;/code&gt;.
  &quot;charset&quot;: &quot;A String&quot;, # The MySQL charset value.
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the
      # API.
}

  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.&amp;nbsp;For successful operations that return an
      # Operation resource, only the fields relevant to the operation are populated
      # in the resource.
    &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;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#exportContext&lt;/code&gt;.
      &quot;databases&quot;: [ # Databases to be exported. &lt;br /&gt; &lt;b&gt;MySQL instances:&lt;/b&gt; If
          # &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt; and no database is specified, all
          # databases are exported, except for the &lt;code&gt;mysql&lt;/code&gt; system database.
          # If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, you can specify one database,
          # either by using this property or by using the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property, which takes precedence
          # over this property. &lt;br /&gt; &lt;b&gt;PostgreSQL instances:&lt;/b&gt; You must specify
          # one database to be exported. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;,
          # this database must match the one specified in the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property.
        &quot;A String&quot;,
      ],
      &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
        &quot;schemaOnly&quot;: True or False, # Export only schemas.
        &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 &lt;code&gt;1&lt;/code&gt;, the dump file includes
              #  a CHANGE MASTER TO statement with the binary log coordinates.
              # If set to &lt;code&gt;2&lt;/code&gt;, the CHANGE MASTER TO statement is written as
              #  a SQL comment, and has no effect.
              # All other values are ignored.
        },
        &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;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
      &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 &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. If the file already exists, the requests
          # // succeeds, but the operation fails. If &lt;code&gt;fileType&lt;/code&gt; is
          # // &lt;code&gt;SQL&lt;/code&gt; and the filename ends with .gz, the contents are
          # // compressed.
      &quot;csvExportOptions&quot;: { # Options for exporting data as CSV.
        &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
      },
    },
    &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
    &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
    &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;targetLink&quot;: &quot;A String&quot;,
    &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are &lt;code&gt;CREATE&lt;/code&gt;,
        # &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;RESTART&lt;/code&gt;,
        # &lt;code&gt;IMPORT&lt;/code&gt;, &lt;code&gt;EXPORT&lt;/code&gt;, &lt;code&gt;BACKUP_VOLUME&lt;/code&gt;,
        # &lt;code&gt;RESTORE_VOLUME&lt;/code&gt;, &lt;code&gt;CREATE_USER&lt;/code&gt;,
        # &lt;code&gt;DELETE_USER&lt;/code&gt;, &lt;code&gt;CREATE_DATABASE&lt;/code&gt;,
        # &lt;code&gt;DELETE_DATABASE&lt;/code&gt; .
    &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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationError&lt;/code&gt;.
          &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
          &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
        },
      ],
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationErrors&lt;/code&gt;.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operation&lt;/code&gt;.
    &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#importContext&lt;/code&gt;.
      &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;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 &lt;code&gt;fileType&lt;/code&gt; is
          # &lt;code&gt;SQL&lt;/code&gt;, 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. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, one database
          # must be specified.
      &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
      &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
        &quot;encryptionOptions&quot;: {
          &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
          &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form
              # &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
          &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk)  in Cloud Storage, in the
              # form &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
        },
      },
      &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form
          # &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. Compressed gzip files (.gz) are supported
          # // when &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt;. The instance must have
          # // write permissions to the bucket and read access to the file.
      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
    },
    &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are &lt;code&gt;PENDING&lt;/code&gt;,
        # &lt;code&gt;RUNNING&lt;/code&gt;, &lt;code&gt;DONE&lt;/code&gt;,
        # &lt;code&gt;SQL_OPERATION_STATUS_UNSPECIFIED&lt;/code&gt;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, instance, x__xgafv=None)</code>
  <pre>Lists databases in the specified Cloud SQL 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Database list response.
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#databasesList&lt;/code&gt;.
    &quot;items&quot;: [ # List of database resources in the instance.
      { # Represents a SQL database on the Cloud SQL instance.
        &quot;collation&quot;: &quot;A String&quot;, # The MySQL collation value.
        &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include
            # the project ID or instance name.
        &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
        &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google
            # apps domain is prefixed if applicable.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
        &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
          &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
          &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
        },
        &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#database&lt;/code&gt;.
        &quot;charset&quot;: &quot;A String&quot;, # The MySQL charset value.
        &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the
            # API.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(project, instance, database, body=None, x__xgafv=None)</code>
  <pre>Partially updates a resource containing information about a database inside
a Cloud SQL instance. This method supports patch semantics.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Database instance ID. This does not include the project ID. (required)
  database: string, Name of the database to be updated in the instance. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a SQL database on the Cloud SQL instance.
  &quot;collation&quot;: &quot;A String&quot;, # The MySQL collation value.
  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include
      # the project ID or instance name.
  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google
      # apps domain is prefixed if applicable.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
  },
  &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#database&lt;/code&gt;.
  &quot;charset&quot;: &quot;A String&quot;, # The MySQL charset value.
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the
      # API.
}

  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.&amp;nbsp;For successful operations that return an
      # Operation resource, only the fields relevant to the operation are populated
      # in the resource.
    &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;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#exportContext&lt;/code&gt;.
      &quot;databases&quot;: [ # Databases to be exported. &lt;br /&gt; &lt;b&gt;MySQL instances:&lt;/b&gt; If
          # &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt; and no database is specified, all
          # databases are exported, except for the &lt;code&gt;mysql&lt;/code&gt; system database.
          # If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, you can specify one database,
          # either by using this property or by using the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property, which takes precedence
          # over this property. &lt;br /&gt; &lt;b&gt;PostgreSQL instances:&lt;/b&gt; You must specify
          # one database to be exported. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;,
          # this database must match the one specified in the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property.
        &quot;A String&quot;,
      ],
      &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
        &quot;schemaOnly&quot;: True or False, # Export only schemas.
        &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 &lt;code&gt;1&lt;/code&gt;, the dump file includes
              #  a CHANGE MASTER TO statement with the binary log coordinates.
              # If set to &lt;code&gt;2&lt;/code&gt;, the CHANGE MASTER TO statement is written as
              #  a SQL comment, and has no effect.
              # All other values are ignored.
        },
        &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;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
      &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 &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. If the file already exists, the requests
          # // succeeds, but the operation fails. If &lt;code&gt;fileType&lt;/code&gt; is
          # // &lt;code&gt;SQL&lt;/code&gt; and the filename ends with .gz, the contents are
          # // compressed.
      &quot;csvExportOptions&quot;: { # Options for exporting data as CSV.
        &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
      },
    },
    &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
    &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
    &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;targetLink&quot;: &quot;A String&quot;,
    &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are &lt;code&gt;CREATE&lt;/code&gt;,
        # &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;RESTART&lt;/code&gt;,
        # &lt;code&gt;IMPORT&lt;/code&gt;, &lt;code&gt;EXPORT&lt;/code&gt;, &lt;code&gt;BACKUP_VOLUME&lt;/code&gt;,
        # &lt;code&gt;RESTORE_VOLUME&lt;/code&gt;, &lt;code&gt;CREATE_USER&lt;/code&gt;,
        # &lt;code&gt;DELETE_USER&lt;/code&gt;, &lt;code&gt;CREATE_DATABASE&lt;/code&gt;,
        # &lt;code&gt;DELETE_DATABASE&lt;/code&gt; .
    &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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationError&lt;/code&gt;.
          &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
          &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
        },
      ],
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationErrors&lt;/code&gt;.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operation&lt;/code&gt;.
    &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#importContext&lt;/code&gt;.
      &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;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 &lt;code&gt;fileType&lt;/code&gt; is
          # &lt;code&gt;SQL&lt;/code&gt;, 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. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, one database
          # must be specified.
      &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
      &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
        &quot;encryptionOptions&quot;: {
          &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
          &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form
              # &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
          &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk)  in Cloud Storage, in the
              # form &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
        },
      },
      &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form
          # &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. Compressed gzip files (.gz) are supported
          # // when &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt;. The instance must have
          # // write permissions to the bucket and read access to the file.
      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
    },
    &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are &lt;code&gt;PENDING&lt;/code&gt;,
        # &lt;code&gt;RUNNING&lt;/code&gt;, &lt;code&gt;DONE&lt;/code&gt;,
        # &lt;code&gt;SQL_OPERATION_STATUS_UNSPECIFIED&lt;/code&gt;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(project, instance, database, body=None, x__xgafv=None)</code>
  <pre>Updates a resource containing information about a database inside a Cloud
SQL instance.

Args:
  project: string, Project ID of the project that contains the instance. (required)
  instance: string, Database instance ID. This does not include the project ID. (required)
  database: string, Name of the database to be updated in the instance. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a SQL database on the Cloud SQL instance.
  &quot;collation&quot;: &quot;A String&quot;, # The MySQL collation value.
  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include
      # the project ID or instance name.
  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google
      # apps domain is prefixed if applicable.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
  },
  &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#database&lt;/code&gt;.
  &quot;charset&quot;: &quot;A String&quot;, # The MySQL charset value.
  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the
      # API.
}

  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.&amp;nbsp;For successful operations that return an
      # Operation resource, only the fields relevant to the operation are populated
      # in the resource.
    &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;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#exportContext&lt;/code&gt;.
      &quot;databases&quot;: [ # Databases to be exported. &lt;br /&gt; &lt;b&gt;MySQL instances:&lt;/b&gt; If
          # &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt; and no database is specified, all
          # databases are exported, except for the &lt;code&gt;mysql&lt;/code&gt; system database.
          # If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, you can specify one database,
          # either by using this property or by using the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property, which takes precedence
          # over this property. &lt;br /&gt; &lt;b&gt;PostgreSQL instances:&lt;/b&gt; You must specify
          # one database to be exported. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;,
          # this database must match the one specified in the
          # &lt;code&gt;csvExportOptions.selectQuery&lt;/code&gt; property.
        &quot;A String&quot;,
      ],
      &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
        &quot;schemaOnly&quot;: True or False, # Export only schemas.
        &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 &lt;code&gt;1&lt;/code&gt;, the dump file includes
              #  a CHANGE MASTER TO statement with the binary log coordinates.
              # If set to &lt;code&gt;2&lt;/code&gt;, the CHANGE MASTER TO statement is written as
              #  a SQL comment, and has no effect.
              # All other values are ignored.
        },
        &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;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
      &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 &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. If the file already exists, the requests
          # // succeeds, but the operation fails. If &lt;code&gt;fileType&lt;/code&gt; is
          # // &lt;code&gt;SQL&lt;/code&gt; and the filename ends with .gz, the contents are
          # // compressed.
      &quot;csvExportOptions&quot;: { # Options for exporting data as CSV.
        &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
      },
    },
    &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
    &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in &lt;a
        # href=&quot;https://tools.ietf.org/html/rfc3339&quot;&gt;RFC 3339&lt;/a&gt; format, for example
        # &lt;code&gt;2012-11-15T16:19:00.094Z&lt;/code&gt;.
    &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
    &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;targetLink&quot;: &quot;A String&quot;,
    &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are &lt;code&gt;CREATE&lt;/code&gt;,
        # &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;RESTART&lt;/code&gt;,
        # &lt;code&gt;IMPORT&lt;/code&gt;, &lt;code&gt;EXPORT&lt;/code&gt;, &lt;code&gt;BACKUP_VOLUME&lt;/code&gt;,
        # &lt;code&gt;RESTORE_VOLUME&lt;/code&gt;, &lt;code&gt;CREATE_USER&lt;/code&gt;,
        # &lt;code&gt;DELETE_USER&lt;/code&gt;, &lt;code&gt;CREATE_DATABASE&lt;/code&gt;,
        # &lt;code&gt;DELETE_DATABASE&lt;/code&gt; .
    &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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationError&lt;/code&gt;.
          &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
          &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
        },
      ],
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operationErrors&lt;/code&gt;.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#operation&lt;/code&gt;.
    &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#importContext&lt;/code&gt;.
      &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;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 &lt;code&gt;fileType&lt;/code&gt; is
          # &lt;code&gt;SQL&lt;/code&gt;, 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. If &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;CSV&lt;/code&gt;, one database
          # must be specified.
      &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
      &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
        &quot;encryptionOptions&quot;: {
          &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
          &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form
              # &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
          &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk)  in Cloud Storage, in the
              # form &lt;code&gt;gs://bucketName/fileName&lt;/code&gt;. The instance must have
              # write permissions to the bucket and read access to the file.
        },
      },
      &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form
          # &lt;code&gt;gs:
          # //bucketName/fileName&lt;/code&gt;. Compressed gzip files (.gz) are supported
          # // when &lt;code&gt;fileType&lt;/code&gt; is &lt;code&gt;SQL&lt;/code&gt;. The instance must have
          # // write permissions to the bucket and read access to the file.
      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. &lt;br&gt;&lt;code&gt;SQL&lt;/code&gt;: The file
          # contains SQL statements. &lt;br&gt;&lt;code&gt;CSV&lt;/code&gt;: The file contains CSV data.
    },
    &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are &lt;code&gt;PENDING&lt;/code&gt;,
        # &lt;code&gt;RUNNING&lt;/code&gt;, &lt;code&gt;DONE&lt;/code&gt;,
        # &lt;code&gt;SQL_OPERATION_STATUS_UNSPECIFIED&lt;/code&gt;.
  }</pre>
</div>

</body></html>