// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.sql.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/cloud/sql/v1/cloud_sql_resources.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; option go_package = "cloud.google.com/go/sql/apiv1/sqlpb;sqlpb"; option java_multiple_files = true; option java_outer_classname = "CloudSqlServiceProto"; option java_package = "com.google.cloud.sql.v1"; // Service to manage Cloud SQL instances. service SqlInstancesService { option (google.api.default_host) = "sqladmin.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform," "https://www.googleapis.com/auth/sqlservice.admin"; // Adds a new trusted Certificate Authority (CA) version for the specified // instance. Required to prepare for a certificate rotation. If a CA version // was previously added but never used in a certificate rotation, this // operation replaces that version. There cannot be more than one CA version // waiting to be rotated in. rpc AddServerCa(SqlInstancesAddServerCaRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/addServerCa" }; } // Creates a Cloud SQL instance as a clone of the source instance. Using this // operation might cause your instance to restart. rpc Clone(SqlInstancesCloneRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/clone" body: "body" }; } // Deletes a Cloud SQL instance. rpc Delete(SqlInstancesDeleteRequest) returns (Operation) { option (google.api.http) = { delete: "/v1/projects/{project}/instances/{instance}" }; } // Demotes the stand-alone instance to be a Cloud SQL read replica for an // external database server. rpc DemoteMaster(SqlInstancesDemoteMasterRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/demoteMaster" body: "body" }; } // Demotes an existing standalone instance to be a Cloud SQL read replica // for an external database server. rpc Demote(SqlInstancesDemoteRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/demote" body: "body" }; } // Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL // dump or CSV file. rpc Export(SqlInstancesExportRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/export" body: "body" }; } // Initiates a manual failover of a high availability (HA) primary instance // to a standby instance, which becomes the primary instance. Users are // then rerouted to the new primary. For more information, see the // [Overview of high // availability](https://cloud.google.com/sql/docs/mysql/high-availability) // page in the Cloud SQL documentation. // If using Legacy HA (MySQL only), this causes the instance to failover to // its failover replica instance. rpc Failover(SqlInstancesFailoverRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/failover" body: "body" }; } // Reencrypt CMEK instance with latest key version. rpc Reencrypt(SqlInstancesReencryptRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/reencrypt" body: "body" }; } // Retrieves a resource containing information about a Cloud SQL instance. rpc Get(SqlInstancesGetRequest) returns (DatabaseInstance) { option (google.api.http) = { get: "/v1/projects/{project}/instances/{instance}" }; } // Imports data into a Cloud SQL instance from a SQL dump or CSV file in // Cloud Storage. rpc Import(SqlInstancesImportRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/import" body: "body" }; } // Creates a new Cloud SQL instance. rpc Insert(SqlInstancesInsertRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances" body: "body" }; } // Lists instances under a given project. rpc List(SqlInstancesListRequest) returns (InstancesListResponse) { option (google.api.http) = { get: "/v1/projects/{project}/instances" }; } // Lists all of the trusted Certificate Authorities (CAs) for the specified // instance. There can be up to three CAs listed: the CA that was used to sign // the certificate that is currently in use, a CA that has been added but not // yet used to sign a certificate, and a CA used to sign a certificate that // has previously rotated out. rpc ListServerCas(SqlInstancesListServerCasRequest) returns (InstancesListServerCasResponse) { option (google.api.http) = { get: "/v1/projects/{project}/instances/{instance}/listServerCas" }; } // Partially updates settings of a Cloud SQL instance by merging the request // with the current configuration. This method supports patch semantics. rpc Patch(SqlInstancesPatchRequest) returns (Operation) { option (google.api.http) = { patch: "/v1/projects/{project}/instances/{instance}" body: "body" }; } // Promotes the read replica instance to be a stand-alone Cloud SQL instance. // Using this operation might cause your instance to restart. rpc PromoteReplica(SqlInstancesPromoteReplicaRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/promoteReplica" }; } // Switches over from the primary instance to the replica instance. rpc Switchover(SqlInstancesSwitchoverRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/switchover" }; } // Deletes all client certificates and generates a new server SSL certificate // for the instance. rpc ResetSslConfig(SqlInstancesResetSslConfigRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/resetSslConfig" }; } // Restarts a Cloud SQL instance. rpc Restart(SqlInstancesRestartRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/restart" }; } // Restores a backup of a Cloud SQL instance. Using this operation might cause // your instance to restart. rpc RestoreBackup(SqlInstancesRestoreBackupRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/restoreBackup" body: "body" }; } // Rotates the server certificate to one signed by the Certificate Authority // (CA) version previously added with the addServerCA method. rpc RotateServerCa(SqlInstancesRotateServerCaRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/rotateServerCa" body: "body" }; } // Starts the replication in the read replica instance. rpc StartReplica(SqlInstancesStartReplicaRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/startReplica" }; } // Stops the replication in the read replica instance. rpc StopReplica(SqlInstancesStopReplicaRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/stopReplica" }; } // Truncate MySQL general and slow query log tables // MySQL only. rpc TruncateLog(SqlInstancesTruncateLogRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/truncateLog" body: "body" }; } // Updates settings of a Cloud SQL instance. Using this operation might cause // your instance to restart. rpc Update(SqlInstancesUpdateRequest) returns (Operation) { option (google.api.http) = { put: "/v1/projects/{project}/instances/{instance}" body: "body" }; } // 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. rpc CreateEphemeral(SqlInstancesCreateEphemeralCertRequest) returns (SslCert) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/createEphemeral" body: "body" }; } // Reschedules the maintenance on the given instance. rpc RescheduleMaintenance(SqlInstancesRescheduleMaintenanceRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/rescheduleMaintenance" body: "body" }; } // Verify External primary instance external sync settings. rpc VerifyExternalSyncSettings(SqlInstancesVerifyExternalSyncSettingsRequest) returns (SqlInstancesVerifyExternalSyncSettingsResponse) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/verifyExternalSyncSettings" body: "*" }; } // Start External primary instance migration. rpc StartExternalSync(SqlInstancesStartExternalSyncRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/startExternalSync" body: "*" }; } // Perform Disk Shrink on primary instance. rpc PerformDiskShrink(SqlInstancesPerformDiskShrinkRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/performDiskShrink" body: "body" }; } // Get Disk Shrink Config for a given instance. rpc GetDiskShrinkConfig(SqlInstancesGetDiskShrinkConfigRequest) returns (SqlInstancesGetDiskShrinkConfigResponse) { option (google.api.http) = { get: "/v1/projects/{project}/instances/{instance}/getDiskShrinkConfig" }; } // Reset Replica Size to primary instance disk size. rpc ResetReplicaSize(SqlInstancesResetReplicaSizeRequest) returns (Operation) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/resetReplicaSize" body: "*" }; } // Get Latest Recovery Time for a given instance. rpc GetLatestRecoveryTime(SqlInstancesGetLatestRecoveryTimeRequest) returns (SqlInstancesGetLatestRecoveryTimeResponse) { option (google.api.http) = { get: "/v1/projects/{project}/instances/{instance}/getLatestRecoveryTime" }; } // Acquire a lease for the setup of SQL Server Reporting Services (SSRS). rpc AcquireSsrsLease(SqlInstancesAcquireSsrsLeaseRequest) returns (SqlInstancesAcquireSsrsLeaseResponse) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/acquireSsrsLease" body: "body" }; } // Release a lease for the setup of SQL Server Reporting Services (SSRS). rpc ReleaseSsrsLease(SqlInstancesReleaseSsrsLeaseRequest) returns (SqlInstancesReleaseSsrsLeaseResponse) { option (google.api.http) = { post: "/v1/projects/{project}/instances/{instance}/releaseSsrsLease" }; } } // Instance add server CA request. message SqlInstancesAddServerCaRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; } // Instance clone request. message SqlInstancesCloneRequest { // The ID of the Cloud SQL instance to be cloned (source). This does not // include the project ID. string instance = 1; // Project ID of the source as well as the clone Cloud SQL instance. string project = 2; InstancesCloneRequest body = 100; } // Instance delete request. message SqlInstancesDeleteRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance to be deleted. string project = 2; } // Instance demote master request. message SqlInstancesDemoteMasterRequest { // Cloud SQL instance name. string instance = 1; // ID of the project that contains the instance. string project = 2; InstancesDemoteMasterRequest body = 100; } // Instance demote request. message SqlInstancesDemoteRequest { // Required. Cloud SQL instance name. string instance = 1 [(google.api.field_behavior) = REQUIRED]; // Required. ID of the project that contains the instance. string project = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The request body. InstancesDemoteRequest body = 100 [(google.api.field_behavior) = REQUIRED]; } // Instance export request. message SqlInstancesExportRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance to be exported. string project = 2; InstancesExportRequest body = 100; } // Instance failover request. message SqlInstancesFailoverRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // ID of the project that contains the read replica. string project = 2; InstancesFailoverRequest body = 100; } // Instance get request. message SqlInstancesGetRequest { // Database instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; } // Instance import request. message SqlInstancesImportRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; InstancesImportRequest body = 100; } // Instance insert request. message SqlInstancesInsertRequest { // Project ID of the project to which the newly created Cloud SQL instances // should belong. string project = 1; DatabaseInstance body = 100; } // Instance list request. message SqlInstancesListRequest { // A filter expression that filters resources listed in the response. // The expression is in the form of field:value. For example, // 'instanceType:CLOUD_SQL_INSTANCE'. Fields can be nested as needed as per // their JSON representation, such as 'settings.userLabels.auto_start:true'. // // Multiple filter queries are space-separated. For example. // 'state:RUNNABLE instanceType:CLOUD_SQL_INSTANCE'. By default, each // expression is an AND expression. However, you can include AND and OR // expressions explicitly. string filter = 1; // The maximum number of instances to return. The service may return fewer // than this value. // If unspecified, at most 500 instances are returned. // The maximum value is 1000; values above 1000 are coerced to 1000. uint32 max_results = 2; // A previously-returned page token representing part of the larger set of // results to view. string page_token = 3; // Project ID of the project for which to list Cloud SQL instances. string project = 4; } // Instance list server CAs request. message SqlInstancesListServerCasRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; } // Instance patch request. message SqlInstancesPatchRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; DatabaseInstance body = 100; } // Instance promote replica request. message SqlInstancesPromoteReplicaRequest { // Cloud SQL read replica instance name. string instance = 1; // ID of the project that contains the read replica. string project = 2; // Set to true if the promote operation should attempt to re-add the original // primary as a replica when it comes back online. Otherwise, if this value is // false or not set, the original primary will be a standalone instance. bool failover = 3; } // Instance switchover request. message SqlInstancesSwitchoverRequest { // Cloud SQL read replica instance name. string instance = 1; // ID of the project that contains the replica. string project = 2; // Optional. (MySQL only) Cloud SQL instance operations timeout, which is a // sum of all database operations. Default value is 10 minutes and can be // modified to a maximum value of 24 hours. google.protobuf.Duration db_timeout = 3 [(google.api.field_behavior) = OPTIONAL]; } // Instance reset SSL config request. message SqlInstancesResetSslConfigRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; } // Instance restart request. message SqlInstancesRestartRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance to be restarted. string project = 2; } // Instance restore backup request. message SqlInstancesRestoreBackupRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; InstancesRestoreBackupRequest body = 100; } // Instance rotate server CA request. message SqlInstancesRotateServerCaRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; InstancesRotateServerCaRequest body = 100; } // Instance start replica request. message SqlInstancesStartReplicaRequest { // Cloud SQL read replica instance name. string instance = 1; // ID of the project that contains the read replica. string project = 2; } // Instance stop replica request. message SqlInstancesStopReplicaRequest { // Cloud SQL read replica instance name. string instance = 1; // ID of the project that contains the read replica. string project = 2; } // Instance truncate log request. message SqlInstancesTruncateLogRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the Cloud SQL project. string project = 2; InstancesTruncateLogRequest body = 100; } // Instance perform disk shrink request. message SqlInstancesPerformDiskShrinkRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; // Perform disk shrink context. PerformDiskShrinkContext body = 100; } // Instance update request. message SqlInstancesUpdateRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; DatabaseInstance body = 100; } // Instance reschedule maintenance request. message SqlInstancesRescheduleMaintenanceRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // ID of the project that contains the instance. string project = 2; SqlInstancesRescheduleMaintenanceRequestBody body = 100; } // Instance reencrypt request. message SqlInstancesReencryptRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // ID of the project that contains the instance. string project = 2; // Reencrypt body that users request InstancesReencryptRequest body = 3; } // Database Instance reencrypt request. message InstancesReencryptRequest { // Configuration specific to backup re-encryption optional BackupReencryptionConfig backup_reencryption_config = 1; } // Backup Reencryption Config message BackupReencryptionConfig { // Backup type for re-encryption enum BackupType { // Unknown backup type, will be defaulted to AUTOMATIC backup type BACKUP_TYPE_UNSPECIFIED = 0; // Reencrypt automatic backups AUTOMATED = 1; // Reencrypt on-demand backups ON_DEMAND = 2; } // Backup re-encryption limit optional int32 backup_limit = 1; // Type of backups users want to re-encrypt. optional BackupType backup_type = 2; } // External Sync parallel level. enum ExternalSyncParallelLevel { // Unknown sync parallel level. Will be defaulted to OPTIMAL. EXTERNAL_SYNC_PARALLEL_LEVEL_UNSPECIFIED = 0; // Minimal parallel level. MIN = 1; // Optimal parallel level. OPTIMAL = 2; // Maximum parallel level. MAX = 3; } // Instance get disk shrink config request. message SqlInstancesGetDiskShrinkConfigRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; } // Instance verify external sync settings request. message SqlInstancesVerifyExternalSyncSettingsRequest { enum ExternalSyncMode { // Unknown external sync mode, will be defaulted to ONLINE mode EXTERNAL_SYNC_MODE_UNSPECIFIED = 0; // Online external sync will set up replication after initial data external // sync ONLINE = 1; // Offline external sync only dumps and loads a one-time snapshot of // the primary instance's data OFFLINE = 2; } // MigrationType decides if the migration is a physical file based migration // or logical migration enum MigrationType { // Default value is logical migration MIGRATION_TYPE_UNSPECIFIED = 0; // Logical Migrations LOGICAL = 1; // Physical file based Migrations PHYSICAL = 2; } // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; // Flag to enable verifying connection only bool verify_connection_only = 3; // External sync mode ExternalSyncMode sync_mode = 4; // Optional. Flag to verify settings required by replication setup only bool verify_replication_only = 5 [(google.api.field_behavior) = OPTIONAL]; oneof sync_config { // Optional. MySQL-specific settings for start external sync. MySqlSyncConfig mysql_sync_config = 6 [(google.api.field_behavior) = OPTIONAL]; } // Optional. MigrationType decides if the migration is a physical file based // migration or logical migration MigrationType migration_type = 7 [(google.api.field_behavior) = OPTIONAL]; // Optional. Parallel level for initial data sync. Currently only applicable // for PostgreSQL. ExternalSyncParallelLevel sync_parallel_level = 8 [(google.api.field_behavior) = OPTIONAL]; } // Instance start external sync request. message SqlInstancesStartExternalSyncRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // ID of the project that contains the instance. string project = 2; // External sync mode. SqlInstancesVerifyExternalSyncSettingsRequest.ExternalSyncMode sync_mode = 3; // Whether to skip the verification step (VESS). bool skip_verification = 4; oneof sync_config { // MySQL-specific settings for start external sync. MySqlSyncConfig mysql_sync_config = 6; } // Optional. Parallel level for initial data sync. Currently only applicable // for MySQL. ExternalSyncParallelLevel sync_parallel_level = 7 [(google.api.field_behavior) = OPTIONAL]; // Optional. MigrationType decides if the migration is a physical file based // migration or logical migration. SqlInstancesVerifyExternalSyncSettingsRequest.MigrationType migration_type = 8 [(google.api.field_behavior) = OPTIONAL]; } // Instance reset replica size request. message SqlInstancesResetReplicaSizeRequest { // Cloud SQL read replica instance name. string instance = 1; // ID of the project that contains the read replica. string project = 2; } // Instance create ephemeral certificate request. message SqlInstancesCreateEphemeralCertRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the Cloud SQL project. string project = 2; SslCertsCreateEphemeralRequest body = 100; } // Database instance clone request. message InstancesCloneRequest { // Contains details about the clone operation. CloneContext clone_context = 1; } // Database demote primary instance request. message InstancesDemoteMasterRequest { // Contains details about the demoteMaster operation. DemoteMasterContext demote_master_context = 1; } // This request is used to demote an existing standalone instance to be a // Cloud SQL read replica for an external database server. message InstancesDemoteRequest { // Required. Contains details about the demote operation. DemoteContext demote_context = 1 [(google.api.field_behavior) = REQUIRED]; } // Database instance export request. message InstancesExportRequest { // Contains details about the export operation. ExportContext export_context = 1; } // Instance failover request. message InstancesFailoverRequest { // Failover Context. FailoverContext failover_context = 1; } // SslCerts create ephemeral certificate request. message SslCertsCreateEphemeralRequest { // PEM encoded public key to include in the signed certificate. string public_key = 1; // Access token to include in the signed certificate. string access_token = 2; } // Database instance import request. message InstancesImportRequest { // Contains details about the import operation. ImportContext import_context = 1; } // Database instances list response. message InstancesListResponse { // This is always `sql#instancesList`. string kind = 1; // List of warnings that occurred while handling the request. repeated ApiWarning warnings = 2; // List of database instance resources. repeated DatabaseInstance items = 3; // The continuation token, used to page through large result sets. Provide // this value in a subsequent request to return the next page of results. string next_page_token = 4; } // Instances ListServerCas response. message InstancesListServerCasResponse { // List of server CA certificates for the instance. repeated SslCert certs = 1; string active_version = 2; // This is always `sql#instancesListServerCas`. string kind = 3; } // Database instance restore backup request. message InstancesRestoreBackupRequest { // Parameters required to perform the restore backup operation. RestoreBackupContext restore_backup_context = 1; } // Rotate server CA request. message InstancesRotateServerCaRequest { // Contains details about the rotate server CA operation. RotateServerCaContext rotate_server_ca_context = 1; } // Instance truncate log request. message InstancesTruncateLogRequest { // Contains details about the truncate log operation. TruncateLogContext truncate_log_context = 1; } // Request to acquire a lease for SSRS. message InstancesAcquireSsrsLeaseRequest { // Contains details about the acquire SSRS lease operation. AcquireSsrsLeaseContext acquire_ssrs_lease_context = 1; } // Instance verify external sync settings response. message SqlInstancesVerifyExternalSyncSettingsResponse { // This is always `sql#migrationSettingErrorList`. string kind = 1; // List of migration violations. repeated SqlExternalSyncSettingError errors = 2; // List of migration warnings. repeated SqlExternalSyncSettingError warnings = 3; } // Instance get disk shrink config response. message SqlInstancesGetDiskShrinkConfigResponse { // This is always `sql#getDiskShrinkConfig`. string kind = 1; // The minimum size to which a disk can be shrunk in GigaBytes. int64 minimal_target_size_gb = 2; // Additional message to customers. string message = 3; } // Instance get latest recovery time request. message SqlInstancesGetLatestRecoveryTimeRequest { // Cloud SQL instance ID. This does not include the project ID. string instance = 1; // Project ID of the project that contains the instance. string project = 2; } // Instance get latest recovery time response. message SqlInstancesGetLatestRecoveryTimeResponse { // This is always `sql#getLatestRecoveryTime`. string kind = 1; // Timestamp, identifies the latest recovery time of the source instance. google.protobuf.Timestamp latest_recovery_time = 2; } // Database instance clone context. message CloneContext { // This is always `sql#cloneContext`. string kind = 1; // Reserved for future use. int64 pitr_timestamp_ms = 2; // Name of the Cloud SQL instance to be created as a clone. string destination_instance_name = 3; // Binary log coordinates, if specified, identify the position up to which the // source instance is cloned. If not specified, the source instance is // cloned up to the most recent binary log coordinates. BinLogCoordinates bin_log_coordinates = 4; // Timestamp, if specified, identifies the time to which the source instance // is cloned. google.protobuf.Timestamp point_in_time = 5; // The name of the allocated ip range for the private ip Cloud SQL instance. // For example: "google-managed-services-default". If set, the cloned instance // ip will be created in the allocated range. The range name must comply with // [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name // must be 1-63 characters long and match the regular expression // [a-z]([-a-z0-9]*[a-z0-9])?. // Reserved for future use. string allocated_ip_range = 6; // (SQL Server only) Clone only the specified databases from the source // instance. Clone all databases if empty. repeated string database_names = 9; // Optional. (Point-in-time recovery for PostgreSQL only) Clone to an instance // in the specified zone. If no zone is specified, clone to the same zone as // the source instance. optional string preferred_zone = 10 [(google.api.field_behavior) = OPTIONAL]; } // Binary log coordinates. message BinLogCoordinates { // Name of the binary log file for a Cloud SQL instance. string bin_log_file_name = 1; // Position (offset) within the binary log file. int64 bin_log_position = 2; // This is always `sql#binLogCoordinates`. string kind = 3; } // A Cloud SQL instance resource. message DatabaseInstance { // The current serving state of the database instance. enum SqlInstanceState { // The state of the instance is unknown. SQL_INSTANCE_STATE_UNSPECIFIED = 0; // The instance is running, or has been stopped by owner. RUNNABLE = 1; // The instance is not available, for example due to problems with billing. SUSPENDED = 2; // The instance is being deleted. PENDING_DELETE = 3; // The instance is being created. PENDING_CREATE = 4; // The instance is down for maintenance. MAINTENANCE = 5; // The creation of the instance failed or a fatal error occurred during // maintenance. FAILED = 6; // Deprecated ONLINE_MAINTENANCE = 7 [deprecated = true]; } message SqlFailoverReplica { // The name of the failover replica. If specified at instance creation, a // failover replica is created for the instance. The name // doesn't include the project ID. string name = 1; // The availability status of the failover replica. A false status indicates // that the failover replica is out of sync. The primary instance can only // failover to the failover replica when the status is true. google.protobuf.BoolValue available = 2; } // Any scheduled maintenance for this instance. message SqlScheduledMaintenance { // The start time of any upcoming scheduled maintenance for this instance. google.protobuf.Timestamp start_time = 1; bool can_defer = 2 [deprecated = true]; // If the scheduled maintenance can be rescheduled. bool can_reschedule = 3; // Maintenance cannot be rescheduled to start beyond this deadline. optional google.protobuf.Timestamp schedule_deadline_time = 4; } // This message wraps up the information written by out-of-disk detection job. message SqlOutOfDiskReport { // This enum lists all possible states regarding out-of-disk issues. enum SqlOutOfDiskState { // Unspecified state SQL_OUT_OF_DISK_STATE_UNSPECIFIED = 0; // The instance has plenty space on data disk NORMAL = 1; // Data disk is almost used up. It is shutdown to prevent data // corruption. SOFT_SHUTDOWN = 2; } // This field represents the state generated by the proactive database // wellness job for OutOfDisk issues. // * Writers: // * the proactive database wellness job for OOD. // * Readers: // * the proactive database wellness job optional SqlOutOfDiskState sql_out_of_disk_state = 1; // The minimum recommended increase size in GigaBytes // This field is consumed by the frontend // * Writers: // * the proactive database wellness job for OOD. // * Readers: optional int32 sql_min_recommended_increase_size_gb = 2; } // The SQL network architecture for the instance. enum SqlNetworkArchitecture { SQL_NETWORK_ARCHITECTURE_UNSPECIFIED = 0; // The instance uses the new network architecture. NEW_NETWORK_ARCHITECTURE = 1; // The instance uses the old network architecture. OLD_NETWORK_ARCHITECTURE = 2; } // This is always `sql#instance`. string kind = 1; // The current serving state of the Cloud SQL instance. SqlInstanceState state = 2; // The database engine type and version. The `databaseVersion` field cannot // be changed after instance creation. SqlDatabaseVersion database_version = 3; // The user settings. Settings settings = 4; // This field is deprecated and will be removed from a future version of the // API. Use the `settings.settingsVersion` field instead. string etag = 5; // The name and status of the failover replica. SqlFailoverReplica failover_replica = 6; // The name of the instance which will act as primary in the replication // setup. string master_instance_name = 7; // The replicas of the instance. repeated string replica_names = 8; // The maximum disk size of the instance in bytes. google.protobuf.Int64Value max_disk_size = 9 [deprecated = true]; // The current disk usage of the instance in bytes. This property has been // deprecated. Use the // "cloudsql.googleapis.com/database/disk/bytes_used" metric in Cloud // Monitoring API instead. Please see [this // announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) // for details. google.protobuf.Int64Value current_disk_size = 10 [deprecated = true]; // The assigned IP addresses for the instance. repeated IpMapping ip_addresses = 11; // SSL configuration. SslCert server_ca_cert = 12; // The instance type. SqlInstanceType instance_type = 13; // The project ID of the project containing the Cloud SQL instance. The Google // apps domain is prefixed if applicable. string project = 14; // The IPv6 address assigned to the instance. // (Deprecated) This property was applicable only // to First Generation instances. string ipv6_address = 15 [deprecated = true]; // The service account email address assigned to the instance.\This // property is read-only. string service_account_email_address = 16; // Configuration specific to on-premises instances. OnPremisesConfiguration on_premises_configuration = 17; // Configuration specific to failover replicas and read replicas. ReplicaConfiguration replica_configuration = 18; // The backend type. // `SECOND_GEN`: Cloud SQL database instance. // `EXTERNAL`: A database server that is not managed by Google. // // This property is read-only; use the `tier` property in the `settings` // object to determine the database type. SqlBackendType backend_type = 19; // The URI of this resource. string self_link = 20; // If the instance state is SUSPENDED, the reason for the suspension. repeated SqlSuspensionReason suspension_reason = 21; // Connection name of the Cloud SQL instance used in connection strings. string connection_name = 22; // Name of the Cloud SQL instance. This does not include the project ID. string name = 23; // The geographical region of the Cloud SQL instance. // // It can be one of the // [regions](https://cloud.google.com/sql/docs/mysql/locations#location-r) // where Cloud SQL operates: // // For example, `asia-east1`, `europe-west1`, and `us-central1`. // The default value is `us-central1`. string region = 24; // The Compute Engine zone that the instance is currently serving from. This // value could be different from the zone that was specified when the instance // was created if the instance has failed over to its secondary zone. WARNING: // Changing this might restart the instance. string gce_zone = 25; // The Compute Engine zone that the failover instance is currently serving // from for a regional instance. This value could be different // from the zone that was specified when the instance // was created if the instance has failed over to its secondary/failover zone. string secondary_gce_zone = 34; // Disk encryption configuration specific to an instance. DiskEncryptionConfiguration disk_encryption_configuration = 26; // Disk encryption status specific to an instance. DiskEncryptionStatus disk_encryption_status = 27; // Initial root password. Use only on creation. You must set root passwords // before you can connect to PostgreSQL instances. string root_password = 29; // The start time of any upcoming scheduled maintenance for this instance. SqlScheduledMaintenance scheduled_maintenance = 30; // The status indicating if instance satisfiesPzs. // Reserved for future use. google.protobuf.BoolValue satisfies_pzs = 35; // Output only. Stores the current database version running on the instance // including minor version such as `MYSQL_8_0_18`. string database_installed_version = 40 [(google.api.field_behavior) = OUTPUT_ONLY]; // This field represents the report generated by the proactive database // wellness job for OutOfDisk issues. // * Writers: // * the proactive database wellness job for OOD. // * Readers: // * the proactive database wellness job optional SqlOutOfDiskReport out_of_disk_report = 38; // Output only. The time when the instance was created in // [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example // `2012-11-15T16:19:00.094Z`. google.protobuf.Timestamp create_time = 39 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. List all maintenance versions applicable on the instance repeated string available_maintenance_versions = 41 [(google.api.field_behavior) = OUTPUT_ONLY]; // The current software version on the instance. string maintenance_version = 42; optional SqlNetworkArchitecture sql_network_architecture = 47; // Output only. The link to service attachment of PSC instance. optional string psc_service_attachment_link = 48 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The dns name of the instance. optional string dns_name = 49 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. DEPRECATED: please use write_endpoint instead. optional string primary_dns_name = 51 [deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The dns name of the primary instance in a replication group. optional string write_endpoint = 52 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. The pair of a primary instance and disaster recovery (DR) // replica. A DR replica is a cross-region replica that you designate for // failover in the event that the primary instance has regional failure. ReplicationCluster replication_cluster = 54 [(google.api.field_behavior) = OPTIONAL]; // Gemini configuration. optional GeminiInstanceConfig gemini_config = 55; } // Gemini configuration. message GeminiInstanceConfig { // Output only. Whether gemini is enabled. optional bool entitled = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Whether vacuum management is enabled. optional bool google_vacuum_mgmt_enabled = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Whether oom session cancel is enabled. optional bool oom_session_cancel_enabled = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Whether active query is enabled. optional bool active_query_enabled = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Whether index advisor is enabled. optional bool index_advisor_enabled = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Whether flag recommender is enabled. optional bool flag_recommender_enabled = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Primary-DR replica pair message ReplicationCluster { // Optional. If the instance is a primary instance, then this field identifies // the disaster recovery (DR) replica. A DR replica is an optional // configuration for Enterprise Plus edition instances. If the instance is a // read replica, then the field is not set. Users can set this field to set a // designated DR replica for a primary. Removing this field removes the DR // replica. string failover_dr_replica_name = 2 [(google.api.field_behavior) = OPTIONAL]; // Output only. read-only field that indicates if the replica is a dr_replica; // not set for a primary. bool dr_replica = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Reschedule options for maintenance windows. message SqlInstancesRescheduleMaintenanceRequestBody { enum RescheduleType { RESCHEDULE_TYPE_UNSPECIFIED = 0; // Reschedules maintenance to happen now (within 5 minutes). IMMEDIATE = 1; // Reschedules maintenance to occur within one week from the originally // scheduled day and time. NEXT_AVAILABLE_WINDOW = 2; // Reschedules maintenance to a specific time and day. SPECIFIC_TIME = 3; } message Reschedule { // Required. The type of the reschedule. RescheduleType reschedule_type = 1; // Optional. Timestamp when the maintenance shall be rescheduled to if // reschedule_type=SPECIFIC_TIME, in // [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example // `2012-11-15T16:19:00.094Z`. google.protobuf.Timestamp schedule_time = 2 [(google.api.field_behavior) = OPTIONAL]; } // Required. The type of the reschedule the user wants. Reschedule reschedule = 3; } // Database instance demote primary instance context. message DemoteMasterContext { // This is always `sql#demoteMasterContext`. string kind = 1; // Verify the GTID consistency for demote operation. Default value: // `True`. Setting this flag to `false` enables you to bypass the GTID // consistency check between on-premises primary instance and Cloud SQL // instance during the demotion operation but also exposes you to the risk of // future replication failures. Change the value only if you know the reason // for the GTID divergence and are confident that doing so will not cause any // replication issues. google.protobuf.BoolValue verify_gtid_consistency = 2; // The name of the instance which will act as on-premises primary instance // in the replication setup. string master_instance_name = 3; // Configuration specific to read-replicas replicating from the on-premises // primary instance. DemoteMasterConfiguration replica_configuration = 4; // Flag to skip replication setup on the instance. bool skip_replication_setup = 5; } // This context is used to demote an existing standalone instance to be // a Cloud SQL read replica for an external database server. message DemoteContext { // This is always `sql#demoteContext`. string kind = 1; // Required. The name of the instance which acts as the on-premises primary // instance in the replication setup. string source_representative_instance_name = 2 [(google.api.field_behavior) = REQUIRED]; } // Database instance failover context. message FailoverContext { // The current settings version of this instance. Request will be rejected if // this version doesn't match the current settings version. int64 settings_version = 1; // This is always `sql#failoverContext`. string kind = 2; } // Database instance restore from backup context. // Backup context contains source instance id and project id. message RestoreBackupContext { // This is always `sql#restoreBackupContext`. string kind = 1; // The ID of the backup run to restore from. int64 backup_run_id = 2; // The ID of the instance that the backup was taken from. string instance_id = 3; // The full project ID of the source instance. string project = 4; } // Instance rotate server CA context. message RotateServerCaContext { // This is always `sql#rotateServerCaContext`. string kind = 1; // The fingerprint of the next version to be rotated to. If left unspecified, // will be rotated to the most recently added server CA version. string next_version = 2; } // Database Instance truncate log context. message TruncateLogContext { // This is always `sql#truncateLogContext`. string kind = 1; // The type of log to truncate. Valid values are `MYSQL_GENERAL_TABLE` and // `MYSQL_SLOW_TABLE`. string log_type = 2; } // External primary instance migration setting error/warning. message SqlExternalSyncSettingError { enum SqlExternalSyncSettingErrorType { SQL_EXTERNAL_SYNC_SETTING_ERROR_TYPE_UNSPECIFIED = 0; CONNECTION_FAILURE = 1; BINLOG_NOT_ENABLED = 2; INCOMPATIBLE_DATABASE_VERSION = 3; REPLICA_ALREADY_SETUP = 4; // The replication user is missing privileges that are required. INSUFFICIENT_PRIVILEGE = 5; // Unsupported migration type. UNSUPPORTED_MIGRATION_TYPE = 6; // No pglogical extension installed on databases, applicable for postgres. NO_PGLOGICAL_INSTALLED = 7; // pglogical node already exists on databases, applicable for postgres. PGLOGICAL_NODE_ALREADY_EXISTS = 8; // The value of parameter wal_level is not set to logical. INVALID_WAL_LEVEL = 9; // The value of parameter shared_preload_libraries does not include // pglogical. INVALID_SHARED_PRELOAD_LIBRARY = 10; // The value of parameter max_replication_slots is not sufficient. INSUFFICIENT_MAX_REPLICATION_SLOTS = 11; // The value of parameter max_wal_senders is not sufficient. INSUFFICIENT_MAX_WAL_SENDERS = 12; // The value of parameter max_worker_processes is not sufficient. INSUFFICIENT_MAX_WORKER_PROCESSES = 13; // Extensions installed are either not supported or having unsupported // versions. UNSUPPORTED_EXTENSIONS = 14; // The value of parameter rds.logical_replication is not set to 1. INVALID_RDS_LOGICAL_REPLICATION = 15; // The primary instance logging setup doesn't allow EM sync. INVALID_LOGGING_SETUP = 16; // The primary instance database parameter setup doesn't allow EM sync. INVALID_DB_PARAM = 17; // The gtid_mode is not supported, applicable for MySQL. UNSUPPORTED_GTID_MODE = 18; // SQL Server Agent is not running. SQLSERVER_AGENT_NOT_RUNNING = 19; // The table definition is not support due to missing primary key or replica // identity, applicable for postgres. UNSUPPORTED_TABLE_DEFINITION = 20; // The customer has a definer that will break EM setup. UNSUPPORTED_DEFINER = 21; // SQL Server @@SERVERNAME does not match actual host name. SQLSERVER_SERVERNAME_MISMATCH = 22; // The primary instance has been setup and will fail the setup. PRIMARY_ALREADY_SETUP = 23; // The primary instance has unsupported binary log format. UNSUPPORTED_BINLOG_FORMAT = 24; // The primary instance's binary log retention setting. BINLOG_RETENTION_SETTING = 25; // The primary instance has tables with unsupported storage engine. UNSUPPORTED_STORAGE_ENGINE = 26; // Source has tables with limited support // eg: PostgreSQL tables without primary keys. LIMITED_SUPPORT_TABLES = 27; // The replica instance contains existing data. EXISTING_DATA_IN_REPLICA = 28; // The replication user is missing privileges that are optional. MISSING_OPTIONAL_PRIVILEGES = 29; // Additional BACKUP_ADMIN privilege is granted to the replication user // which may lock source MySQL 8 instance for DDLs during initial sync. RISKY_BACKUP_ADMIN_PRIVILEGE = 30; // The Cloud Storage bucket is missing necessary permissions. INSUFFICIENT_GCS_PERMISSIONS = 31; // The Cloud Storage bucket has an error in the file or contains invalid // file information. INVALID_FILE_INFO = 32; // The source instance has unsupported database settings for migration. UNSUPPORTED_DATABASE_SETTINGS = 33; // The replication user is missing parallel import specific privileges. // (e.g. LOCK TABLES) for MySQL. MYSQL_PARALLEL_IMPORT_INSUFFICIENT_PRIVILEGE = 34; // The global variable local_infile is off on external server replica. LOCAL_INFILE_OFF = 35; // This code instructs customers to turn on point-in-time recovery manually // for the instance after promoting the Cloud SQL for PostgreSQL instance. TURN_ON_PITR_AFTER_PROMOTE = 36; // The minor version of replica database is incompatible with the source. INCOMPATIBLE_DATABASE_MINOR_VERSION = 37; // This warning message indicates that Cloud SQL uses the maximum number of // subscriptions to migrate data from the source to the destination. SOURCE_MAX_SUBSCRIPTIONS = 38; // Unable to verify definers on the source for MySQL. UNABLE_TO_VERIFY_DEFINERS = 39; // If a time out occurs while the subscription counts are calculated, then // this value is set to 1. Otherwise, this value is set to 2. SUBSCRIPTION_CALCULATION_STATUS = 40; // Count of subscriptions needed to sync source data for PostgreSQL // database. PG_SUBSCRIPTION_COUNT = 41; // Final parallel level that is used to do migration. PG_SYNC_PARALLEL_LEVEL = 42; // The disk size of the replica instance is smaller than the data size of // the source instance. INSUFFICIENT_DISK_SIZE = 43; // The data size of the source instance is greater than 1 TB, the number of // cores of the replica instance is less than 8, and the memory of the // replica is less than 32 GB. INSUFFICIENT_MACHINE_TIER = 44; } // Can be `sql#externalSyncSettingError` or // `sql#externalSyncSettingWarning`. string kind = 1; // Identifies the specific error that occurred. SqlExternalSyncSettingErrorType type = 2; // Additional information about the error encountered. string detail = 3; } // On-premises instance configuration. message OnPremisesConfiguration { // The host and port of the on-premises instance in host:port format string host_port = 1; // This is always `sql#onPremisesConfiguration`. string kind = 2; // The username for connecting to on-premises instance. string username = 3; // The password for connecting to on-premises instance. string password = 4; // PEM representation of the trusted CA's x509 certificate. string ca_certificate = 5; // PEM representation of the replica's x509 certificate. string client_certificate = 6; // PEM representation of the replica's private key. The corresponsing public // key is encoded in the client's certificate. string client_key = 7; // The dump file to create the Cloud SQL replica. string dump_file_path = 8; // The reference to Cloud SQL instance if the source is Cloud SQL. InstanceReference source_instance = 15; } // Read-replica configuration for connecting to the primary instance. message ReplicaConfiguration { // This is always `sql#replicaConfiguration`. string kind = 1; // MySQL specific configuration when replicating from a MySQL on-premises // primary instance. Replication configuration information such as the // username, password, certificates, and keys are not stored in the instance // metadata. The configuration information is used only to set up the // replication connection and is stored by MySQL in a file named // `master.info` in the data directory. MySqlReplicaConfiguration mysql_replica_configuration = 2; // Specifies if the replica is the failover target. If the field is set to // `true`, the replica will be designated as a failover replica. In case the // primary instance fails, the replica instance will be promoted as the new // primary instance. Only one replica can be specified as failover target, and // the replica has to be in different zone with the primary instance. google.protobuf.BoolValue failover_target = 3; // Optional. Specifies if a SQL Server replica is a cascadable replica. A // cascadable replica is a SQL Server cross region replica that supports // replica(s) under it. google.protobuf.BoolValue cascadable_replica = 5 [(google.api.field_behavior) = OPTIONAL]; } // Request to acquire a lease for SSRS. message SqlInstancesAcquireSsrsLeaseRequest { // Required. Cloud SQL instance ID. This doesn't include the project ID. It's // composed of lowercase letters, numbers, and hyphens, and it must start with // a letter. The total length must be 98 characters or less (Example: // instance-id). string instance = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Project ID of the project that contains the instance (Example: // project-id). string project = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The request body. InstancesAcquireSsrsLeaseRequest body = 100 [(google.api.field_behavior) = REQUIRED]; } // Response for the acquire SSRS lease request. message SqlInstancesAcquireSsrsLeaseResponse { // The unique identifier for this operation. string operation_id = 1; } // Request to release a lease for SSRS. message SqlInstancesReleaseSsrsLeaseRequest { // Required. The Cloud SQL instance ID. This doesn't include the project ID. // The instance ID contains lowercase letters, numbers, and hyphens, and it // must start with a letter. This ID can have a maximum length of 98 // characters. string instance = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The project ID that contains the instance. string project = 2 [(google.api.field_behavior) = REQUIRED]; } // Response for the release SSRS lease request. message SqlInstancesReleaseSsrsLeaseResponse { // The unique identifier for this operation. string operation_id = 1; } enum SqlInstanceType { // This is an unknown Cloud SQL instance type. SQL_INSTANCE_TYPE_UNSPECIFIED = 0; // A regular Cloud SQL instance that is not replicating from a primary // instance. CLOUD_SQL_INSTANCE = 1; // An instance running on the customer's premises that is not managed by // Cloud SQL. ON_PREMISES_INSTANCE = 2; // A Cloud SQL instance acting as a read-replica. READ_REPLICA_INSTANCE = 3; } // The suspension reason of the database instance if the state is SUSPENDED. enum SqlSuspensionReason { // This is an unknown suspension reason. SQL_SUSPENSION_REASON_UNSPECIFIED = 0; // The instance is suspended due to billing issues (for example:, GCP account // issue) BILLING_ISSUE = 2; // The instance is suspended due to illegal content (for example:, child // pornography, copyrighted material, etc.). LEGAL_ISSUE = 3; // The instance is causing operational issues (for example:, causing the // database to crash). OPERATIONAL_ISSUE = 4; // The KMS key used by the instance is either revoked or denied access to KMS_KEY_ISSUE = 5; }