<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_v1beta4.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1beta4.sslCerts.html">sslCerts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#createEphemeral">createEphemeral(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.</p>
<p class="toc_element">
  <code><a href="#delete">delete(project, instance, sha1Fingerprint, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the SSL certificate. For First Generation instances, the certificate remains valid until the instance is restarted.</p>
<p class="toc_element">
  <code><a href="#get">get(project, instance, sha1Fingerprint, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a particular SSL certificate. Does not include the private key (required for usage). The private key must be saved from the response to initial creation.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates an SSL certificate and returns it along with the private key and server certificate authority. The new certificate will not be usable until the instance is restarted.</p>
<p class="toc_element">
  <code><a href="#list">list(project, instance, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all of the current SSL certificates for the instance.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="createEphemeral">createEphemeral(project, instance, body=None, x__xgafv=None)</code>
  <pre>Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.

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:

{ # SslCerts create ephemeral certificate request.
  &quot;access_token&quot;: &quot;A String&quot;, # Access token to include in the signed certificate.
  &quot;public_key&quot;: &quot;A String&quot;, # PEM encoded public key to include in the signed certificate.
}

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

Returns:
  An object of the form:

    { # 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="delete">delete(project, instance, sha1Fingerprint, x__xgafv=None)</code>
  <pre>Deletes the SSL certificate. For First Generation instances, the certificate remains valid until the instance is restarted.

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)
  sha1Fingerprint: string, Sha1 FingerPrint. (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;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;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;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:** You must specify one database to be exported. 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. * **SQL**: The file contains SQL statements. * **CSV**: The file contains CSV data. * **BAK**: The file contains backup data for a SQL Server instance.
    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#exportContext*.
    &quot;offload&quot;: True or False, # Option for export offload.
    &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;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;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;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;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;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. 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. * **BAK**: The file contains backup data for a SQL Server instance.
    &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;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;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. Valid values are: * **PENDING** * **RUNNING** * **DONE** * **SQL_OPERATION_STATUS_UNSPECIFIED**
  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
  &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, sha1Fingerprint, x__xgafv=None)</code>
  <pre>Retrieves a particular SSL certificate. Does not include the private key (required for usage). The private key must be saved from the response to initial creation.

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)
  sha1Fingerprint: string, Sha1 FingerPrint. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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="insert">insert(project, instance, body=None, x__xgafv=None)</code>
  <pre>Creates an SSL certificate and returns it along with the private key and server certificate authority. The new certificate will not be usable until the instance is restarted.

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:

{ # SslCerts insert request.
  &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Must be a distinct name from the other certificates for this instance.
}

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

Returns:
  An object of the form:

    { # SslCert insert response.
  &quot;clientCert&quot;: { # SslCertDetail. # The new client certificate and private key.
    &quot;certInfo&quot;: { # SslCerts Resource # The public information about the cert.
      &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;certPrivateKey&quot;: &quot;A String&quot;, # The private key for the client cert, in pem format. Keep private in order to protect your security.
  },
  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCertsInsert*.
  &quot;operation&quot;: { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource. # The operation to track the ssl certs insert request.
    &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;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;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:** You must specify one database to be exported. 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. * **SQL**: The file contains SQL statements. * **CSV**: The file contains CSV data. * **BAK**: The file contains backup data for a SQL Server instance.
      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#exportContext*.
      &quot;offload&quot;: True or False, # Option for export offload.
      &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;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;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;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;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;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. 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. * **BAK**: The file contains backup data for a SQL Server instance.
      &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;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;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. Valid values are: * **PENDING** * **RUNNING** * **DONE** * **SQL_OPERATION_STATUS_UNSPECIFIED**
    &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
    &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.
  },
  &quot;serverCaCert&quot;: { # SslCerts Resource # The server Certificate Authority&#x27;s certificate. If this is missing you can force a new one to be generated by calling resetSslConfig method on instances 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="list">list(project, instance, x__xgafv=None)</code>
  <pre>Lists all of the current SSL certificates 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # SslCerts list response.
  &quot;items&quot;: [ # List of client 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#sslCertsList*.
}</pre>
</div>

</body></html>