From 113ddfebbe8d4e0639eb19fe91817a13edfc0c5c Mon Sep 17 00:00:00 2001 From: Google APIs Date: Tue, 22 Oct 2024 07:41:42 -0700 Subject: [PATCH] feat: add new PSC instance configuration setting and output the PSC DNS name feat: add new API to execute SQL statements feat: add support for Free Trials feat: add support to schedule maintenance feat: additional field to set tags on a backup or cluster feat: add more observability options on the Instance level feat: add new API to perform a promotion or switchover on secondary instances feat: support for obtaining the public ip addresses of an instance and enabling either inbound or outbound public ip feat: add new API to list the databases in a project and location feat: add optional field to keep extra roles on a user if it already exists docs: various typo fixes, correcting the formatting, and clarifications on the request_id and validate_only fields in API requests and on the page_size when listing the database PiperOrigin-RevId: 688544999 --- google/cloud/alloydb/v1/BUILD.bazel | 21 +- google/cloud/alloydb/v1/data_model.proto | 62 +++ google/cloud/alloydb/v1/resources.proto | 251 +++++++++++- google/cloud/alloydb/v1/service.proto | 482 ++++++++++++++++------- 4 files changed, 664 insertions(+), 152 deletions(-) create mode 100644 google/cloud/alloydb/v1/data_model.proto diff --git a/google/cloud/alloydb/v1/BUILD.bazel b/google/cloud/alloydb/v1/BUILD.bazel index 2ae1864b58..ffba11e9a9 100644 --- a/google/cloud/alloydb/v1/BUILD.bazel +++ b/google/cloud/alloydb/v1/BUILD.bazel @@ -9,18 +9,22 @@ # * extra_protoc_file_parameters # The complete list of preserved parameters can be found in the source code. +# buildifier: disable=load-on-top + # This is an API workspace, having public visibility by default makes perfect sense. package(default_visibility = ["//visibility:public"]) ############################################################################## # Common ############################################################################## -load("@rules_proto//proto:defs.bzl", "proto_library") +# buildifier: disable=same-origin-load load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info") +load("@rules_proto//proto:defs.bzl", "proto_library") proto_library( name = "alloydb_proto", srcs = [ + "data_model.proto", "resources.proto", "service.proto", ], @@ -28,6 +32,7 @@ proto_library( "//google/api:annotations_proto", "//google/api:client_proto", "//google/api:field_behavior_proto", + "//google/api:field_info_proto", "//google/api:resource_proto", "//google/longrunning:operations_proto", "//google/rpc:status_proto", @@ -54,6 +59,7 @@ proto_library_with_info( ############################################################################## # Java ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "java_gapic_assembly_gradle_pkg", @@ -120,6 +126,7 @@ java_gapic_assembly_gradle_pkg( ############################################################################## # Go ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "go_gapic_assembly_pkg", @@ -177,6 +184,7 @@ go_gapic_assembly_pkg( ############################################################################## # Python ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "py_gapic_assembly_pkg", @@ -217,6 +225,7 @@ py_gapic_assembly_pkg( ############################################################################## # PHP ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "php_gapic_assembly_pkg", @@ -237,7 +246,9 @@ php_gapic_library( rest_numeric_enums = True, service_yaml = "alloydb_v1.yaml", transport = "grpc+rest", - deps = [":alloydb_php_proto"], + deps = [ + ":alloydb_php_proto", + ], ) # Open Source Packages @@ -252,6 +263,7 @@ php_gapic_assembly_pkg( ############################################################################## # Node.js ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "nodejs_gapic_assembly_pkg", @@ -282,6 +294,7 @@ nodejs_gapic_assembly_pkg( ############################################################################## # Ruby ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "ruby_cloud_gapic_library", @@ -331,6 +344,7 @@ ruby_gapic_assembly_pkg( ############################################################################## # C# ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "csharp_gapic_assembly_pkg", @@ -341,6 +355,7 @@ load( csharp_proto_library( name = "alloydb_csharp_proto", + extra_opts = [], deps = [":alloydb_proto"], ) @@ -357,6 +372,7 @@ csharp_gapic_library( grpc_service_config = "alloydb_v1_grpc_service_config.json", rest_numeric_enums = True, service_yaml = "alloydb_v1.yaml", + transport = "grpc+rest", deps = [ ":alloydb_csharp_grpc", ":alloydb_csharp_proto", @@ -376,6 +392,7 @@ csharp_gapic_assembly_pkg( ############################################################################## # C++ ############################################################################## +# buildifier: disable=same-origin-load load( "@com_google_googleapis_imports//:imports.bzl", "cc_grpc_library", diff --git a/google/cloud/alloydb/v1/data_model.proto b/google/cloud/alloydb/v1/data_model.proto new file mode 100644 index 0000000000..6529fccb8d --- /dev/null +++ b/google/cloud/alloydb/v1/data_model.proto @@ -0,0 +1,62 @@ +// 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.alloydb.v1; + +option csharp_namespace = "Google.Cloud.AlloyDb.V1"; +option go_package = "cloud.google.com/go/alloydb/apiv1/alloydbpb;alloydbpb"; +option java_multiple_files = true; +option java_outer_classname = "DataModelProto"; +option java_package = "com.google.cloud.alloydb.v1"; +option php_namespace = "Google\\Cloud\\AlloyDb\\V1"; +option ruby_package = "Google::Cloud::AlloyDB::V1"; + +// SqlResult represents the result for the execution of a sql statement. +message SqlResult { + // List of columns included in the result. This also includes the data type + // of the column. + repeated SqlResultColumn columns = 1; + + // Rows returned by the SQL statement. + repeated SqlResultRow rows = 2; +} + +// Contains the name and datatype of a column in a SQL Result. +message SqlResultColumn { + // Name of the column. + string name = 1; + + // Datatype of the column as reported by the postgres driver. + // Common type names are "VARCHAR", "TEXT", "NVARCHAR", "DECIMAL", "BOOL", + // "INT", and "BIGINT". + string type = 2; +} + +// A single row from a sql result. +message SqlResultRow { + // List of values in a row of sql result. + repeated SqlResultValue values = 1; +} + +// A single value in a row from a sql result. +message SqlResultValue { + // The cell value represented in string format. + // Timestamps are converted to string using RFC3339Nano format. + optional string value = 1; + + // Set to true if cell value is null. + optional bool null_value = 2; +} diff --git a/google/cloud/alloydb/v1/resources.proto b/google/cloud/alloydb/v1/resources.proto index 5b7cf97502..424baceef2 100644 --- a/google/cloud/alloydb/v1/resources.proto +++ b/google/cloud/alloydb/v1/resources.proto @@ -17,6 +17,7 @@ syntax = "proto3"; package google.cloud.alloydb.v1; import "google/api/field_behavior.proto"; +import "google/api/field_info.proto"; import "google/api/resource.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; @@ -83,6 +84,27 @@ enum DatabaseVersion { // The database version is Postgres 14. POSTGRES_14 = 2; + + // The database version is Postgres 15. + POSTGRES_15 = 3; + + // The database version is Postgres 16. + POSTGRES_16 = 4; +} + +// Subscription_type added to distinguish between Standard and Trial +// subscriptions. By default, a subscription type is considered STANDARD unless +// explicitly specified. +enum SubscriptionType { + // This is an unknown subscription type. By default, the subscription type is + // STANDARD. + SUBSCRIPTION_TYPE_UNSPECIFIED = 0; + + // Standard subscription. + STANDARD = 1; + + // Trial subscription. + TRIAL = 2; } // The username/password for a database user. Used for specifying initial @@ -162,7 +184,7 @@ message EncryptionInfo { message SslConfig { // SSL mode options. enum SslMode { - // SSL mode not specified. Defaults to ENCRYPTED_ONLY. + // SSL mode is not specified. Defaults to ENCRYPTED_ONLY. SSL_MODE_UNSPECIFIED = 0; // SSL connections are optional. CA verification not enforced. @@ -174,7 +196,7 @@ message SslConfig { SSL_MODE_REQUIRE = 2 [deprecated = true]; // SSL connections are required. CA verification enforced. - // Clients must have certificates signed by a Cluster CA, e.g. via + // Clients must have certificates signed by a Cluster CA, for example, using // GenerateClientCertificate. SSL_MODE_VERIFY_CA = 3 [deprecated = true]; @@ -371,6 +393,33 @@ message ContinuousBackupSource { [(google.api.field_behavior) = REQUIRED]; } +// MaintenanceUpdatePolicy defines the policy for system updates. +message MaintenanceUpdatePolicy { + // MaintenanceWindow specifies a preferred day and time for maintenance. + message MaintenanceWindow { + // Preferred day of the week for maintenance, e.g. MONDAY, TUESDAY, etc. + google.type.DayOfWeek day = 1; + + // Preferred time to start the maintenance operation on the specified day. + // Maintenance will start within 1 hour of this time. + google.type.TimeOfDay start_time = 2; + } + + // Preferred windows to perform maintenance. Currently limited to 1. + repeated MaintenanceWindow maintenance_windows = 1; +} + +// MaintenanceSchedule stores the maintenance schedule generated from +// the MaintenanceUpdatePolicy, once a maintenance rollout is triggered, if +// MaintenanceWindow is set, and if there is no conflicting DenyPeriod. +// The schedule is cleared once the update takes place. This field cannot be +// manually changed; modify the MaintenanceUpdatePolicy instead. +message MaintenanceSchedule { + // Output only. The scheduled start time for the maintenance. + google.protobuf.Timestamp start_time = 1 + [(google.api.field_behavior) = OUTPUT_ONLY]; +} + // A cluster is a collection of regional AlloyDB resources. It can include a // primary instance and one or more read pool instances. // All cluster resources share a storage layer, which scales as needed. @@ -378,19 +427,21 @@ message Cluster { option (google.api.resource) = { type: "alloydb.googleapis.com/Cluster" pattern: "projects/{project}/locations/{location}/clusters/{cluster}" + plural: "clusters" + singular: "cluster" style: DECLARATIVE_FRIENDLY }; // Metadata related to network configuration. message NetworkConfig { - // Required. The resource link for the VPC network in which cluster + // Optional. The resource link for the VPC network in which cluster // resources are created and from which they are accessible via Private IP. // The network must belong to the same project as the cluster. It is // specified in the form: - // "projects/{project_number}/global/networks/{network_id}". This is + // `projects/{project_number}/global/networks/{network_id}`. This is // required to create a cluster. string network = 1 [ - (google.api.field_behavior) = REQUIRED, + (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "compute.googleapis.com/Network" } @@ -424,6 +475,28 @@ message Cluster { [(google.api.field_behavior) = OUTPUT_ONLY]; } + // PscConfig contains PSC related configuration at a cluster level. + message PscConfig { + // Optional. Create an instance that allows connections from Private Service + // Connect endpoints to the instance. + bool psc_enabled = 1 [(google.api.field_behavior) = OPTIONAL]; + } + + // Contains information and all metadata related to TRIAL clusters. + message TrialMetadata { + // start time of the trial cluster. + google.protobuf.Timestamp start_time = 1; + + // End time of the trial cluster. + google.protobuf.Timestamp end_time = 2; + + // Upgrade time of trial cluster to Standard cluster. + google.protobuf.Timestamp upgrade_time = 3; + + // grace end time of the cluster. + google.protobuf.Timestamp grace_end_time = 4; + } + // Cluster State enum State { // The state of the cluster is unknown. @@ -539,7 +612,7 @@ message Cluster { // Required. The resource link for the VPC network in which cluster resources // are created and from which they are accessible via Private IP. The network // must belong to the same project as the cluster. It is specified in the - // form: "projects/{project}/global/networks/{network_id}". This is required + // form: `projects/{project}/global/networks/{network_id}`. This is required // to create a cluster. Deprecated, use network_config.network instead. string network = 10 [ deprecated = true, @@ -603,6 +676,42 @@ message Cluster { // Output only. Cross Region replication config specific to PRIMARY cluster. PrimaryConfig primary_config = 23 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Reserved for future use. + bool satisfies_pzs = 30 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. The configuration for Private Service Connect (PSC) for the + // cluster. + PscConfig psc_config = 31 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The maintenance update policy determines when to allow or deny + // updates. + MaintenanceUpdatePolicy maintenance_update_policy = 32 + [(google.api.field_behavior) = OPTIONAL]; + + // Output only. The maintenance schedule for the cluster, generated for a + // specific rollout if a maintenance window is set. + MaintenanceSchedule maintenance_schedule = 37 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Subscription type of the cluster. + SubscriptionType subscription_type = 38 + [(google.api.field_behavior) = OPTIONAL]; + + // Output only. Metadata for free trial clusters + TrialMetadata trial_metadata = 39 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Input only. Immutable. Tag keys/values directly bound to this + // resource. For example: + // ``` + // "123/environment": "production", + // "123/costCenter": "marketing" + // ``` + map tags = 41 [ + (google.api.field_behavior) = INPUT_ONLY, + (google.api.field_behavior) = IMMUTABLE, + (google.api.field_behavior) = OPTIONAL + ]; } // An Instance is a computing unit that an end customer can connect to. @@ -611,6 +720,8 @@ message Instance { option (google.api.resource) = { type: "alloydb.googleapis.com/Instance" pattern: "projects/{project}/locations/{location}/clusters/{cluster}/instances/{instance}" + plural: "instances" + singular: "instance" style: DECLARATIVE_FRIENDLY }; @@ -672,10 +783,50 @@ message Instance { // connections to the database. bool require_connectors = 1 [(google.api.field_behavior) = OPTIONAL]; - // Optional. SSL config option for this instance. + // Optional. SSL configuration option for this instance. SslConfig ssl_config = 2 [(google.api.field_behavior) = OPTIONAL]; } + // PscInstanceConfig contains PSC related configuration at an + // instance level. + message PscInstanceConfig { + // Output only. The service attachment created when Private + // Service Connect (PSC) is enabled for the instance. + // The name of the resource will be in the format of + // `projects//regions//serviceAttachments/` + string service_attachment_link = 1 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. List of consumer projects that are allowed to create + // PSC endpoints to service-attachments to this instance. + repeated string allowed_consumer_projects = 2 + [(google.api.field_behavior) = OPTIONAL]; + + // Output only. The DNS name of the instance for PSC connectivity. + // Name convention: ...alloydb-psc.goog + string psc_dns_name = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; + } + + // Metadata related to instance-level network configuration. + message InstanceNetworkConfig { + // AuthorizedNetwork contains metadata for an authorized network. + message AuthorizedNetwork { + // CIDR range for one authorzied network of the instance. + string cidr_range = 1 [(google.api.field_info).format = IPV4]; + } + + // Optional. A list of external network authorized to access this instance. + repeated AuthorizedNetwork authorized_external_networks = 1 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Enabling public ip for the instance. + bool enable_public_ip = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Enabling an outbound public IP address to support a database + // server sending requests out into the internet. + bool enable_outbound_public_ip = 3 [(google.api.field_behavior) = OPTIONAL]; + } + // Instance State enum State { // The state of the instance is unknown. @@ -843,6 +994,14 @@ message Instance { // This is the connection endpoint for an end-user application. string ip_address = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Output only. The public IP addresses for the Instance. This is available + // ONLY when enable_public_ip is set. This is the connection endpoint for an + // end-user application. + string public_ip_address = 27 [ + (google.api.field_info).format = IPV4, + (google.api.field_behavior) = OUTPUT_ONLY + ]; + // Output only. Reconciling (https://google.aip.dev/128#reconciliation). // Set to true if the current state of Instance does not match the user's // intended state, and the service is actively updating the resource to @@ -861,6 +1020,24 @@ message Instance { // Optional. Client connection specific configurations ClientConnectionConfig client_connection_config = 23 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. Reserved for future use. + bool satisfies_pzs = 24 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. The configuration for Private Service Connect (PSC) for the + // instance. + PscInstanceConfig psc_instance_config = 28 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Instance-level network configuration. + InstanceNetworkConfig network_config = 29 + [(google.api.field_behavior) = OPTIONAL]; + + // Output only. All outbound public IP addresses configured for the instance. + repeated string outbound_public_ip_addresses = 34 [ + (google.api.field_info).format = IPV4, + (google.api.field_behavior) = OUTPUT_ONLY + ]; } // ConnectionInfo singleton resource. @@ -869,6 +1046,8 @@ message ConnectionInfo { option (google.api.resource) = { type: "alloydb.googleapis.com/ConnectionInfo" pattern: "projects/{project}/locations/{location}/clusters/{cluster}/instances/{instance}/connectionInfo" + plural: "connectionInfos" + singular: "connectionInfo" }; // The name of the ConnectionInfo singleton resource, e.g.: @@ -881,6 +1060,14 @@ message ConnectionInfo { // is set). This is the connection endpoint for an end-user application. string ip_address = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Output only. The public IP addresses for the Instance. This is available + // ONLY when enable_public_ip is set. This is the connection endpoint for an + // end-user application. + string public_ip_address = 5 [ + (google.api.field_info).format = IPV4, + (google.api.field_behavior) = OUTPUT_ONLY + ]; + // Output only. The unique ID of the Instance. string instance_uid = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; } @@ -890,6 +1077,8 @@ message Backup { option (google.api.resource) = { type: "alloydb.googleapis.com/Backup" pattern: "projects/{project}/locations/{location}/backups/{backup}" + plural: "backups" + singular: "backup" style: DECLARATIVE_FRIENDLY }; @@ -1045,11 +1234,26 @@ message Backup { QuantityBasedExpiry expiry_quantity = 20 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Output only. Reserved for future use. + bool satisfies_pzs = 21 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Output only. The database engine major version of the cluster this backup // was created from. Any restored cluster created from this backup will have // the same database version. DatabaseVersion database_version = 22 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Input only. Immutable. Tag keys/values directly bound to this + // resource. For example: + // ``` + // "123/environment": "production", + // "123/costCenter": "marketing" + // ``` + map tags = 25 [ + (google.api.field_behavior) = INPUT_ONLY, + (google.api.field_behavior) = IMMUTABLE, + (google.api.field_behavior) = OPTIONAL + ]; } // SupportedDatabaseFlag gives general information about a database flag, @@ -1061,6 +1265,8 @@ message SupportedDatabaseFlag { option (google.api.resource) = { type: "alloydb.googleapis.com/SupportedDatabaseFlag" pattern: "projects/{project}/locations/{location}/flags/{flag}" + plural: "supportedDatabaseFlags" + singular: "supportedDatabaseFlag" }; // Restrictions on STRING type values @@ -1138,6 +1344,8 @@ message User { option (google.api.resource) = { type: "alloydb.googleapis.com/User" pattern: "projects/{project}/locations/{location}/clusters/{cluster}/users/{user}" + plural: "users" + singular: "user" style: DECLARATIVE_FRIENDLY }; @@ -1167,4 +1375,33 @@ message User { // Optional. Type of this user. UserType user_type = 5 [(google.api.field_behavior) = OPTIONAL]; + + // Input only. If the user already exists and it has additional roles, keep + // them granted. + bool keep_extra_roles = 6 [(google.api.field_behavior) = INPUT_ONLY]; +} + +// Message describing Database object. +message Database { + option (google.api.resource) = { + type: "alloydb.googleapis.com/Database" + pattern: "projects/{project}/locations/{location}/clusters/{cluster}/databases/{database}" + plural: "databases" + singular: "database" + style: DECLARATIVE_FRIENDLY + }; + + // Identifier. Name of the resource in the form of + // `projects/{project}/locations/{location}/clusters/{cluster}/databases/{database}`. + string name = 1 [(google.api.field_behavior) = IDENTIFIER]; + + // Optional. Charset for the database. + // This field can contain any PostgreSQL supported charset name. + // Example values include "UTF8", "SQL_ASCII", etc. + string charset = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Collation for the database. + // Name of the custom or native collation for postgres. + // Example values include "C", "POSIX", etc + string collation = 3 [(google.api.field_behavior) = OPTIONAL]; } diff --git a/google/cloud/alloydb/v1/service.proto b/google/cloud/alloydb/v1/service.proto index a3eba091f9..ab73dc5ccd 100644 --- a/google/cloud/alloydb/v1/service.proto +++ b/google/cloud/alloydb/v1/service.proto @@ -19,7 +19,9 @@ package google.cloud.alloydb.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; +import "google/api/field_info.proto"; import "google/api/resource.proto"; +import "google/cloud/alloydb/v1/data_model.proto"; import "google/cloud/alloydb/v1/resources.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/duration.proto"; @@ -116,6 +118,22 @@ service AlloyDBAdmin { }; } + // Switches the roles of PRIMARY and SECONDARY clusters without any data loss. + // This promotes the SECONDARY cluster to PRIMARY and sets up the original + // PRIMARY cluster to replicate from this newly promoted cluster. + rpc SwitchoverCluster(SwitchoverClusterRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{name=projects/*/locations/*/clusters/*}:switchover" + body: "*" + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "Cluster" + metadata_type: "OperationMetadata" + }; + } + // Creates a new Cluster in a given project and location, with a volume // restored from the provided source, either a backup ID or a point-in-time // and a source cluster. @@ -284,6 +302,16 @@ service AlloyDBAdmin { }; } + // Executes a SQL statement in a database inside an AlloyDB instance. + rpc ExecuteSql(ExecuteSqlRequest) returns (ExecuteSqlResponse) { + option (google.api.http) = { + post: "/v1/{instance=projects/*/locations/*/clusters/*/instances/*}:executeSql" + body: "*" + }; + option (google.api.method_signature) = + "instance,database,user,sql_statement,password"; + } + // Lists Backups in a given project and location. rpc ListBackups(ListBackupsRequest) returns (ListBackupsResponse) { option (google.api.http) = { @@ -410,6 +438,14 @@ service AlloyDBAdmin { }; option (google.api.method_signature) = "name"; } + + // Lists Databases in a given project and location. + rpc ListDatabases(ListDatabasesRequest) returns (ListDatabasesResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*/clusters/*}/databases" + }; + option (google.api.method_signature) = "parent"; + } } // Message for requesting list of Clusters @@ -482,23 +518,23 @@ message CreateSecondaryClusterRequest { Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 5 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the create - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 6 [(google.api.field_behavior) = OPTIONAL]; } @@ -520,23 +556,23 @@ message CreateClusterRequest { Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the create - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL]; } @@ -554,23 +590,23 @@ message UpdateClusterRequest { Cluster cluster = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the update - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. If set to true, update succeeds even if cluster is not found. In @@ -588,14 +624,14 @@ message DeleteClusterRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -607,14 +643,45 @@ message DeleteClusterRequest { // deletion will be blocked and an ABORTED error will be returned. string etag = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the delete. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Whether to cascade delete child instances for given cluster. bool force = 5 [(google.api.field_behavior) = OPTIONAL]; } +// Message for switching over to a cluster +message SwitchoverClusterRequest { + // Required. The name of the resource. For the required format, see the + // comment on the Cluster.name field + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { type: "alloydb.googleapis.com/Cluster" } + ]; + + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. + // + // For example, consider a situation where you make an initial request and + // the request times out. If you make the request again with the same request + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents + // clients from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported (00000000-0000-0000-0000-000000000000). + string request_id = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. + bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL]; +} + // Message for promoting a Cluster message PromoteClusterRequest { // Required. The name of the resource. For the required format, see the @@ -625,9 +692,9 @@ message PromoteClusterRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request @@ -644,8 +711,9 @@ message PromoteClusterRequest { // deletion will be blocked and an ABORTED error will be returned. string etag = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the delete. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL]; } @@ -679,23 +747,23 @@ message RestoreClusterRequest { Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 5 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the import - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 6 [(google.api.field_behavior) = OPTIONAL]; } @@ -773,23 +841,23 @@ message CreateInstanceRequest { Instance instance = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the create - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL]; } @@ -811,23 +879,23 @@ message CreateSecondaryInstanceRequest { Instance instance = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the create - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL]; } @@ -853,14 +921,14 @@ message BatchCreateInstancesRequest { CreateInstanceRequests requests = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -916,7 +984,7 @@ message BatchCreateInstanceStatus { STATE_UNSPECIFIED = 0; // Instance is pending creation and has not yet been picked up for - // processsing in the backend. + // processing in the backend. PENDING_CREATE = 1; // The instance is active and running. @@ -972,23 +1040,23 @@ message UpdateInstanceRequest { Instance instance = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the update - // request. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. If set to true, update succeeds even if instance is not found. In @@ -1008,14 +1076,14 @@ message DeleteInstanceRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1027,8 +1095,9 @@ message DeleteInstanceRequest { // deletion will be blocked and an ABORTED error will be returned. string etag = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the delete. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL]; } @@ -1044,22 +1113,23 @@ message FailoverInstanceRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 2 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the failover. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL]; } @@ -1088,23 +1158,23 @@ message InjectFaultRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the fault - // injection. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL]; } @@ -1119,23 +1189,113 @@ message RestartInstanceRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 2 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If set, performs request validation (e.g. permission checks and - // any other type of validation), but do not actually execute the restart. + // Optional. If set, performs request validation, for example, permission + // checks and any other type of validation, but does not actually execute the + // create request. bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Full name of the nodes as obtained from INSTANCE_VIEW_FULL to + // restart upon. Applicable only to read instances. + repeated string node_ids = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// Request for ExecuteSql rpc. +message ExecuteSqlRequest { + // Oneof field to support other credential mechanisms in future like + // SecretManager etc. + oneof user_credential { + // Optional. The database native user’s password. + string password = 5 [(google.api.field_behavior) = OPTIONAL]; + } + + // Required. The instance where the SQL will be executed. For the required + // format, see the comment on the Instance.name field. + string instance = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "alloydb.googleapis.com/Instance" + } + ]; + + // Required. Name of the database where the query will be executed. + // Note - Value provided should be the same as expected from `SELECT + // current_database();` and NOT as a resource reference. + string database = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. Database user to be used for executing the SQL. + // Note - Value provided should be the same as expected from + // `SELECT current_user;` and NOT as a resource reference. + string user = 3 [(google.api.field_behavior) = REQUIRED]; + + // Required. SQL statement to execute on database. Any valid statement is + // permitted, including DDL, DML, DQL statements. + string sql_statement = 4 [(google.api.field_behavior) = REQUIRED]; +} + +// Execute a SQL statement response. +message ExecuteSqlResponse { + // SqlResult represents the results for the execution of sql statements. + repeated SqlResult sql_results = 1; + + // Any additional metadata information regarding the execution of the sql + // statement. + ExecuteSqlMetadata metadata = 3; +} + +// Any additional metadata information regarding the execution of the SQL +message ExecuteSqlMetadata { + // Status contains all valid Status a SQL execution can end up in. + enum Status { + // The status is unknown. + STATUS_UNSPECIFIED = 0; + + // No error during SQL execution i.e. All SQL statements ran to completion. + // The "message" will be empty. + OK = 1; + + // Same as OK, except indicates that only partial results were + // returned. The "message" field will contain details on why results were + // truncated. + PARTIAL = 2; + + // Error during SQL execution. Atleast 1 SQL statement execution resulted in + // a error. Side effects of other statements are rolled back. The "message" + // field will contain human readable error given by Postgres of the first + // bad SQL statement. SQL execution errors don't constitute API errors as + // defined in https://google.aip.dev/193 but will be returned as part of + // this message. + ERROR = 3; + } + + // Message related to SQL execution. Marked as core content since it + // can potentially contain details related to the query or result set. This + // field can be used to convey messages such as "when the SQL result set + // exceeds the acceptable response size limits." + string message = 1; + + // Set to true if SQL returned a result set larger than the acceptable + // response size limits and the result was truncated. + bool partial_result = 2; + + // The time duration taken to execute the sql statement. + google.protobuf.Duration sql_statement_execution_duration = 3; + + // Status of SQL execution. + Status status = 4; } // Message for requesting list of Backups @@ -1200,14 +1360,14 @@ message CreateBackupRequest { Backup backup = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1233,14 +1393,14 @@ message UpdateBackupRequest { Backup backup = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1266,14 +1426,14 @@ message DeleteBackupRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1334,14 +1494,14 @@ message GenerateClientCertificateRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1388,14 +1548,14 @@ message GetConnectionInfoRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1503,14 +1663,14 @@ message CreateUserRequest { User user = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1536,14 +1696,14 @@ message UpdateUserRequest { User user = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1568,14 +1728,14 @@ message DeleteUserRequest { ]; // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes after the first request. + // request ID so that if you must retry your request, the server ignores the + // request if it has already been completed. The server guarantees that for at + // least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request - // ID, the server can check if original operation with the same request ID - // was received, and if so, will ignore the second request. This prevents + // ID, the server can check if the original operation with the same request ID + // was received, and if so, ignores the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is @@ -1586,3 +1746,39 @@ message DeleteUserRequest { // execute it. bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL]; } + +// Message for requesting list of Databases. +message ListDatabasesRequest { + // Required. Parent value for ListDatabasesRequest. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "alloydb.googleapis.com/Database" + } + ]; + + // Optional. The maximum number of databases to return. The service may return + // fewer than this value. If unspecified, 2000 is the default page_size. The + // max value of page_size will be 4000, values above max will be coerced to + // max. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A page token, received from a previous `ListDatabases` call. + // This should be provided to retrieve the subsequent page. + // This field is currently not supported, its value will be ignored if passed. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Filtering results. + // This field is currently not supported, its value will be ignored if passed. + string filter = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for response to listing Databases. +message ListDatabasesResponse { + // The list of databases + repeated Database databases = 1; + + // A token identifying the next page of results the server should return. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; +}