<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;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;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*
    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCert*.
    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
  }</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. Next field: 18
    &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;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
      &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
      &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;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;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
        &quot;encryptionOptions&quot;: {
          &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;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 *gs://bucketName/fileName*. The instance must have write permissions to the bucket and read access to the file.
        },
      },
      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#importContext*.
      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. *SQL*: The file contains SQL statements. *CSV*: The file contains CSV data.
      &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
        &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
        &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;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this 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;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
    &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
    &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#operationErrors*.
      &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 *sql#operationError*.
          &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
          &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
        },
      ],
    },
    &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: *PENDING* *RUNNING* *DONE* *SQL_OPERATION_STATUS_UNSPECIFIED*
    &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
    &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;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#operation*.
    &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
      &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.
        &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 requests // succeeds, but the operation fails. If *fileType* is // *SQL* and the filename ends with .gz, the contents are // compressed.
      &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. *MySQL* and *PostgreSQL* instances only.
        &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
      },
      &quot;offload&quot;: True or False, # Option for export offload.
      &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;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 *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;targetLink&quot;: &quot;A String&quot;,
    &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#backupContext*.
      &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
    },
  }</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;instance&quot;: &quot;A String&quot;, # Name of the database instance.
    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*
    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCert*.
    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
  }</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;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. Next field: 18 # The operation to track the ssl certs insert request.
      &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;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
        &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
        &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;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;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
          &quot;encryptionOptions&quot;: {
            &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;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 *gs://bucketName/fileName*. The instance must have write permissions to the bucket and read access to the file.
          },
        },
        &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#importContext*.
        &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. *SQL*: The file contains SQL statements. *CSV*: The file contains CSV data.
        &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
          &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
          &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;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this 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;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
      &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
      &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
        &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#operationErrors*.
        &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 *sql#operationError*.
            &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
            &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
          },
        ],
      },
      &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: *PENDING* *RUNNING* *DONE* *SQL_OPERATION_STATUS_UNSPECIFIED*
      &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
      &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;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#operation*.
      &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
        &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.
          &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 requests // succeeds, but the operation fails. If *fileType* is // *SQL* and the filename ends with .gz, the contents are // compressed.
        &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. *MySQL* and *PostgreSQL* instances only.
          &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
        },
        &quot;offload&quot;: True or False, # Option for export offload.
        &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;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 *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;targetLink&quot;: &quot;A String&quot;,
      &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
        &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#backupContext*.
        &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
      },
    },
    &quot;clientCert&quot;: { # SslCertDetail. # The new client certificate and private key.
      &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;certInfo&quot;: { # SslCerts Resource # The public information about the cert.
        &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
        &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
        &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*
        &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
        &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCert*.
        &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
        &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
        &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
      },
    },
    &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;instance&quot;: &quot;A String&quot;, # Name of the database instance.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*
      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCert*.
      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
    },
    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCertsInsert*.
  }</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;instance&quot;: &quot;A String&quot;, # Name of the database instance.
        &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
        &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*
        &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
        &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCert*.
        &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
        &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
        &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCertsList*.
  }</pre>
</div>

</body></html>