<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.backupRuns.html">backupRuns</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(project, instance, id, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the backup taken by a backup run.</p>
<p class="toc_element">
  <code><a href="#get">get(project, instance, id, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a resource containing information about a backup run.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new backup run on demand. This method is applicable only to</p>
<p class="toc_element">
  <code><a href="#list">list(project, instance, pageToken=None, maxResults=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all backup runs associated with a given instance and configuration in</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(project, instance, id, x__xgafv=None)</code>
  <pre>Deletes the backup taken by a backup run.

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)
  id: string, The ID of the Backup Run to delete. To find a Backup Run ID, use the &lt;a
href=&quot;/sql/docs/db_path/admin-api/rest/v1beta4/backupRuns/list&quot;&gt;list&lt;/a&gt;
method. (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;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;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#operationError&lt;/code&gt;.
        },
      ],
      &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;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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#importContext&lt;/code&gt;.
      &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;.
    &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;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;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;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;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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#exportContext&lt;/code&gt;.
    },
    &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;.
  }</pre>
</div>

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

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)
  id: string, The ID of this Backup Run. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A BackupRun resource.
      &quot;type&quot;: &quot;A String&quot;, # The type of this run; can be either &quot;AUTOMATED&quot; or &quot;ON_DEMAND&quot;.
      &quot;windowStartTime&quot;: &quot;A String&quot;, # The start time of the backup window during which this the backup was
          # attempted 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;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
          # Applies only to Second Generation instances.
        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
        &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#diskEncryptionStatus&lt;/code&gt;.
      },
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#backupRun&lt;/code&gt;.
      &quot;error&quot;: { # Database instance operation error. # Information about why the backup operation failed. This is only present if
          # the run has the FAILED status.
        &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#operationError&lt;/code&gt;.
      },
      &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
          # Applies only to Second Generation instances.
        &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#diskEncryptionConfiguration&lt;/code&gt;.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
      },
      &quot;status&quot;: &quot;A String&quot;, # The status of this run.
      &quot;enqueuedTime&quot;: &quot;A String&quot;, # The time the run 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;id&quot;: &quot;A String&quot;, # The identifier for this backup run. Unique only for a specific Cloud SQL
          # instance.
      &quot;endTime&quot;: &quot;A String&quot;, # The time the backup operation completed 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;location&quot;: &quot;A String&quot;, # Location of the backups.
      &quot;startTime&quot;: &quot;A String&quot;, # The time the backup 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;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
  <pre>Creates a new backup run on demand. This method is applicable only to
Second Generation instances.

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 BackupRun resource.
    &quot;type&quot;: &quot;A String&quot;, # The type of this run; can be either &quot;AUTOMATED&quot; or &quot;ON_DEMAND&quot;.
    &quot;windowStartTime&quot;: &quot;A String&quot;, # The start time of the backup window during which this the backup was
        # attempted 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;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
        # Applies only to Second Generation instances.
      &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#diskEncryptionStatus&lt;/code&gt;.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#backupRun&lt;/code&gt;.
    &quot;error&quot;: { # Database instance operation error. # Information about why the backup operation failed. This is only present if
        # the run has the FAILED status.
      &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#operationError&lt;/code&gt;.
    },
    &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
    &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
        # Applies only to Second Generation instances.
      &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#diskEncryptionConfiguration&lt;/code&gt;.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
    },
    &quot;status&quot;: &quot;A String&quot;, # The status of this run.
    &quot;enqueuedTime&quot;: &quot;A String&quot;, # The time the run 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;id&quot;: &quot;A String&quot;, # The identifier for this backup run. Unique only for a specific Cloud SQL
        # instance.
    &quot;endTime&quot;: &quot;A String&quot;, # The time the backup operation completed 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;location&quot;: &quot;A String&quot;, # Location of the backups.
    &quot;startTime&quot;: &quot;A String&quot;, # The time the backup 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;instance&quot;: &quot;A String&quot;, # Name of the database 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.&amp;nbsp;For successful operations that return an
      # Operation resource, only the fields relevant to the operation are populated
      # in the resource.
    &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;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#operationError&lt;/code&gt;.
        },
      ],
      &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;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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#importContext&lt;/code&gt;.
      &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;.
    &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;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;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;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;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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#exportContext&lt;/code&gt;.
    },
    &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;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, instance, pageToken=None, maxResults=None, x__xgafv=None)</code>
  <pre>Lists all backup runs associated with a given instance and configuration in
the reverse chronological order of the backup initiation time.

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)
  pageToken: string, A previously-returned page token representing part of the larger set of
results to view.
  maxResults: integer, Maximum number of backup runs per response.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Backup run list results.
    &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;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#backupRunsList&lt;/code&gt;.
    &quot;items&quot;: [ # A list of backup runs in reverse chronological order of the enqueued time.
      { # A BackupRun resource.
          &quot;type&quot;: &quot;A String&quot;, # The type of this run; can be either &quot;AUTOMATED&quot; or &quot;ON_DEMAND&quot;.
          &quot;windowStartTime&quot;: &quot;A String&quot;, # The start time of the backup window during which this the backup was
              # attempted 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;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
          &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
              # Applies only to Second Generation instances.
            &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
            &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#diskEncryptionStatus&lt;/code&gt;.
          },
          &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#backupRun&lt;/code&gt;.
          &quot;error&quot;: { # Database instance operation error. # Information about why the backup operation failed. This is only present if
              # the run has the FAILED status.
            &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#operationError&lt;/code&gt;.
          },
          &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
          &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
              # Applies only to Second Generation instances.
            &quot;kind&quot;: &quot;A String&quot;, # This is always &lt;code&gt;sql#diskEncryptionConfiguration&lt;/code&gt;.
            &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
          },
          &quot;status&quot;: &quot;A String&quot;, # The status of this run.
          &quot;enqueuedTime&quot;: &quot;A String&quot;, # The time the run 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;id&quot;: &quot;A String&quot;, # The identifier for this backup run. Unique only for a specific Cloud SQL
              # instance.
          &quot;endTime&quot;: &quot;A String&quot;, # The time the backup operation completed 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;location&quot;: &quot;A String&quot;, # Location of the backups.
          &quot;startTime&quot;: &quot;A String&quot;, # The time the backup 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;instance&quot;: &quot;A String&quot;, # Name of the database instance.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>