xref: /aosp_15_r20/external/googleapis/google/cloud/alloydb/v1beta/resources.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.alloydb.v1beta;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_info.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/wrappers.proto";
25*d5c09012SAndroid Build Coastguard Workerimport "google/type/dayofweek.proto";
26*d5c09012SAndroid Build Coastguard Workerimport "google/type/timeofday.proto";
27*d5c09012SAndroid Build Coastguard Worker
28*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.AlloyDb.V1Beta";
29*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/alloydb/apiv1beta/alloydbpb;alloydbpb";
30*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
31*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ResourcesProto";
32*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.alloydb.v1beta";
33*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\AlloyDb\\V1beta";
34*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::AlloyDB::V1beta";
35*d5c09012SAndroid Build Coastguard Workeroption (google.api.resource_definition) = {
36*d5c09012SAndroid Build Coastguard Worker  type: "cloudkms.googleapis.com/CryptoKeyVersion"
37*d5c09012SAndroid Build Coastguard Worker  pattern: "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}"
38*d5c09012SAndroid Build Coastguard Worker};
39*d5c09012SAndroid Build Coastguard Workeroption (google.api.resource_definition) = {
40*d5c09012SAndroid Build Coastguard Worker  type: "compute.googleapis.com/Network"
41*d5c09012SAndroid Build Coastguard Worker  pattern: "projects/{project}/global/networks/{network}"
42*d5c09012SAndroid Build Coastguard Worker};
43*d5c09012SAndroid Build Coastguard Worker
44*d5c09012SAndroid Build Coastguard Worker// View on Instance. Pass this enum to rpcs that returns an Instance message to
45*d5c09012SAndroid Build Coastguard Worker// control which subsets of fields to get.
46*d5c09012SAndroid Build Coastguard Workerenum InstanceView {
47*d5c09012SAndroid Build Coastguard Worker  // INSTANCE_VIEW_UNSPECIFIED Not specified, equivalent to BASIC.
48*d5c09012SAndroid Build Coastguard Worker  INSTANCE_VIEW_UNSPECIFIED = 0;
49*d5c09012SAndroid Build Coastguard Worker
50*d5c09012SAndroid Build Coastguard Worker  // BASIC server responses for a primary or read instance include all the
51*d5c09012SAndroid Build Coastguard Worker  // relevant instance details, excluding the details of each node in the
52*d5c09012SAndroid Build Coastguard Worker  // instance. The default value.
53*d5c09012SAndroid Build Coastguard Worker  INSTANCE_VIEW_BASIC = 1;
54*d5c09012SAndroid Build Coastguard Worker
55*d5c09012SAndroid Build Coastguard Worker  // FULL response is equivalent to BASIC for primary instance (for now).
56*d5c09012SAndroid Build Coastguard Worker  // For read pool instance, this includes details of each node in the pool.
57*d5c09012SAndroid Build Coastguard Worker  INSTANCE_VIEW_FULL = 2;
58*d5c09012SAndroid Build Coastguard Worker}
59*d5c09012SAndroid Build Coastguard Worker
60*d5c09012SAndroid Build Coastguard Worker// View on Cluster. Pass this enum to rpcs that returns a cluster message to
61*d5c09012SAndroid Build Coastguard Worker// control which subsets of fields to get.
62*d5c09012SAndroid Build Coastguard Workerenum ClusterView {
63*d5c09012SAndroid Build Coastguard Worker  // CLUSTER_VIEW_UNSPECIFIED Not specified, equivalent to BASIC.
64*d5c09012SAndroid Build Coastguard Worker  CLUSTER_VIEW_UNSPECIFIED = 0;
65*d5c09012SAndroid Build Coastguard Worker
66*d5c09012SAndroid Build Coastguard Worker  // BASIC server responses include all the relevant cluster details, excluding
67*d5c09012SAndroid Build Coastguard Worker  // Cluster.ContinuousBackupInfo.EarliestRestorableTime and other view-specific
68*d5c09012SAndroid Build Coastguard Worker  // fields. The default value.
69*d5c09012SAndroid Build Coastguard Worker  CLUSTER_VIEW_BASIC = 1;
70*d5c09012SAndroid Build Coastguard Worker
71*d5c09012SAndroid Build Coastguard Worker  // CONTINUOUS_BACKUP response returns all the fields from BASIC plus
72*d5c09012SAndroid Build Coastguard Worker  // the earliest restorable time if continuous backups are enabled.
73*d5c09012SAndroid Build Coastguard Worker  // May increase latency.
74*d5c09012SAndroid Build Coastguard Worker  CLUSTER_VIEW_CONTINUOUS_BACKUP = 2;
75*d5c09012SAndroid Build Coastguard Worker}
76*d5c09012SAndroid Build Coastguard Worker
77*d5c09012SAndroid Build Coastguard Worker// The supported database engine versions.
78*d5c09012SAndroid Build Coastguard Workerenum DatabaseVersion {
79*d5c09012SAndroid Build Coastguard Worker  // This is an unknown database version.
80*d5c09012SAndroid Build Coastguard Worker  DATABASE_VERSION_UNSPECIFIED = 0;
81*d5c09012SAndroid Build Coastguard Worker
82*d5c09012SAndroid Build Coastguard Worker  // DEPRECATED - The database version is Postgres 13.
83*d5c09012SAndroid Build Coastguard Worker  POSTGRES_13 = 1 [deprecated = true];
84*d5c09012SAndroid Build Coastguard Worker
85*d5c09012SAndroid Build Coastguard Worker  // The database version is Postgres 14.
86*d5c09012SAndroid Build Coastguard Worker  POSTGRES_14 = 2;
87*d5c09012SAndroid Build Coastguard Worker
88*d5c09012SAndroid Build Coastguard Worker  // The database version is Postgres 15.
89*d5c09012SAndroid Build Coastguard Worker  POSTGRES_15 = 3;
90*d5c09012SAndroid Build Coastguard Worker}
91*d5c09012SAndroid Build Coastguard Worker
92*d5c09012SAndroid Build Coastguard Worker// The username/password for a database user. Used for specifying initial
93*d5c09012SAndroid Build Coastguard Worker// users at cluster creation time.
94*d5c09012SAndroid Build Coastguard Workermessage UserPassword {
95*d5c09012SAndroid Build Coastguard Worker  // The database username.
96*d5c09012SAndroid Build Coastguard Worker  string user = 1;
97*d5c09012SAndroid Build Coastguard Worker
98*d5c09012SAndroid Build Coastguard Worker  // The initial password for the user.
99*d5c09012SAndroid Build Coastguard Worker  string password = 2;
100*d5c09012SAndroid Build Coastguard Worker}
101*d5c09012SAndroid Build Coastguard Worker
102*d5c09012SAndroid Build Coastguard Worker// Subset of the source instance configuration that is available when reading
103*d5c09012SAndroid Build Coastguard Worker// the cluster resource.
104*d5c09012SAndroid Build Coastguard Workermessage MigrationSource {
105*d5c09012SAndroid Build Coastguard Worker  // Denote the type of migration source that created this cluster.
106*d5c09012SAndroid Build Coastguard Worker  enum MigrationSourceType {
107*d5c09012SAndroid Build Coastguard Worker    // Migration source is unknown.
108*d5c09012SAndroid Build Coastguard Worker    MIGRATION_SOURCE_TYPE_UNSPECIFIED = 0;
109*d5c09012SAndroid Build Coastguard Worker
110*d5c09012SAndroid Build Coastguard Worker    // DMS source means the cluster was created via DMS migration job.
111*d5c09012SAndroid Build Coastguard Worker    DMS = 1;
112*d5c09012SAndroid Build Coastguard Worker  }
113*d5c09012SAndroid Build Coastguard Worker
114*d5c09012SAndroid Build Coastguard Worker  // Output only. The host and port of the on-premises instance in host:port
115*d5c09012SAndroid Build Coastguard Worker  // format
116*d5c09012SAndroid Build Coastguard Worker  string host_port = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
117*d5c09012SAndroid Build Coastguard Worker
118*d5c09012SAndroid Build Coastguard Worker  // Output only. Place holder for the external source identifier(e.g DMS job
119*d5c09012SAndroid Build Coastguard Worker  // name) that created the cluster.
120*d5c09012SAndroid Build Coastguard Worker  string reference_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
121*d5c09012SAndroid Build Coastguard Worker
122*d5c09012SAndroid Build Coastguard Worker  // Output only. Type of migration source.
123*d5c09012SAndroid Build Coastguard Worker  MigrationSourceType source_type = 3
124*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
125*d5c09012SAndroid Build Coastguard Worker}
126*d5c09012SAndroid Build Coastguard Worker
127*d5c09012SAndroid Build Coastguard Worker// EncryptionConfig describes the encryption config of a cluster or a backup
128*d5c09012SAndroid Build Coastguard Worker// that is encrypted with a CMEK (customer-managed encryption key).
129*d5c09012SAndroid Build Coastguard Workermessage EncryptionConfig {
130*d5c09012SAndroid Build Coastguard Worker  // The fully-qualified resource name of the KMS key.
131*d5c09012SAndroid Build Coastguard Worker  // Each Cloud KMS key is regionalized and has the following format:
132*d5c09012SAndroid Build Coastguard Worker  // projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]
133*d5c09012SAndroid Build Coastguard Worker  string kms_key_name = 1;
134*d5c09012SAndroid Build Coastguard Worker}
135*d5c09012SAndroid Build Coastguard Worker
136*d5c09012SAndroid Build Coastguard Worker// EncryptionInfo describes the encryption information of a cluster or a backup.
137*d5c09012SAndroid Build Coastguard Workermessage EncryptionInfo {
138*d5c09012SAndroid Build Coastguard Worker  // Possible encryption types.
139*d5c09012SAndroid Build Coastguard Worker  enum Type {
140*d5c09012SAndroid Build Coastguard Worker    // Encryption type not specified. Defaults to GOOGLE_DEFAULT_ENCRYPTION.
141*d5c09012SAndroid Build Coastguard Worker    TYPE_UNSPECIFIED = 0;
142*d5c09012SAndroid Build Coastguard Worker
143*d5c09012SAndroid Build Coastguard Worker    // The data is encrypted at rest with a key that is fully managed by Google.
144*d5c09012SAndroid Build Coastguard Worker    // No key version will be populated. This is the default state.
145*d5c09012SAndroid Build Coastguard Worker    GOOGLE_DEFAULT_ENCRYPTION = 1;
146*d5c09012SAndroid Build Coastguard Worker
147*d5c09012SAndroid Build Coastguard Worker    // The data is encrypted at rest with a key that is managed by the customer.
148*d5c09012SAndroid Build Coastguard Worker    // KMS key versions will be populated.
149*d5c09012SAndroid Build Coastguard Worker    CUSTOMER_MANAGED_ENCRYPTION = 2;
150*d5c09012SAndroid Build Coastguard Worker  }
151*d5c09012SAndroid Build Coastguard Worker
152*d5c09012SAndroid Build Coastguard Worker  // Output only. Type of encryption.
153*d5c09012SAndroid Build Coastguard Worker  Type encryption_type = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
154*d5c09012SAndroid Build Coastguard Worker
155*d5c09012SAndroid Build Coastguard Worker  // Output only. Cloud KMS key versions that are being used to protect the
156*d5c09012SAndroid Build Coastguard Worker  // database or the backup.
157*d5c09012SAndroid Build Coastguard Worker  repeated string kms_key_versions = 2 [
158*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = OUTPUT_ONLY,
159*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
160*d5c09012SAndroid Build Coastguard Worker      type: "cloudkms.googleapis.com/CryptoKeyVersion"
161*d5c09012SAndroid Build Coastguard Worker    }
162*d5c09012SAndroid Build Coastguard Worker  ];
163*d5c09012SAndroid Build Coastguard Worker}
164*d5c09012SAndroid Build Coastguard Worker
165*d5c09012SAndroid Build Coastguard Worker// SSL configuration.
166*d5c09012SAndroid Build Coastguard Workermessage SslConfig {
167*d5c09012SAndroid Build Coastguard Worker  // SSL mode options.
168*d5c09012SAndroid Build Coastguard Worker  enum SslMode {
169*d5c09012SAndroid Build Coastguard Worker    // SSL mode not specified. Defaults to ENCRYPTED_ONLY.
170*d5c09012SAndroid Build Coastguard Worker    SSL_MODE_UNSPECIFIED = 0;
171*d5c09012SAndroid Build Coastguard Worker
172*d5c09012SAndroid Build Coastguard Worker    // SSL connections are optional. CA verification not enforced.
173*d5c09012SAndroid Build Coastguard Worker    SSL_MODE_ALLOW = 1 [deprecated = true];
174*d5c09012SAndroid Build Coastguard Worker
175*d5c09012SAndroid Build Coastguard Worker    // SSL connections are required. CA verification not enforced.
176*d5c09012SAndroid Build Coastguard Worker    // Clients may use locally self-signed certificates (default psql client
177*d5c09012SAndroid Build Coastguard Worker    // behavior).
178*d5c09012SAndroid Build Coastguard Worker    SSL_MODE_REQUIRE = 2 [deprecated = true];
179*d5c09012SAndroid Build Coastguard Worker
180*d5c09012SAndroid Build Coastguard Worker    // SSL connections are required. CA verification enforced.
181*d5c09012SAndroid Build Coastguard Worker    // Clients must have certificates signed by a Cluster CA, e.g. via
182*d5c09012SAndroid Build Coastguard Worker    // GenerateClientCertificate.
183*d5c09012SAndroid Build Coastguard Worker    SSL_MODE_VERIFY_CA = 3 [deprecated = true];
184*d5c09012SAndroid Build Coastguard Worker
185*d5c09012SAndroid Build Coastguard Worker    // SSL connections are optional. CA verification not enforced.
186*d5c09012SAndroid Build Coastguard Worker    ALLOW_UNENCRYPTED_AND_ENCRYPTED = 4;
187*d5c09012SAndroid Build Coastguard Worker
188*d5c09012SAndroid Build Coastguard Worker    // SSL connections are required. CA verification not enforced.
189*d5c09012SAndroid Build Coastguard Worker    ENCRYPTED_ONLY = 5;
190*d5c09012SAndroid Build Coastguard Worker  }
191*d5c09012SAndroid Build Coastguard Worker
192*d5c09012SAndroid Build Coastguard Worker  // Certificate Authority (CA) source for SSL/TLS certificates.
193*d5c09012SAndroid Build Coastguard Worker  enum CaSource {
194*d5c09012SAndroid Build Coastguard Worker    // Certificate Authority (CA) source not specified. Defaults to
195*d5c09012SAndroid Build Coastguard Worker    // CA_SOURCE_MANAGED.
196*d5c09012SAndroid Build Coastguard Worker    CA_SOURCE_UNSPECIFIED = 0;
197*d5c09012SAndroid Build Coastguard Worker
198*d5c09012SAndroid Build Coastguard Worker    // Certificate Authority (CA) managed by the AlloyDB Cluster.
199*d5c09012SAndroid Build Coastguard Worker    CA_SOURCE_MANAGED = 1;
200*d5c09012SAndroid Build Coastguard Worker  }
201*d5c09012SAndroid Build Coastguard Worker
202*d5c09012SAndroid Build Coastguard Worker  // Optional. SSL mode. Specifies client-server SSL/TLS connection behavior.
203*d5c09012SAndroid Build Coastguard Worker  SslMode ssl_mode = 1 [(google.api.field_behavior) = OPTIONAL];
204*d5c09012SAndroid Build Coastguard Worker
205*d5c09012SAndroid Build Coastguard Worker  // Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is
206*d5c09012SAndroid Build Coastguard Worker  // supported currently, and is the default value.
207*d5c09012SAndroid Build Coastguard Worker  CaSource ca_source = 2 [(google.api.field_behavior) = OPTIONAL];
208*d5c09012SAndroid Build Coastguard Worker}
209*d5c09012SAndroid Build Coastguard Worker
210*d5c09012SAndroid Build Coastguard Worker// Message describing the user-specified automated backup policy.
211*d5c09012SAndroid Build Coastguard Worker//
212*d5c09012SAndroid Build Coastguard Worker// All fields in the automated backup policy are optional. Defaults for each
213*d5c09012SAndroid Build Coastguard Worker// field are provided if they are not set.
214*d5c09012SAndroid Build Coastguard Workermessage AutomatedBackupPolicy {
215*d5c09012SAndroid Build Coastguard Worker  // A weekly schedule starts a backup at prescribed start times within a
216*d5c09012SAndroid Build Coastguard Worker  // day, for the specified days of the week.
217*d5c09012SAndroid Build Coastguard Worker  //
218*d5c09012SAndroid Build Coastguard Worker  // The weekly schedule message is flexible and can be used to create many
219*d5c09012SAndroid Build Coastguard Worker  // types of schedules. For example, to have a daily backup that starts at
220*d5c09012SAndroid Build Coastguard Worker  // 22:00, configure the `start_times` field to have one element "22:00" and
221*d5c09012SAndroid Build Coastguard Worker  // the `days_of_week` field to have all seven days of the week.
222*d5c09012SAndroid Build Coastguard Worker  message WeeklySchedule {
223*d5c09012SAndroid Build Coastguard Worker    // The times during the day to start a backup. The start times are assumed
224*d5c09012SAndroid Build Coastguard Worker    // to be in UTC and to be an exact hour (e.g., 04:00:00).
225*d5c09012SAndroid Build Coastguard Worker    //
226*d5c09012SAndroid Build Coastguard Worker    // If no start times are provided, a single fixed start time is chosen
227*d5c09012SAndroid Build Coastguard Worker    // arbitrarily.
228*d5c09012SAndroid Build Coastguard Worker    repeated google.type.TimeOfDay start_times = 1;
229*d5c09012SAndroid Build Coastguard Worker
230*d5c09012SAndroid Build Coastguard Worker    // The days of the week to perform a backup.
231*d5c09012SAndroid Build Coastguard Worker    //
232*d5c09012SAndroid Build Coastguard Worker    // If this field is left empty, the default of every day of the week is
233*d5c09012SAndroid Build Coastguard Worker    // used.
234*d5c09012SAndroid Build Coastguard Worker    repeated google.type.DayOfWeek days_of_week = 2;
235*d5c09012SAndroid Build Coastguard Worker  }
236*d5c09012SAndroid Build Coastguard Worker
237*d5c09012SAndroid Build Coastguard Worker  // A time based retention policy specifies that all backups within a certain
238*d5c09012SAndroid Build Coastguard Worker  // time period should be retained.
239*d5c09012SAndroid Build Coastguard Worker  message TimeBasedRetention {
240*d5c09012SAndroid Build Coastguard Worker    // The retention period.
241*d5c09012SAndroid Build Coastguard Worker    google.protobuf.Duration retention_period = 1;
242*d5c09012SAndroid Build Coastguard Worker  }
243*d5c09012SAndroid Build Coastguard Worker
244*d5c09012SAndroid Build Coastguard Worker  // A quantity based policy specifies that a certain number of the most recent
245*d5c09012SAndroid Build Coastguard Worker  // successful backups should be retained.
246*d5c09012SAndroid Build Coastguard Worker  message QuantityBasedRetention {
247*d5c09012SAndroid Build Coastguard Worker    // The number of backups to retain.
248*d5c09012SAndroid Build Coastguard Worker    int32 count = 1;
249*d5c09012SAndroid Build Coastguard Worker  }
250*d5c09012SAndroid Build Coastguard Worker
251*d5c09012SAndroid Build Coastguard Worker  // The schedule for this automated backup policy.
252*d5c09012SAndroid Build Coastguard Worker  //
253*d5c09012SAndroid Build Coastguard Worker  // A schedule specifies times at which to start a backup. If a backup
254*d5c09012SAndroid Build Coastguard Worker  // window is also provided, the backup is guaranteed to be started and
255*d5c09012SAndroid Build Coastguard Worker  // completed within the start time plus the backup window. If the backup is
256*d5c09012SAndroid Build Coastguard Worker  // not completed within the backup window it is marked as failed.
257*d5c09012SAndroid Build Coastguard Worker  //
258*d5c09012SAndroid Build Coastguard Worker  // If not set, the schedule defaults to a weekly schedule with one backup
259*d5c09012SAndroid Build Coastguard Worker  // per day and a start time chosen arbitrarily.
260*d5c09012SAndroid Build Coastguard Worker  oneof schedule {
261*d5c09012SAndroid Build Coastguard Worker    // Weekly schedule for the Backup.
262*d5c09012SAndroid Build Coastguard Worker    WeeklySchedule weekly_schedule = 2;
263*d5c09012SAndroid Build Coastguard Worker  }
264*d5c09012SAndroid Build Coastguard Worker
265*d5c09012SAndroid Build Coastguard Worker  // The retention policy for automated backups.
266*d5c09012SAndroid Build Coastguard Worker  //
267*d5c09012SAndroid Build Coastguard Worker  // The retention policy for a backup is fixed at the time the backup is
268*d5c09012SAndroid Build Coastguard Worker  // created. Changes to this field only apply to new backups taken with the
269*d5c09012SAndroid Build Coastguard Worker  // policy; the retentions of existing backups remain unchanged.
270*d5c09012SAndroid Build Coastguard Worker  //
271*d5c09012SAndroid Build Coastguard Worker  // If no retention policy is set, a default of 14 days is used.
272*d5c09012SAndroid Build Coastguard Worker  oneof retention {
273*d5c09012SAndroid Build Coastguard Worker    // Time-based Backup retention policy.
274*d5c09012SAndroid Build Coastguard Worker    TimeBasedRetention time_based_retention = 4;
275*d5c09012SAndroid Build Coastguard Worker
276*d5c09012SAndroid Build Coastguard Worker    // Quantity-based Backup retention policy to retain recent backups.
277*d5c09012SAndroid Build Coastguard Worker    QuantityBasedRetention quantity_based_retention = 5;
278*d5c09012SAndroid Build Coastguard Worker  }
279*d5c09012SAndroid Build Coastguard Worker
280*d5c09012SAndroid Build Coastguard Worker  // Whether automated automated backups are enabled. If not set, defaults to
281*d5c09012SAndroid Build Coastguard Worker  // true.
282*d5c09012SAndroid Build Coastguard Worker  optional bool enabled = 1;
283*d5c09012SAndroid Build Coastguard Worker
284*d5c09012SAndroid Build Coastguard Worker  // The length of the time window during which a backup can be
285*d5c09012SAndroid Build Coastguard Worker  // taken. If a backup does not succeed within this time window, it will be
286*d5c09012SAndroid Build Coastguard Worker  // canceled and considered failed.
287*d5c09012SAndroid Build Coastguard Worker  //
288*d5c09012SAndroid Build Coastguard Worker  // The backup window must be at least 5 minutes long. There is no upper bound
289*d5c09012SAndroid Build Coastguard Worker  // on the window. If not set, it defaults to 1 hour.
290*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Duration backup_window = 3;
291*d5c09012SAndroid Build Coastguard Worker
292*d5c09012SAndroid Build Coastguard Worker  // Optional. The encryption config can be specified to encrypt the
293*d5c09012SAndroid Build Coastguard Worker  // backups with a customer-managed encryption key (CMEK). When this field is
294*d5c09012SAndroid Build Coastguard Worker  // not specified, the backup will then use default encryption scheme to
295*d5c09012SAndroid Build Coastguard Worker  // protect the user data.
296*d5c09012SAndroid Build Coastguard Worker  EncryptionConfig encryption_config = 8
297*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
298*d5c09012SAndroid Build Coastguard Worker
299*d5c09012SAndroid Build Coastguard Worker  // The location where the backup will be stored. Currently, the only supported
300*d5c09012SAndroid Build Coastguard Worker  // option is to store the backup in the same region as the cluster.
301*d5c09012SAndroid Build Coastguard Worker  //
302*d5c09012SAndroid Build Coastguard Worker  // If empty, defaults to the region of the cluster.
303*d5c09012SAndroid Build Coastguard Worker  string location = 6;
304*d5c09012SAndroid Build Coastguard Worker
305*d5c09012SAndroid Build Coastguard Worker  // Labels to apply to backups created using this configuration.
306*d5c09012SAndroid Build Coastguard Worker  map<string, string> labels = 7;
307*d5c09012SAndroid Build Coastguard Worker}
308*d5c09012SAndroid Build Coastguard Worker
309*d5c09012SAndroid Build Coastguard Worker// ContinuousBackupConfig describes the continuous backups recovery
310*d5c09012SAndroid Build Coastguard Worker// configurations of a cluster.
311*d5c09012SAndroid Build Coastguard Workermessage ContinuousBackupConfig {
312*d5c09012SAndroid Build Coastguard Worker  // Whether ContinuousBackup is enabled.
313*d5c09012SAndroid Build Coastguard Worker  optional bool enabled = 1;
314*d5c09012SAndroid Build Coastguard Worker
315*d5c09012SAndroid Build Coastguard Worker  // The number of days that are eligible to restore from using PITR. To support
316*d5c09012SAndroid Build Coastguard Worker  // the entire recovery window, backups and logs are retained for one day more
317*d5c09012SAndroid Build Coastguard Worker  // than the recovery window. If not set, defaults to 14 days.
318*d5c09012SAndroid Build Coastguard Worker  int32 recovery_window_days = 4;
319*d5c09012SAndroid Build Coastguard Worker
320*d5c09012SAndroid Build Coastguard Worker  // The encryption config can be specified to encrypt the
321*d5c09012SAndroid Build Coastguard Worker  // backups with a customer-managed encryption key (CMEK). When this field is
322*d5c09012SAndroid Build Coastguard Worker  // not specified, the backup will then use default encryption scheme to
323*d5c09012SAndroid Build Coastguard Worker  // protect the user data.
324*d5c09012SAndroid Build Coastguard Worker  EncryptionConfig encryption_config = 3;
325*d5c09012SAndroid Build Coastguard Worker}
326*d5c09012SAndroid Build Coastguard Worker
327*d5c09012SAndroid Build Coastguard Worker// ContinuousBackupInfo describes the continuous backup properties of a
328*d5c09012SAndroid Build Coastguard Worker// cluster.
329*d5c09012SAndroid Build Coastguard Workermessage ContinuousBackupInfo {
330*d5c09012SAndroid Build Coastguard Worker  // Output only. The encryption information for the WALs and backups required
331*d5c09012SAndroid Build Coastguard Worker  // for ContinuousBackup.
332*d5c09012SAndroid Build Coastguard Worker  EncryptionInfo encryption_info = 1
333*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
334*d5c09012SAndroid Build Coastguard Worker
335*d5c09012SAndroid Build Coastguard Worker  // Output only. When ContinuousBackup was most recently enabled. Set to null
336*d5c09012SAndroid Build Coastguard Worker  // if ContinuousBackup is not enabled.
337*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp enabled_time = 2
338*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
339*d5c09012SAndroid Build Coastguard Worker
340*d5c09012SAndroid Build Coastguard Worker  // Output only. Days of the week on which a continuous backup is taken. Output
341*d5c09012SAndroid Build Coastguard Worker  // only field. Ignored if passed into the request.
342*d5c09012SAndroid Build Coastguard Worker  repeated google.type.DayOfWeek schedule = 3
343*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
344*d5c09012SAndroid Build Coastguard Worker
345*d5c09012SAndroid Build Coastguard Worker  // Output only. The earliest restorable time that can be restored to. Output
346*d5c09012SAndroid Build Coastguard Worker  // only field.
347*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp earliest_restorable_time = 4
348*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
349*d5c09012SAndroid Build Coastguard Worker}
350*d5c09012SAndroid Build Coastguard Worker
351*d5c09012SAndroid Build Coastguard Worker// Message describing a BackupSource.
352*d5c09012SAndroid Build Coastguard Workermessage BackupSource {
353*d5c09012SAndroid Build Coastguard Worker  // Output only. The system-generated UID of the backup which was used to
354*d5c09012SAndroid Build Coastguard Worker  // create this resource. The UID is generated when the backup is created, and
355*d5c09012SAndroid Build Coastguard Worker  // it is retained until the backup is deleted.
356*d5c09012SAndroid Build Coastguard Worker  string backup_uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
357*d5c09012SAndroid Build Coastguard Worker
358*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the backup resource with the format:
359*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}/backups/{backup_id}
360*d5c09012SAndroid Build Coastguard Worker  string backup_name = 1 [
361*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
362*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { type: "alloydb.googleapis.com/Backup" }
363*d5c09012SAndroid Build Coastguard Worker  ];
364*d5c09012SAndroid Build Coastguard Worker}
365*d5c09012SAndroid Build Coastguard Worker
366*d5c09012SAndroid Build Coastguard Worker// Message describing a ContinuousBackupSource.
367*d5c09012SAndroid Build Coastguard Workermessage ContinuousBackupSource {
368*d5c09012SAndroid Build Coastguard Worker  // Required. The source cluster from which to restore. This cluster must have
369*d5c09012SAndroid Build Coastguard Worker  // continuous backup enabled for this operation to succeed. For the required
370*d5c09012SAndroid Build Coastguard Worker  // format, see the comment on the Cluster.name field.
371*d5c09012SAndroid Build Coastguard Worker  string cluster = 1 [(google.api.field_behavior) = REQUIRED];
372*d5c09012SAndroid Build Coastguard Worker
373*d5c09012SAndroid Build Coastguard Worker  // Required. The point in time to restore to.
374*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp point_in_time = 2
375*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = REQUIRED];
376*d5c09012SAndroid Build Coastguard Worker}
377*d5c09012SAndroid Build Coastguard Worker
378*d5c09012SAndroid Build Coastguard Worker// A cluster is a collection of regional AlloyDB resources. It can include a
379*d5c09012SAndroid Build Coastguard Worker// primary instance and one or more read pool instances.
380*d5c09012SAndroid Build Coastguard Worker// All cluster resources share a storage layer, which scales as needed.
381*d5c09012SAndroid Build Coastguard Workermessage Cluster {
382*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
383*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/Cluster"
384*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/clusters/{cluster}"
385*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
386*d5c09012SAndroid Build Coastguard Worker  };
387*d5c09012SAndroid Build Coastguard Worker
388*d5c09012SAndroid Build Coastguard Worker  // Metadata related to network configuration.
389*d5c09012SAndroid Build Coastguard Worker  message NetworkConfig {
390*d5c09012SAndroid Build Coastguard Worker    // Optional. The resource link for the VPC network in which cluster
391*d5c09012SAndroid Build Coastguard Worker    // resources are created and from which they are accessible via Private IP.
392*d5c09012SAndroid Build Coastguard Worker    // The network must belong to the same project as the cluster. It is
393*d5c09012SAndroid Build Coastguard Worker    // specified in the form:
394*d5c09012SAndroid Build Coastguard Worker    // "projects/{project_number}/global/networks/{network_id}". This is
395*d5c09012SAndroid Build Coastguard Worker    // required to create a cluster.
396*d5c09012SAndroid Build Coastguard Worker    string network = 1 [
397*d5c09012SAndroid Build Coastguard Worker      (google.api.field_behavior) = OPTIONAL,
398*d5c09012SAndroid Build Coastguard Worker      (google.api.resource_reference) = {
399*d5c09012SAndroid Build Coastguard Worker        type: "compute.googleapis.com/Network"
400*d5c09012SAndroid Build Coastguard Worker      }
401*d5c09012SAndroid Build Coastguard Worker    ];
402*d5c09012SAndroid Build Coastguard Worker
403*d5c09012SAndroid Build Coastguard Worker    // Optional. Name of the allocated IP range for the private IP AlloyDB
404*d5c09012SAndroid Build Coastguard Worker    // cluster, for example: "google-managed-services-default". If set, the
405*d5c09012SAndroid Build Coastguard Worker    // instance IPs for this cluster will be created in the allocated range. The
406*d5c09012SAndroid Build Coastguard Worker    // range name must comply with RFC 1035. Specifically, the name must be 1-63
407*d5c09012SAndroid Build Coastguard Worker    // characters long and match the regular expression
408*d5c09012SAndroid Build Coastguard Worker    // `[a-z]([-a-z0-9]*[a-z0-9])?`.
409*d5c09012SAndroid Build Coastguard Worker    // Field name is intended to be consistent with Cloud SQL.
410*d5c09012SAndroid Build Coastguard Worker    string allocated_ip_range = 2 [(google.api.field_behavior) = OPTIONAL];
411*d5c09012SAndroid Build Coastguard Worker  }
412*d5c09012SAndroid Build Coastguard Worker
413*d5c09012SAndroid Build Coastguard Worker  // Configuration information for the secondary cluster. This should be set
414*d5c09012SAndroid Build Coastguard Worker  // if and only if the cluster is of type SECONDARY.
415*d5c09012SAndroid Build Coastguard Worker  message SecondaryConfig {
416*d5c09012SAndroid Build Coastguard Worker    // The name of the primary cluster name with the format:
417*d5c09012SAndroid Build Coastguard Worker    // * projects/{project}/locations/{region}/clusters/{cluster_id}
418*d5c09012SAndroid Build Coastguard Worker    string primary_cluster_name = 1;
419*d5c09012SAndroid Build Coastguard Worker  }
420*d5c09012SAndroid Build Coastguard Worker
421*d5c09012SAndroid Build Coastguard Worker  // Configuration for the primary cluster. It has the list of clusters that are
422*d5c09012SAndroid Build Coastguard Worker  // replicating from this cluster. This should be set if and only if the
423*d5c09012SAndroid Build Coastguard Worker  // cluster is of type PRIMARY.
424*d5c09012SAndroid Build Coastguard Worker  message PrimaryConfig {
425*d5c09012SAndroid Build Coastguard Worker    // Output only. Names of the clusters that are replicating from this
426*d5c09012SAndroid Build Coastguard Worker    // cluster.
427*d5c09012SAndroid Build Coastguard Worker    repeated string secondary_cluster_names = 1
428*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OUTPUT_ONLY];
429*d5c09012SAndroid Build Coastguard Worker  }
430*d5c09012SAndroid Build Coastguard Worker
431*d5c09012SAndroid Build Coastguard Worker  // Cluster State
432*d5c09012SAndroid Build Coastguard Worker  enum State {
433*d5c09012SAndroid Build Coastguard Worker    // The state of the cluster is unknown.
434*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
435*d5c09012SAndroid Build Coastguard Worker
436*d5c09012SAndroid Build Coastguard Worker    // The cluster is active and running.
437*d5c09012SAndroid Build Coastguard Worker    READY = 1;
438*d5c09012SAndroid Build Coastguard Worker
439*d5c09012SAndroid Build Coastguard Worker    // The cluster is stopped. All instances in the cluster are stopped.
440*d5c09012SAndroid Build Coastguard Worker    // Customers can start a stopped cluster at any point and all their
441*d5c09012SAndroid Build Coastguard Worker    // instances will come back to life with same names and IP resources. In
442*d5c09012SAndroid Build Coastguard Worker    // this state, customer pays for storage.
443*d5c09012SAndroid Build Coastguard Worker    // Associated backups could also be present in a stopped cluster.
444*d5c09012SAndroid Build Coastguard Worker    STOPPED = 2;
445*d5c09012SAndroid Build Coastguard Worker
446*d5c09012SAndroid Build Coastguard Worker    // The cluster is empty and has no associated resources.
447*d5c09012SAndroid Build Coastguard Worker    // All instances, associated storage and backups have been deleted.
448*d5c09012SAndroid Build Coastguard Worker    EMPTY = 3;
449*d5c09012SAndroid Build Coastguard Worker
450*d5c09012SAndroid Build Coastguard Worker    // The cluster is being created.
451*d5c09012SAndroid Build Coastguard Worker    CREATING = 4;
452*d5c09012SAndroid Build Coastguard Worker
453*d5c09012SAndroid Build Coastguard Worker    // The cluster is being deleted.
454*d5c09012SAndroid Build Coastguard Worker    DELETING = 5;
455*d5c09012SAndroid Build Coastguard Worker
456*d5c09012SAndroid Build Coastguard Worker    // The creation of the cluster failed.
457*d5c09012SAndroid Build Coastguard Worker    FAILED = 6;
458*d5c09012SAndroid Build Coastguard Worker
459*d5c09012SAndroid Build Coastguard Worker    // The cluster is bootstrapping with data from some other source.
460*d5c09012SAndroid Build Coastguard Worker    // Direct mutations to the cluster (e.g. adding read pool) are not allowed.
461*d5c09012SAndroid Build Coastguard Worker    BOOTSTRAPPING = 7;
462*d5c09012SAndroid Build Coastguard Worker
463*d5c09012SAndroid Build Coastguard Worker    // The cluster is under maintenance. AlloyDB regularly performs maintenance
464*d5c09012SAndroid Build Coastguard Worker    // and upgrades on customer clusters. Updates on the cluster are
465*d5c09012SAndroid Build Coastguard Worker    // not allowed while the cluster is in this state.
466*d5c09012SAndroid Build Coastguard Worker    MAINTENANCE = 8;
467*d5c09012SAndroid Build Coastguard Worker
468*d5c09012SAndroid Build Coastguard Worker    // The cluster is being promoted.
469*d5c09012SAndroid Build Coastguard Worker    PROMOTING = 9;
470*d5c09012SAndroid Build Coastguard Worker  }
471*d5c09012SAndroid Build Coastguard Worker
472*d5c09012SAndroid Build Coastguard Worker  // Type of Cluster
473*d5c09012SAndroid Build Coastguard Worker  enum ClusterType {
474*d5c09012SAndroid Build Coastguard Worker    // The type of the cluster is unknown.
475*d5c09012SAndroid Build Coastguard Worker    CLUSTER_TYPE_UNSPECIFIED = 0;
476*d5c09012SAndroid Build Coastguard Worker
477*d5c09012SAndroid Build Coastguard Worker    // Primary cluster that support read and write operations.
478*d5c09012SAndroid Build Coastguard Worker    PRIMARY = 1;
479*d5c09012SAndroid Build Coastguard Worker
480*d5c09012SAndroid Build Coastguard Worker    // Secondary cluster that is replicating from another region.
481*d5c09012SAndroid Build Coastguard Worker    // This only supports read.
482*d5c09012SAndroid Build Coastguard Worker    SECONDARY = 2;
483*d5c09012SAndroid Build Coastguard Worker  }
484*d5c09012SAndroid Build Coastguard Worker
485*d5c09012SAndroid Build Coastguard Worker  // In case of an imported cluster, this field contains information about the
486*d5c09012SAndroid Build Coastguard Worker  // source this cluster was imported from.
487*d5c09012SAndroid Build Coastguard Worker  oneof source {
488*d5c09012SAndroid Build Coastguard Worker    // Output only. Cluster created from backup.
489*d5c09012SAndroid Build Coastguard Worker    BackupSource backup_source = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
490*d5c09012SAndroid Build Coastguard Worker
491*d5c09012SAndroid Build Coastguard Worker    // Output only. Cluster created via DMS migration.
492*d5c09012SAndroid Build Coastguard Worker    MigrationSource migration_source = 16
493*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OUTPUT_ONLY];
494*d5c09012SAndroid Build Coastguard Worker  }
495*d5c09012SAndroid Build Coastguard Worker
496*d5c09012SAndroid Build Coastguard Worker  // Output only. The name of the cluster resource with the format:
497*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}/clusters/{cluster_id}
498*d5c09012SAndroid Build Coastguard Worker  // where the cluster ID segment should satisfy the regex expression
499*d5c09012SAndroid Build Coastguard Worker  // `[a-z0-9-]+`. For more details see https://google.aip.dev/122.
500*d5c09012SAndroid Build Coastguard Worker  // The prefix of the cluster resource name is the name of the parent resource:
501*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}
502*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
503*d5c09012SAndroid Build Coastguard Worker
504*d5c09012SAndroid Build Coastguard Worker  // User-settable and human-readable display name for the Cluster.
505*d5c09012SAndroid Build Coastguard Worker  string display_name = 2;
506*d5c09012SAndroid Build Coastguard Worker
507*d5c09012SAndroid Build Coastguard Worker  // Output only. The system-generated UID of the resource. The UID is assigned
508*d5c09012SAndroid Build Coastguard Worker  // when the resource is created, and it is retained until it is deleted.
509*d5c09012SAndroid Build Coastguard Worker  string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
510*d5c09012SAndroid Build Coastguard Worker
511*d5c09012SAndroid Build Coastguard Worker  // Output only. Create time stamp
512*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 4
513*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
514*d5c09012SAndroid Build Coastguard Worker
515*d5c09012SAndroid Build Coastguard Worker  // Output only. Update time stamp
516*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 5
517*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
518*d5c09012SAndroid Build Coastguard Worker
519*d5c09012SAndroid Build Coastguard Worker  // Output only. Delete time stamp
520*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 6
521*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
522*d5c09012SAndroid Build Coastguard Worker
523*d5c09012SAndroid Build Coastguard Worker  // Labels as key value pairs
524*d5c09012SAndroid Build Coastguard Worker  map<string, string> labels = 7;
525*d5c09012SAndroid Build Coastguard Worker
526*d5c09012SAndroid Build Coastguard Worker  // Output only. The current serving state of the cluster.
527*d5c09012SAndroid Build Coastguard Worker  State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
528*d5c09012SAndroid Build Coastguard Worker
529*d5c09012SAndroid Build Coastguard Worker  // Output only. The type of the cluster. This is an output-only field and it's
530*d5c09012SAndroid Build Coastguard Worker  // populated at the Cluster creation time or the Cluster promotion
531*d5c09012SAndroid Build Coastguard Worker  // time. The cluster type is determined by which RPC was used to create
532*d5c09012SAndroid Build Coastguard Worker  // the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`
533*d5c09012SAndroid Build Coastguard Worker  ClusterType cluster_type = 24 [(google.api.field_behavior) = OUTPUT_ONLY];
534*d5c09012SAndroid Build Coastguard Worker
535*d5c09012SAndroid Build Coastguard Worker  // Optional. The database engine major version. This is an optional field and
536*d5c09012SAndroid Build Coastguard Worker  // it is populated at the Cluster creation time. If a database version is not
537*d5c09012SAndroid Build Coastguard Worker  // supplied at cluster creation time, then a default database version will
538*d5c09012SAndroid Build Coastguard Worker  // be used.
539*d5c09012SAndroid Build Coastguard Worker  DatabaseVersion database_version = 9 [(google.api.field_behavior) = OPTIONAL];
540*d5c09012SAndroid Build Coastguard Worker
541*d5c09012SAndroid Build Coastguard Worker  NetworkConfig network_config = 29 [(google.api.field_behavior) = OPTIONAL];
542*d5c09012SAndroid Build Coastguard Worker
543*d5c09012SAndroid Build Coastguard Worker  // Required. The resource link for the VPC network in which cluster resources
544*d5c09012SAndroid Build Coastguard Worker  // are created and from which they are accessible via Private IP. The network
545*d5c09012SAndroid Build Coastguard Worker  // must belong to the same project as the cluster. It is specified in the
546*d5c09012SAndroid Build Coastguard Worker  // form: "projects/{project}/global/networks/{network_id}". This is required
547*d5c09012SAndroid Build Coastguard Worker  // to create a cluster. Deprecated, use network_config.network instead.
548*d5c09012SAndroid Build Coastguard Worker  string network = 10 [
549*d5c09012SAndroid Build Coastguard Worker    deprecated = true,
550*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
551*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { type: "compute.googleapis.com/Network" }
552*d5c09012SAndroid Build Coastguard Worker  ];
553*d5c09012SAndroid Build Coastguard Worker
554*d5c09012SAndroid Build Coastguard Worker  // For Resource freshness validation (https://google.aip.dev/154)
555*d5c09012SAndroid Build Coastguard Worker  string etag = 11;
556*d5c09012SAndroid Build Coastguard Worker
557*d5c09012SAndroid Build Coastguard Worker  // Annotations to allow client tools to store small amount of arbitrary data.
558*d5c09012SAndroid Build Coastguard Worker  // This is distinct from labels.
559*d5c09012SAndroid Build Coastguard Worker  // https://google.aip.dev/128
560*d5c09012SAndroid Build Coastguard Worker  map<string, string> annotations = 12;
561*d5c09012SAndroid Build Coastguard Worker
562*d5c09012SAndroid Build Coastguard Worker  // Output only. Reconciling (https://google.aip.dev/128#reconciliation).
563*d5c09012SAndroid Build Coastguard Worker  // Set to true if the current state of Cluster does not match the user's
564*d5c09012SAndroid Build Coastguard Worker  // intended state, and the service is actively updating the resource to
565*d5c09012SAndroid Build Coastguard Worker  // reconcile them. This can happen due to user-triggered updates or
566*d5c09012SAndroid Build Coastguard Worker  // system actions like failover or maintenance.
567*d5c09012SAndroid Build Coastguard Worker  bool reconciling = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
568*d5c09012SAndroid Build Coastguard Worker
569*d5c09012SAndroid Build Coastguard Worker  // Input only. Initial user to setup during cluster creation. Required.
570*d5c09012SAndroid Build Coastguard Worker  // If used in `RestoreCluster` this is ignored.
571*d5c09012SAndroid Build Coastguard Worker  UserPassword initial_user = 14 [(google.api.field_behavior) = INPUT_ONLY];
572*d5c09012SAndroid Build Coastguard Worker
573*d5c09012SAndroid Build Coastguard Worker  // The automated backup policy for this cluster.
574*d5c09012SAndroid Build Coastguard Worker  //
575*d5c09012SAndroid Build Coastguard Worker  // If no policy is provided then the default policy will be used. If backups
576*d5c09012SAndroid Build Coastguard Worker  // are supported for the cluster, the default policy takes one backup a day,
577*d5c09012SAndroid Build Coastguard Worker  // has a backup window of 1 hour, and retains backups for 14 days.
578*d5c09012SAndroid Build Coastguard Worker  // For more information on the defaults, consult the
579*d5c09012SAndroid Build Coastguard Worker  // documentation for the message type.
580*d5c09012SAndroid Build Coastguard Worker  AutomatedBackupPolicy automated_backup_policy = 17;
581*d5c09012SAndroid Build Coastguard Worker
582*d5c09012SAndroid Build Coastguard Worker  // SSL configuration for this AlloyDB cluster.
583*d5c09012SAndroid Build Coastguard Worker  SslConfig ssl_config = 18 [deprecated = true];
584*d5c09012SAndroid Build Coastguard Worker
585*d5c09012SAndroid Build Coastguard Worker  // Optional. The encryption config can be specified to encrypt the data disks
586*d5c09012SAndroid Build Coastguard Worker  // and other persistent data resources of a cluster with a
587*d5c09012SAndroid Build Coastguard Worker  // customer-managed encryption key (CMEK). When this field is not
588*d5c09012SAndroid Build Coastguard Worker  // specified, the cluster will then use default encryption scheme to
589*d5c09012SAndroid Build Coastguard Worker  // protect the user data.
590*d5c09012SAndroid Build Coastguard Worker  EncryptionConfig encryption_config = 19
591*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
592*d5c09012SAndroid Build Coastguard Worker
593*d5c09012SAndroid Build Coastguard Worker  // Output only. The encryption information for the cluster.
594*d5c09012SAndroid Build Coastguard Worker  EncryptionInfo encryption_info = 20
595*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
596*d5c09012SAndroid Build Coastguard Worker
597*d5c09012SAndroid Build Coastguard Worker  // Optional. Continuous backup configuration for this cluster.
598*d5c09012SAndroid Build Coastguard Worker  ContinuousBackupConfig continuous_backup_config = 27
599*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
600*d5c09012SAndroid Build Coastguard Worker
601*d5c09012SAndroid Build Coastguard Worker  // Output only. Continuous backup properties for this cluster.
602*d5c09012SAndroid Build Coastguard Worker  ContinuousBackupInfo continuous_backup_info = 28
603*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
604*d5c09012SAndroid Build Coastguard Worker
605*d5c09012SAndroid Build Coastguard Worker  // Cross Region replication config specific to SECONDARY cluster.
606*d5c09012SAndroid Build Coastguard Worker  SecondaryConfig secondary_config = 22;
607*d5c09012SAndroid Build Coastguard Worker
608*d5c09012SAndroid Build Coastguard Worker  // Output only. Cross Region replication config specific to PRIMARY cluster.
609*d5c09012SAndroid Build Coastguard Worker  PrimaryConfig primary_config = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
610*d5c09012SAndroid Build Coastguard Worker
611*d5c09012SAndroid Build Coastguard Worker  // Output only. Reserved for future use.
612*d5c09012SAndroid Build Coastguard Worker  bool satisfies_pzs = 30 [(google.api.field_behavior) = OUTPUT_ONLY];
613*d5c09012SAndroid Build Coastguard Worker}
614*d5c09012SAndroid Build Coastguard Worker
615*d5c09012SAndroid Build Coastguard Worker// An Instance is a computing unit that an end customer can connect to.
616*d5c09012SAndroid Build Coastguard Worker// It's the main unit of computing resources in AlloyDB.
617*d5c09012SAndroid Build Coastguard Workermessage Instance {
618*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
619*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/Instance"
620*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/clusters/{cluster}/instances/{instance}"
621*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
622*d5c09012SAndroid Build Coastguard Worker  };
623*d5c09012SAndroid Build Coastguard Worker
624*d5c09012SAndroid Build Coastguard Worker  // MachineConfig describes the configuration of a machine.
625*d5c09012SAndroid Build Coastguard Worker  message MachineConfig {
626*d5c09012SAndroid Build Coastguard Worker    // The number of CPU's in the VM instance.
627*d5c09012SAndroid Build Coastguard Worker    int32 cpu_count = 1;
628*d5c09012SAndroid Build Coastguard Worker  }
629*d5c09012SAndroid Build Coastguard Worker
630*d5c09012SAndroid Build Coastguard Worker  // Details of a single node in the instance.
631*d5c09012SAndroid Build Coastguard Worker  // Nodes in an AlloyDB instance are ephemereal, they can change during
632*d5c09012SAndroid Build Coastguard Worker  // update, failover, autohealing and resize operations.
633*d5c09012SAndroid Build Coastguard Worker  message Node {
634*d5c09012SAndroid Build Coastguard Worker    // The Compute Engine zone of the VM e.g. "us-central1-b".
635*d5c09012SAndroid Build Coastguard Worker    string zone_id = 1;
636*d5c09012SAndroid Build Coastguard Worker
637*d5c09012SAndroid Build Coastguard Worker    // The identifier of the VM e.g. "test-read-0601-407e52be-ms3l".
638*d5c09012SAndroid Build Coastguard Worker    string id = 2;
639*d5c09012SAndroid Build Coastguard Worker
640*d5c09012SAndroid Build Coastguard Worker    // The private IP address of the VM e.g. "10.57.0.34".
641*d5c09012SAndroid Build Coastguard Worker    string ip = 3;
642*d5c09012SAndroid Build Coastguard Worker
643*d5c09012SAndroid Build Coastguard Worker    // Determined by state of the compute VM and postgres-service health.
644*d5c09012SAndroid Build Coastguard Worker    // Compute VM state can have values listed in
645*d5c09012SAndroid Build Coastguard Worker    // https://cloud.google.com/compute/docs/instances/instance-life-cycle and
646*d5c09012SAndroid Build Coastguard Worker    // postgres-service health can have values: HEALTHY and UNHEALTHY.
647*d5c09012SAndroid Build Coastguard Worker    string state = 4;
648*d5c09012SAndroid Build Coastguard Worker  }
649*d5c09012SAndroid Build Coastguard Worker
650*d5c09012SAndroid Build Coastguard Worker  // QueryInsights Instance specific configuration.
651*d5c09012SAndroid Build Coastguard Worker  message QueryInsightsInstanceConfig {
652*d5c09012SAndroid Build Coastguard Worker    // Record application tags for an instance.
653*d5c09012SAndroid Build Coastguard Worker    // This flag is turned "on" by default.
654*d5c09012SAndroid Build Coastguard Worker    optional bool record_application_tags = 2;
655*d5c09012SAndroid Build Coastguard Worker
656*d5c09012SAndroid Build Coastguard Worker    // Record client address for an instance. Client address is PII information.
657*d5c09012SAndroid Build Coastguard Worker    // This flag is turned "on" by default.
658*d5c09012SAndroid Build Coastguard Worker    optional bool record_client_address = 3;
659*d5c09012SAndroid Build Coastguard Worker
660*d5c09012SAndroid Build Coastguard Worker    // Query string length. The default value is 1024.
661*d5c09012SAndroid Build Coastguard Worker    // Any integer between 256 and 4500 is considered valid.
662*d5c09012SAndroid Build Coastguard Worker    uint32 query_string_length = 4;
663*d5c09012SAndroid Build Coastguard Worker
664*d5c09012SAndroid Build Coastguard Worker    // Number of query execution plans captured by Insights per minute
665*d5c09012SAndroid Build Coastguard Worker    // for all queries combined. The default value is 5.
666*d5c09012SAndroid Build Coastguard Worker    // Any integer between 0 and 20 is considered valid.
667*d5c09012SAndroid Build Coastguard Worker    optional uint32 query_plans_per_minute = 5;
668*d5c09012SAndroid Build Coastguard Worker  }
669*d5c09012SAndroid Build Coastguard Worker
670*d5c09012SAndroid Build Coastguard Worker  // Configuration for a read pool instance.
671*d5c09012SAndroid Build Coastguard Worker  message ReadPoolConfig {
672*d5c09012SAndroid Build Coastguard Worker    // Read capacity, i.e. number of nodes in a read pool instance.
673*d5c09012SAndroid Build Coastguard Worker    int32 node_count = 1;
674*d5c09012SAndroid Build Coastguard Worker  }
675*d5c09012SAndroid Build Coastguard Worker
676*d5c09012SAndroid Build Coastguard Worker  // Policy to be used while updating the instance.
677*d5c09012SAndroid Build Coastguard Worker  message UpdatePolicy {
678*d5c09012SAndroid Build Coastguard Worker    // Specifies the available modes of update.
679*d5c09012SAndroid Build Coastguard Worker    enum Mode {
680*d5c09012SAndroid Build Coastguard Worker      // Mode is unknown.
681*d5c09012SAndroid Build Coastguard Worker      MODE_UNSPECIFIED = 0;
682*d5c09012SAndroid Build Coastguard Worker
683*d5c09012SAndroid Build Coastguard Worker      // Least disruptive way to apply the update.
684*d5c09012SAndroid Build Coastguard Worker      DEFAULT = 1;
685*d5c09012SAndroid Build Coastguard Worker
686*d5c09012SAndroid Build Coastguard Worker      // Performs a forced update when applicable. This will be fast but may
687*d5c09012SAndroid Build Coastguard Worker      // incur a downtime.
688*d5c09012SAndroid Build Coastguard Worker      FORCE_APPLY = 2;
689*d5c09012SAndroid Build Coastguard Worker    }
690*d5c09012SAndroid Build Coastguard Worker
691*d5c09012SAndroid Build Coastguard Worker    // Mode for updating the instance.
692*d5c09012SAndroid Build Coastguard Worker    Mode mode = 1;
693*d5c09012SAndroid Build Coastguard Worker  }
694*d5c09012SAndroid Build Coastguard Worker
695*d5c09012SAndroid Build Coastguard Worker  // Client connection configuration
696*d5c09012SAndroid Build Coastguard Worker  message ClientConnectionConfig {
697*d5c09012SAndroid Build Coastguard Worker    // Optional. Configuration to enforce connectors only (ex: AuthProxy)
698*d5c09012SAndroid Build Coastguard Worker    // connections to the database.
699*d5c09012SAndroid Build Coastguard Worker    bool require_connectors = 1 [(google.api.field_behavior) = OPTIONAL];
700*d5c09012SAndroid Build Coastguard Worker
701*d5c09012SAndroid Build Coastguard Worker    // Optional. SSL config option for this instance.
702*d5c09012SAndroid Build Coastguard Worker    SslConfig ssl_config = 2 [(google.api.field_behavior) = OPTIONAL];
703*d5c09012SAndroid Build Coastguard Worker  }
704*d5c09012SAndroid Build Coastguard Worker
705*d5c09012SAndroid Build Coastguard Worker  // Configuration for setting up a PSC interface. This information needs to be
706*d5c09012SAndroid Build Coastguard Worker  // provided by the customer.
707*d5c09012SAndroid Build Coastguard Worker  // PSC interfaces will be created and added to VMs via SLM (adding a network
708*d5c09012SAndroid Build Coastguard Worker  // interface will require recreating the VM). For HA instances this will be
709*d5c09012SAndroid Build Coastguard Worker  // done via LDTM.
710*d5c09012SAndroid Build Coastguard Worker  message PscInterfaceConfig {
711*d5c09012SAndroid Build Coastguard Worker    // A list of endpoints in the consumer VPC the interface might initiate
712*d5c09012SAndroid Build Coastguard Worker    // outbound connections to. This list has to be provided when the PSC
713*d5c09012SAndroid Build Coastguard Worker    // interface is created.
714*d5c09012SAndroid Build Coastguard Worker    repeated string consumer_endpoint_ips = 1;
715*d5c09012SAndroid Build Coastguard Worker
716*d5c09012SAndroid Build Coastguard Worker    // The NetworkAttachment resource created in the consumer VPC to which the
717*d5c09012SAndroid Build Coastguard Worker    // PSC interface will be linked, in the form of:
718*d5c09012SAndroid Build Coastguard Worker    // `projects/${CONSUMER_PROJECT}/regions/${REGION}/networkAttachments/${NETWORK_ATTACHMENT_NAME}`.
719*d5c09012SAndroid Build Coastguard Worker    // NetworkAttachment has to be provided when the PSC interface is created.
720*d5c09012SAndroid Build Coastguard Worker    string network_attachment = 2;
721*d5c09012SAndroid Build Coastguard Worker  }
722*d5c09012SAndroid Build Coastguard Worker
723*d5c09012SAndroid Build Coastguard Worker  // PscInstanceConfig contains PSC related configuration at an
724*d5c09012SAndroid Build Coastguard Worker  // instance level.
725*d5c09012SAndroid Build Coastguard Worker  message PscInstanceConfig {
726*d5c09012SAndroid Build Coastguard Worker    // Output only. The service attachment created when Private
727*d5c09012SAndroid Build Coastguard Worker    // Service Connect (PSC) is enabled for the instance.
728*d5c09012SAndroid Build Coastguard Worker    // The name of the resource will be in the format of
729*d5c09012SAndroid Build Coastguard Worker    // `projects/<alloydb-tenant-project-number>/regions/<region-name>/serviceAttachments/<service-attachment-name>`
730*d5c09012SAndroid Build Coastguard Worker    string service_attachment_link = 1
731*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OUTPUT_ONLY];
732*d5c09012SAndroid Build Coastguard Worker
733*d5c09012SAndroid Build Coastguard Worker    // Optional. List of consumer projects that are allowed to create
734*d5c09012SAndroid Build Coastguard Worker    // PSC endpoints to service-attachments to this instance.
735*d5c09012SAndroid Build Coastguard Worker    repeated string allowed_consumer_projects = 2
736*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OPTIONAL];
737*d5c09012SAndroid Build Coastguard Worker
738*d5c09012SAndroid Build Coastguard Worker    // Optional. List of consumer networks that are allowed to create
739*d5c09012SAndroid Build Coastguard Worker    // PSC endpoints to service-attachments to this instance.
740*d5c09012SAndroid Build Coastguard Worker    repeated string allowed_consumer_networks = 3
741*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OPTIONAL];
742*d5c09012SAndroid Build Coastguard Worker
743*d5c09012SAndroid Build Coastguard Worker    // Optional. Configurations for setting up PSC interfaces attached to the
744*d5c09012SAndroid Build Coastguard Worker    // instance which are used for outbound connectivity. Only primary instances
745*d5c09012SAndroid Build Coastguard Worker    // can have PSC interface attached. All the VMs created for the primary
746*d5c09012SAndroid Build Coastguard Worker    // instance will share the same configurations. Currently we only support 0
747*d5c09012SAndroid Build Coastguard Worker    // or 1 PSC interface.
748*d5c09012SAndroid Build Coastguard Worker    repeated PscInterfaceConfig psc_interface_configs = 4
749*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OPTIONAL];
750*d5c09012SAndroid Build Coastguard Worker
751*d5c09012SAndroid Build Coastguard Worker    // Optional. List of service attachments that this instance has created
752*d5c09012SAndroid Build Coastguard Worker    // endpoints to connect with. Currently, only a single outgoing service
753*d5c09012SAndroid Build Coastguard Worker    // attachment is supported per instance.
754*d5c09012SAndroid Build Coastguard Worker    repeated string outgoing_service_attachment_links = 5
755*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OPTIONAL];
756*d5c09012SAndroid Build Coastguard Worker
757*d5c09012SAndroid Build Coastguard Worker    // Optional. Whether PSC connectivity is enabled for this instance.
758*d5c09012SAndroid Build Coastguard Worker    // This is populated by referencing the value from the parent cluster.
759*d5c09012SAndroid Build Coastguard Worker    bool psc_enabled = 6 [(google.api.field_behavior) = OPTIONAL];
760*d5c09012SAndroid Build Coastguard Worker  }
761*d5c09012SAndroid Build Coastguard Worker
762*d5c09012SAndroid Build Coastguard Worker  // Metadata related to instance level network configuration.
763*d5c09012SAndroid Build Coastguard Worker  message InstanceNetworkConfig {
764*d5c09012SAndroid Build Coastguard Worker    // AuthorizedNetwork contains metadata for an authorized network.
765*d5c09012SAndroid Build Coastguard Worker    message AuthorizedNetwork {
766*d5c09012SAndroid Build Coastguard Worker      // CIDR range for one authorzied network of the instance.
767*d5c09012SAndroid Build Coastguard Worker      string cidr_range = 1 [(google.api.field_info).format = IPV4];
768*d5c09012SAndroid Build Coastguard Worker    }
769*d5c09012SAndroid Build Coastguard Worker
770*d5c09012SAndroid Build Coastguard Worker    // Optional. A list of external network authorized to access this instance.
771*d5c09012SAndroid Build Coastguard Worker    repeated AuthorizedNetwork authorized_external_networks = 1
772*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OPTIONAL];
773*d5c09012SAndroid Build Coastguard Worker
774*d5c09012SAndroid Build Coastguard Worker    // Optional. Enabling public ip for the instance.
775*d5c09012SAndroid Build Coastguard Worker    bool enable_public_ip = 2 [(google.api.field_behavior) = OPTIONAL];
776*d5c09012SAndroid Build Coastguard Worker  }
777*d5c09012SAndroid Build Coastguard Worker
778*d5c09012SAndroid Build Coastguard Worker  // Instance State
779*d5c09012SAndroid Build Coastguard Worker  enum State {
780*d5c09012SAndroid Build Coastguard Worker    // The state of the instance is unknown.
781*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
782*d5c09012SAndroid Build Coastguard Worker
783*d5c09012SAndroid Build Coastguard Worker    // The instance is active and running.
784*d5c09012SAndroid Build Coastguard Worker    READY = 1;
785*d5c09012SAndroid Build Coastguard Worker
786*d5c09012SAndroid Build Coastguard Worker    // The instance is stopped. Instance name and IP resources are preserved.
787*d5c09012SAndroid Build Coastguard Worker    STOPPED = 2;
788*d5c09012SAndroid Build Coastguard Worker
789*d5c09012SAndroid Build Coastguard Worker    // The instance is being created.
790*d5c09012SAndroid Build Coastguard Worker    CREATING = 3;
791*d5c09012SAndroid Build Coastguard Worker
792*d5c09012SAndroid Build Coastguard Worker    // The instance is being deleted.
793*d5c09012SAndroid Build Coastguard Worker    DELETING = 4;
794*d5c09012SAndroid Build Coastguard Worker
795*d5c09012SAndroid Build Coastguard Worker    // The instance is down for maintenance.
796*d5c09012SAndroid Build Coastguard Worker    MAINTENANCE = 5;
797*d5c09012SAndroid Build Coastguard Worker
798*d5c09012SAndroid Build Coastguard Worker    // The creation of the instance failed or a fatal error occurred during
799*d5c09012SAndroid Build Coastguard Worker    // an operation on the instance.
800*d5c09012SAndroid Build Coastguard Worker    // Note: Instances in this state would tried to be auto-repaired. And
801*d5c09012SAndroid Build Coastguard Worker    // Customers should be able to restart, update or delete these instances.
802*d5c09012SAndroid Build Coastguard Worker    FAILED = 6;
803*d5c09012SAndroid Build Coastguard Worker
804*d5c09012SAndroid Build Coastguard Worker    // Index 7 is used in the producer apis for ROLLED_BACK state. Keeping that
805*d5c09012SAndroid Build Coastguard Worker    // index unused in case that state also needs to exposed via consumer apis
806*d5c09012SAndroid Build Coastguard Worker    // in future.
807*d5c09012SAndroid Build Coastguard Worker    // The instance has been configured to sync data from some other source.
808*d5c09012SAndroid Build Coastguard Worker    BOOTSTRAPPING = 8;
809*d5c09012SAndroid Build Coastguard Worker
810*d5c09012SAndroid Build Coastguard Worker    // The instance is being promoted.
811*d5c09012SAndroid Build Coastguard Worker    PROMOTING = 9;
812*d5c09012SAndroid Build Coastguard Worker  }
813*d5c09012SAndroid Build Coastguard Worker
814*d5c09012SAndroid Build Coastguard Worker  // Type of an Instance
815*d5c09012SAndroid Build Coastguard Worker  enum InstanceType {
816*d5c09012SAndroid Build Coastguard Worker    // The type of the instance is unknown.
817*d5c09012SAndroid Build Coastguard Worker    INSTANCE_TYPE_UNSPECIFIED = 0;
818*d5c09012SAndroid Build Coastguard Worker
819*d5c09012SAndroid Build Coastguard Worker    // PRIMARY instances support read and write operations.
820*d5c09012SAndroid Build Coastguard Worker    PRIMARY = 1;
821*d5c09012SAndroid Build Coastguard Worker
822*d5c09012SAndroid Build Coastguard Worker    // READ POOL instances support read operations only. Each read pool instance
823*d5c09012SAndroid Build Coastguard Worker    // consists of one or more homogeneous nodes.
824*d5c09012SAndroid Build Coastguard Worker    //  * Read pool of size 1 can only have zonal availability.
825*d5c09012SAndroid Build Coastguard Worker    //  * Read pools with node count of 2 or more can have regional
826*d5c09012SAndroid Build Coastguard Worker    //    availability (nodes are present in 2 or more zones in a region).
827*d5c09012SAndroid Build Coastguard Worker    READ_POOL = 2;
828*d5c09012SAndroid Build Coastguard Worker
829*d5c09012SAndroid Build Coastguard Worker    // SECONDARY instances support read operations only. SECONDARY instance
830*d5c09012SAndroid Build Coastguard Worker    // is a cross-region read replica
831*d5c09012SAndroid Build Coastguard Worker    SECONDARY = 3;
832*d5c09012SAndroid Build Coastguard Worker  }
833*d5c09012SAndroid Build Coastguard Worker
834*d5c09012SAndroid Build Coastguard Worker  // The Availability type of an instance. Potential values:
835*d5c09012SAndroid Build Coastguard Worker  //
836*d5c09012SAndroid Build Coastguard Worker  // - ZONAL: The instance serves data from only one zone. Outages in that
837*d5c09012SAndroid Build Coastguard Worker  //     zone affect instance availability.
838*d5c09012SAndroid Build Coastguard Worker  // - REGIONAL: The instance can serve data from more than one zone in a
839*d5c09012SAndroid Build Coastguard Worker  //     region (it is highly available).
840*d5c09012SAndroid Build Coastguard Worker  enum AvailabilityType {
841*d5c09012SAndroid Build Coastguard Worker    // This is an unknown Availability type.
842*d5c09012SAndroid Build Coastguard Worker    AVAILABILITY_TYPE_UNSPECIFIED = 0;
843*d5c09012SAndroid Build Coastguard Worker
844*d5c09012SAndroid Build Coastguard Worker    // Zonal available instance.
845*d5c09012SAndroid Build Coastguard Worker    ZONAL = 1;
846*d5c09012SAndroid Build Coastguard Worker
847*d5c09012SAndroid Build Coastguard Worker    // Regional (or Highly) available instance.
848*d5c09012SAndroid Build Coastguard Worker    REGIONAL = 2;
849*d5c09012SAndroid Build Coastguard Worker  }
850*d5c09012SAndroid Build Coastguard Worker
851*d5c09012SAndroid Build Coastguard Worker  // Output only. The name of the instance resource with the format:
852*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id}
853*d5c09012SAndroid Build Coastguard Worker  // where the cluster and instance ID segments should satisfy the regex
854*d5c09012SAndroid Build Coastguard Worker  // expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of
855*d5c09012SAndroid Build Coastguard Worker  // lowercase letters, numbers, and dashes, starting with a letter, and ending
856*d5c09012SAndroid Build Coastguard Worker  // with a letter or number. For more details see https://google.aip.dev/122.
857*d5c09012SAndroid Build Coastguard Worker  // The prefix of the instance resource name is the name of the parent
858*d5c09012SAndroid Build Coastguard Worker  // resource:
859*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}/clusters/{cluster_id}
860*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
861*d5c09012SAndroid Build Coastguard Worker
862*d5c09012SAndroid Build Coastguard Worker  // User-settable and human-readable display name for the Instance.
863*d5c09012SAndroid Build Coastguard Worker  string display_name = 2;
864*d5c09012SAndroid Build Coastguard Worker
865*d5c09012SAndroid Build Coastguard Worker  // Output only. The system-generated UID of the resource. The UID is assigned
866*d5c09012SAndroid Build Coastguard Worker  // when the resource is created, and it is retained until it is deleted.
867*d5c09012SAndroid Build Coastguard Worker  string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
868*d5c09012SAndroid Build Coastguard Worker
869*d5c09012SAndroid Build Coastguard Worker  // Output only. Create time stamp
870*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 4
871*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
872*d5c09012SAndroid Build Coastguard Worker
873*d5c09012SAndroid Build Coastguard Worker  // Output only. Update time stamp
874*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 5
875*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
876*d5c09012SAndroid Build Coastguard Worker
877*d5c09012SAndroid Build Coastguard Worker  // Output only. Delete time stamp
878*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 6
879*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
880*d5c09012SAndroid Build Coastguard Worker
881*d5c09012SAndroid Build Coastguard Worker  // Labels as key value pairs
882*d5c09012SAndroid Build Coastguard Worker  map<string, string> labels = 7;
883*d5c09012SAndroid Build Coastguard Worker
884*d5c09012SAndroid Build Coastguard Worker  // Output only. The current serving state of the instance.
885*d5c09012SAndroid Build Coastguard Worker  State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
886*d5c09012SAndroid Build Coastguard Worker
887*d5c09012SAndroid Build Coastguard Worker  // Required. The type of the instance. Specified at creation time.
888*d5c09012SAndroid Build Coastguard Worker  InstanceType instance_type = 9 [(google.api.field_behavior) = REQUIRED];
889*d5c09012SAndroid Build Coastguard Worker
890*d5c09012SAndroid Build Coastguard Worker  // Configurations for the machines that host the underlying
891*d5c09012SAndroid Build Coastguard Worker  // database engine.
892*d5c09012SAndroid Build Coastguard Worker  MachineConfig machine_config = 10;
893*d5c09012SAndroid Build Coastguard Worker
894*d5c09012SAndroid Build Coastguard Worker  // Availability type of an Instance.
895*d5c09012SAndroid Build Coastguard Worker  // If empty, defaults to REGIONAL for primary instances.
896*d5c09012SAndroid Build Coastguard Worker  // For read pools, availability_type is always UNSPECIFIED. Instances in the
897*d5c09012SAndroid Build Coastguard Worker  // read pools are evenly distributed across available zones within the region
898*d5c09012SAndroid Build Coastguard Worker  // (i.e. read pools with more than one node will have a node in at
899*d5c09012SAndroid Build Coastguard Worker  // least two zones).
900*d5c09012SAndroid Build Coastguard Worker  AvailabilityType availability_type = 11;
901*d5c09012SAndroid Build Coastguard Worker
902*d5c09012SAndroid Build Coastguard Worker  // The Compute Engine zone that the instance should serve from, per
903*d5c09012SAndroid Build Coastguard Worker  // https://cloud.google.com/compute/docs/regions-zones
904*d5c09012SAndroid Build Coastguard Worker  // This can ONLY be specified for ZONAL instances.
905*d5c09012SAndroid Build Coastguard Worker  // If present for a REGIONAL instance, an error will be thrown.
906*d5c09012SAndroid Build Coastguard Worker  // If this is absent for a ZONAL instance, instance is created in a random
907*d5c09012SAndroid Build Coastguard Worker  // zone with available capacity.
908*d5c09012SAndroid Build Coastguard Worker  string gce_zone = 12;
909*d5c09012SAndroid Build Coastguard Worker
910*d5c09012SAndroid Build Coastguard Worker  // Database flags. Set at instance level.
911*d5c09012SAndroid Build Coastguard Worker  //  * They are copied from primary instance on read instance creation.
912*d5c09012SAndroid Build Coastguard Worker  //  * Read instances can set new or override existing flags that are relevant
913*d5c09012SAndroid Build Coastguard Worker  //    for reads, e.g. for enabling columnar cache on a read instance. Flags
914*d5c09012SAndroid Build Coastguard Worker  //    set on read instance may or may not be present on primary.
915*d5c09012SAndroid Build Coastguard Worker  //
916*d5c09012SAndroid Build Coastguard Worker  //
917*d5c09012SAndroid Build Coastguard Worker  // This is a list of "key": "value" pairs.
918*d5c09012SAndroid Build Coastguard Worker  // "key": The name of the flag. These flags are passed at instance setup time,
919*d5c09012SAndroid Build Coastguard Worker  // so include both server options and system variables for Postgres. Flags are
920*d5c09012SAndroid Build Coastguard Worker  // specified with underscores, not hyphens.
921*d5c09012SAndroid Build Coastguard Worker  // "value": The value of the flag. Booleans are set to **on** for true
922*d5c09012SAndroid Build Coastguard Worker  // and **off** for false. This field must be omitted if the flag
923*d5c09012SAndroid Build Coastguard Worker  // doesn't take a value.
924*d5c09012SAndroid Build Coastguard Worker  map<string, string> database_flags = 13;
925*d5c09012SAndroid Build Coastguard Worker
926*d5c09012SAndroid Build Coastguard Worker  // Output only. This is set for the read-write VM of the PRIMARY instance
927*d5c09012SAndroid Build Coastguard Worker  // only.
928*d5c09012SAndroid Build Coastguard Worker  Node writable_node = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
929*d5c09012SAndroid Build Coastguard Worker
930*d5c09012SAndroid Build Coastguard Worker  // Output only. List of available read-only VMs in this instance, including
931*d5c09012SAndroid Build Coastguard Worker  // the standby for a PRIMARY instance.
932*d5c09012SAndroid Build Coastguard Worker  repeated Node nodes = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
933*d5c09012SAndroid Build Coastguard Worker
934*d5c09012SAndroid Build Coastguard Worker  // Configuration for query insights.
935*d5c09012SAndroid Build Coastguard Worker  QueryInsightsInstanceConfig query_insights_config = 21;
936*d5c09012SAndroid Build Coastguard Worker
937*d5c09012SAndroid Build Coastguard Worker  // Read pool instance configuration.
938*d5c09012SAndroid Build Coastguard Worker  // This is required if the value of instanceType is READ_POOL.
939*d5c09012SAndroid Build Coastguard Worker  ReadPoolConfig read_pool_config = 14;
940*d5c09012SAndroid Build Coastguard Worker
941*d5c09012SAndroid Build Coastguard Worker  // Output only. The IP address for the Instance.
942*d5c09012SAndroid Build Coastguard Worker  // This is the connection endpoint for an end-user application.
943*d5c09012SAndroid Build Coastguard Worker  string ip_address = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
944*d5c09012SAndroid Build Coastguard Worker
945*d5c09012SAndroid Build Coastguard Worker  // Output only. The public IP addresses for the Instance. This is available
946*d5c09012SAndroid Build Coastguard Worker  // ONLY when enable_public_ip is set. This is the connection endpoint for an
947*d5c09012SAndroid Build Coastguard Worker  // end-user application.
948*d5c09012SAndroid Build Coastguard Worker  string public_ip_address = 27 [(google.api.field_behavior) = OUTPUT_ONLY];
949*d5c09012SAndroid Build Coastguard Worker
950*d5c09012SAndroid Build Coastguard Worker  // Output only. Reconciling (https://google.aip.dev/128#reconciliation).
951*d5c09012SAndroid Build Coastguard Worker  // Set to true if the current state of Instance does not match the user's
952*d5c09012SAndroid Build Coastguard Worker  // intended state, and the service is actively updating the resource to
953*d5c09012SAndroid Build Coastguard Worker  // reconcile them. This can happen due to user-triggered updates or
954*d5c09012SAndroid Build Coastguard Worker  // system actions like failover or maintenance.
955*d5c09012SAndroid Build Coastguard Worker  bool reconciling = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
956*d5c09012SAndroid Build Coastguard Worker
957*d5c09012SAndroid Build Coastguard Worker  // For Resource freshness validation (https://google.aip.dev/154)
958*d5c09012SAndroid Build Coastguard Worker  string etag = 17;
959*d5c09012SAndroid Build Coastguard Worker
960*d5c09012SAndroid Build Coastguard Worker  // Annotations to allow client tools to store small amount of arbitrary data.
961*d5c09012SAndroid Build Coastguard Worker  // This is distinct from labels.
962*d5c09012SAndroid Build Coastguard Worker  // https://google.aip.dev/128
963*d5c09012SAndroid Build Coastguard Worker  map<string, string> annotations = 18;
964*d5c09012SAndroid Build Coastguard Worker
965*d5c09012SAndroid Build Coastguard Worker  // Update policy that will be applied during instance update.
966*d5c09012SAndroid Build Coastguard Worker  // This field is not persisted when you update the instance.
967*d5c09012SAndroid Build Coastguard Worker  // To use a non-default update policy, you must
968*d5c09012SAndroid Build Coastguard Worker  // specify explicitly specify the value in each update request.
969*d5c09012SAndroid Build Coastguard Worker  UpdatePolicy update_policy = 22;
970*d5c09012SAndroid Build Coastguard Worker
971*d5c09012SAndroid Build Coastguard Worker  // Optional. Client connection specific configurations
972*d5c09012SAndroid Build Coastguard Worker  ClientConnectionConfig client_connection_config = 23
973*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
974*d5c09012SAndroid Build Coastguard Worker
975*d5c09012SAndroid Build Coastguard Worker  // Output only. Reserved for future use.
976*d5c09012SAndroid Build Coastguard Worker  bool satisfies_pzs = 24 [(google.api.field_behavior) = OUTPUT_ONLY];
977*d5c09012SAndroid Build Coastguard Worker
978*d5c09012SAndroid Build Coastguard Worker  // Optional. The configuration for Private Service Connect (PSC) for the
979*d5c09012SAndroid Build Coastguard Worker  // instance.
980*d5c09012SAndroid Build Coastguard Worker  PscInstanceConfig psc_instance_config = 28
981*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
982*d5c09012SAndroid Build Coastguard Worker
983*d5c09012SAndroid Build Coastguard Worker  // Optional. Instance level network configuration.
984*d5c09012SAndroid Build Coastguard Worker  InstanceNetworkConfig network_config = 29
985*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
986*d5c09012SAndroid Build Coastguard Worker}
987*d5c09012SAndroid Build Coastguard Worker
988*d5c09012SAndroid Build Coastguard Worker// ConnectionInfo singleton resource.
989*d5c09012SAndroid Build Coastguard Worker// https://google.aip.dev/156
990*d5c09012SAndroid Build Coastguard Workermessage ConnectionInfo {
991*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
992*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/ConnectionInfo"
993*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/clusters/{cluster}/instances/{instance}/connectionInfo"
994*d5c09012SAndroid Build Coastguard Worker  };
995*d5c09012SAndroid Build Coastguard Worker
996*d5c09012SAndroid Build Coastguard Worker  // The name of the ConnectionInfo singleton resource, e.g.:
997*d5c09012SAndroid Build Coastguard Worker  // projects/{project}/locations/{location}/clusters/*/instances/*/connectionInfo
998*d5c09012SAndroid Build Coastguard Worker  // This field currently has no semantic meaning.
999*d5c09012SAndroid Build Coastguard Worker  string name = 1;
1000*d5c09012SAndroid Build Coastguard Worker
1001*d5c09012SAndroid Build Coastguard Worker  // Output only. The private network IP address for the Instance. This is the
1002*d5c09012SAndroid Build Coastguard Worker  // default IP for the instance and is always created (even if enable_public_ip
1003*d5c09012SAndroid Build Coastguard Worker  // is set). This is the connection endpoint for an end-user application.
1004*d5c09012SAndroid Build Coastguard Worker  string ip_address = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1005*d5c09012SAndroid Build Coastguard Worker
1006*d5c09012SAndroid Build Coastguard Worker  // Output only. The public IP addresses for the Instance. This is available
1007*d5c09012SAndroid Build Coastguard Worker  // ONLY when enable_public_ip is set. This is the connection endpoint for an
1008*d5c09012SAndroid Build Coastguard Worker  // end-user application.
1009*d5c09012SAndroid Build Coastguard Worker  string public_ip_address = 5 [
1010*d5c09012SAndroid Build Coastguard Worker    (google.api.field_info).format = IPV4,
1011*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = OUTPUT_ONLY
1012*d5c09012SAndroid Build Coastguard Worker  ];
1013*d5c09012SAndroid Build Coastguard Worker
1014*d5c09012SAndroid Build Coastguard Worker  // Output only. The pem-encoded chain that may be used to verify the X.509
1015*d5c09012SAndroid Build Coastguard Worker  // certificate. Expected to be in issuer-to-root order according to RFC 5246.
1016*d5c09012SAndroid Build Coastguard Worker  repeated string pem_certificate_chain = 3
1017*d5c09012SAndroid Build Coastguard Worker      [deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
1018*d5c09012SAndroid Build Coastguard Worker
1019*d5c09012SAndroid Build Coastguard Worker  // Output only. The unique ID of the Instance.
1020*d5c09012SAndroid Build Coastguard Worker  string instance_uid = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1021*d5c09012SAndroid Build Coastguard Worker
1022*d5c09012SAndroid Build Coastguard Worker  // Output only. The DNS name to use with PSC for the Instance.
1023*d5c09012SAndroid Build Coastguard Worker  string psc_dns_name = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1024*d5c09012SAndroid Build Coastguard Worker}
1025*d5c09012SAndroid Build Coastguard Worker
1026*d5c09012SAndroid Build Coastguard Worker// Message describing Backup object
1027*d5c09012SAndroid Build Coastguard Workermessage Backup {
1028*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
1029*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/Backup"
1030*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/backups/{backup}"
1031*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
1032*d5c09012SAndroid Build Coastguard Worker  };
1033*d5c09012SAndroid Build Coastguard Worker
1034*d5c09012SAndroid Build Coastguard Worker  // A backup's position in a quantity-based retention queue, of backups with
1035*d5c09012SAndroid Build Coastguard Worker  // the same source cluster and type, with length, retention, specified by the
1036*d5c09012SAndroid Build Coastguard Worker  // backup's retention policy.
1037*d5c09012SAndroid Build Coastguard Worker  // Once the position is greater than the retention, the backup is eligible to
1038*d5c09012SAndroid Build Coastguard Worker  // be garbage collected.
1039*d5c09012SAndroid Build Coastguard Worker  //
1040*d5c09012SAndroid Build Coastguard Worker  // Example: 5 backups from the same source cluster and type with a
1041*d5c09012SAndroid Build Coastguard Worker  // quantity-based retention of 3 and denoted by backup_id (position,
1042*d5c09012SAndroid Build Coastguard Worker  // retention).
1043*d5c09012SAndroid Build Coastguard Worker  //
1044*d5c09012SAndroid Build Coastguard Worker  // Safe: backup_5 (1, 3), backup_4, (2, 3), backup_3 (3, 3).
1045*d5c09012SAndroid Build Coastguard Worker  // Awaiting garbage collection: backup_2 (4, 3), backup_1 (5, 3)
1046*d5c09012SAndroid Build Coastguard Worker  message QuantityBasedExpiry {
1047*d5c09012SAndroid Build Coastguard Worker    // Output only. The backup's position among its backups with the same source
1048*d5c09012SAndroid Build Coastguard Worker    // cluster and type, by descending chronological order create time(i.e.
1049*d5c09012SAndroid Build Coastguard Worker    // newest first).
1050*d5c09012SAndroid Build Coastguard Worker    int32 retention_count = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1051*d5c09012SAndroid Build Coastguard Worker
1052*d5c09012SAndroid Build Coastguard Worker    // Output only. The length of the quantity-based queue, specified by the
1053*d5c09012SAndroid Build Coastguard Worker    // backup's retention policy.
1054*d5c09012SAndroid Build Coastguard Worker    int32 total_retention_count = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1055*d5c09012SAndroid Build Coastguard Worker  }
1056*d5c09012SAndroid Build Coastguard Worker
1057*d5c09012SAndroid Build Coastguard Worker  // Backup State
1058*d5c09012SAndroid Build Coastguard Worker  enum State {
1059*d5c09012SAndroid Build Coastguard Worker    // The state of the backup is unknown.
1060*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
1061*d5c09012SAndroid Build Coastguard Worker
1062*d5c09012SAndroid Build Coastguard Worker    // The backup is ready.
1063*d5c09012SAndroid Build Coastguard Worker    READY = 1;
1064*d5c09012SAndroid Build Coastguard Worker
1065*d5c09012SAndroid Build Coastguard Worker    // The backup is creating.
1066*d5c09012SAndroid Build Coastguard Worker    CREATING = 2;
1067*d5c09012SAndroid Build Coastguard Worker
1068*d5c09012SAndroid Build Coastguard Worker    // The backup failed.
1069*d5c09012SAndroid Build Coastguard Worker    FAILED = 3;
1070*d5c09012SAndroid Build Coastguard Worker
1071*d5c09012SAndroid Build Coastguard Worker    // The backup is being deleted.
1072*d5c09012SAndroid Build Coastguard Worker    DELETING = 4;
1073*d5c09012SAndroid Build Coastguard Worker  }
1074*d5c09012SAndroid Build Coastguard Worker
1075*d5c09012SAndroid Build Coastguard Worker  // Backup Type
1076*d5c09012SAndroid Build Coastguard Worker  enum Type {
1077*d5c09012SAndroid Build Coastguard Worker    // Backup Type is unknown.
1078*d5c09012SAndroid Build Coastguard Worker    TYPE_UNSPECIFIED = 0;
1079*d5c09012SAndroid Build Coastguard Worker
1080*d5c09012SAndroid Build Coastguard Worker    // ON_DEMAND backups that were triggered by the customer (e.g., not
1081*d5c09012SAndroid Build Coastguard Worker    // AUTOMATED).
1082*d5c09012SAndroid Build Coastguard Worker    ON_DEMAND = 1;
1083*d5c09012SAndroid Build Coastguard Worker
1084*d5c09012SAndroid Build Coastguard Worker    // AUTOMATED backups triggered by the automated backups scheduler pursuant
1085*d5c09012SAndroid Build Coastguard Worker    // to an automated backup policy.
1086*d5c09012SAndroid Build Coastguard Worker    AUTOMATED = 2;
1087*d5c09012SAndroid Build Coastguard Worker
1088*d5c09012SAndroid Build Coastguard Worker    // CONTINUOUS backups triggered by the automated backups scheduler
1089*d5c09012SAndroid Build Coastguard Worker    // due to a continuous backup policy.
1090*d5c09012SAndroid Build Coastguard Worker    CONTINUOUS = 3;
1091*d5c09012SAndroid Build Coastguard Worker  }
1092*d5c09012SAndroid Build Coastguard Worker
1093*d5c09012SAndroid Build Coastguard Worker  // Output only. The name of the backup resource with the format:
1094*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}/backups/{backup_id}
1095*d5c09012SAndroid Build Coastguard Worker  // where the cluster and backup ID segments should satisfy the regex
1096*d5c09012SAndroid Build Coastguard Worker  // expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of
1097*d5c09012SAndroid Build Coastguard Worker  // lowercase letters, numbers, and dashes, starting with a letter, and ending
1098*d5c09012SAndroid Build Coastguard Worker  // with a letter or number. For more details see https://google.aip.dev/122.
1099*d5c09012SAndroid Build Coastguard Worker  // The prefix of the backup resource name is the name of the parent
1100*d5c09012SAndroid Build Coastguard Worker  // resource:
1101*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{region}
1102*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1103*d5c09012SAndroid Build Coastguard Worker
1104*d5c09012SAndroid Build Coastguard Worker  // User-settable and human-readable display name for the Backup.
1105*d5c09012SAndroid Build Coastguard Worker  string display_name = 2;
1106*d5c09012SAndroid Build Coastguard Worker
1107*d5c09012SAndroid Build Coastguard Worker  // Output only. The system-generated UID of the resource. The UID is assigned
1108*d5c09012SAndroid Build Coastguard Worker  // when the resource is created, and it is retained until it is deleted.
1109*d5c09012SAndroid Build Coastguard Worker  string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1110*d5c09012SAndroid Build Coastguard Worker
1111*d5c09012SAndroid Build Coastguard Worker  // Output only. Create time stamp
1112*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 4
1113*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1114*d5c09012SAndroid Build Coastguard Worker
1115*d5c09012SAndroid Build Coastguard Worker  // Output only. Update time stamp
1116*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 5
1117*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1118*d5c09012SAndroid Build Coastguard Worker
1119*d5c09012SAndroid Build Coastguard Worker  // Output only. Delete time stamp
1120*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 15
1121*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1122*d5c09012SAndroid Build Coastguard Worker
1123*d5c09012SAndroid Build Coastguard Worker  // Labels as key value pairs
1124*d5c09012SAndroid Build Coastguard Worker  map<string, string> labels = 6;
1125*d5c09012SAndroid Build Coastguard Worker
1126*d5c09012SAndroid Build Coastguard Worker  // Output only. The current state of the backup.
1127*d5c09012SAndroid Build Coastguard Worker  State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1128*d5c09012SAndroid Build Coastguard Worker
1129*d5c09012SAndroid Build Coastguard Worker  // The backup type, which suggests the trigger for the backup.
1130*d5c09012SAndroid Build Coastguard Worker  Type type = 8;
1131*d5c09012SAndroid Build Coastguard Worker
1132*d5c09012SAndroid Build Coastguard Worker  // User-provided description of the backup.
1133*d5c09012SAndroid Build Coastguard Worker  string description = 9;
1134*d5c09012SAndroid Build Coastguard Worker
1135*d5c09012SAndroid Build Coastguard Worker  // Output only. The system-generated UID of the cluster which was used to
1136*d5c09012SAndroid Build Coastguard Worker  // create this resource.
1137*d5c09012SAndroid Build Coastguard Worker  string cluster_uid = 18 [(google.api.field_behavior) = OUTPUT_ONLY];
1138*d5c09012SAndroid Build Coastguard Worker
1139*d5c09012SAndroid Build Coastguard Worker  // Required. The full resource name of the backup source cluster
1140*d5c09012SAndroid Build Coastguard Worker  // (e.g., projects/{project}/locations/{region}/clusters/{cluster_id}).
1141*d5c09012SAndroid Build Coastguard Worker  string cluster_name = 10 [
1142*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
1143*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { type: "alloydb.googleapis.com/Cluster" }
1144*d5c09012SAndroid Build Coastguard Worker  ];
1145*d5c09012SAndroid Build Coastguard Worker
1146*d5c09012SAndroid Build Coastguard Worker  // Output only. Reconciling (https://google.aip.dev/128#reconciliation), if
1147*d5c09012SAndroid Build Coastguard Worker  // true, indicates that the service is actively updating the resource. This
1148*d5c09012SAndroid Build Coastguard Worker  // can happen due to user-triggered updates or system actions like failover or
1149*d5c09012SAndroid Build Coastguard Worker  // maintenance.
1150*d5c09012SAndroid Build Coastguard Worker  bool reconciling = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
1151*d5c09012SAndroid Build Coastguard Worker
1152*d5c09012SAndroid Build Coastguard Worker  // Optional. The encryption config can be specified to encrypt the
1153*d5c09012SAndroid Build Coastguard Worker  // backup with a customer-managed encryption key (CMEK). When this field is
1154*d5c09012SAndroid Build Coastguard Worker  // not specified, the backup will then use default encryption scheme to
1155*d5c09012SAndroid Build Coastguard Worker  // protect the user data.
1156*d5c09012SAndroid Build Coastguard Worker  EncryptionConfig encryption_config = 12
1157*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
1158*d5c09012SAndroid Build Coastguard Worker
1159*d5c09012SAndroid Build Coastguard Worker  // Output only. The encryption information for the backup.
1160*d5c09012SAndroid Build Coastguard Worker  EncryptionInfo encryption_info = 13
1161*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1162*d5c09012SAndroid Build Coastguard Worker
1163*d5c09012SAndroid Build Coastguard Worker  // For Resource freshness validation (https://google.aip.dev/154)
1164*d5c09012SAndroid Build Coastguard Worker  string etag = 14;
1165*d5c09012SAndroid Build Coastguard Worker
1166*d5c09012SAndroid Build Coastguard Worker  // Annotations to allow client tools to store small amount of arbitrary data.
1167*d5c09012SAndroid Build Coastguard Worker  // This is distinct from labels.
1168*d5c09012SAndroid Build Coastguard Worker  // https://google.aip.dev/128
1169*d5c09012SAndroid Build Coastguard Worker  map<string, string> annotations = 16;
1170*d5c09012SAndroid Build Coastguard Worker
1171*d5c09012SAndroid Build Coastguard Worker  // Output only. The size of the backup in bytes.
1172*d5c09012SAndroid Build Coastguard Worker  int64 size_bytes = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
1173*d5c09012SAndroid Build Coastguard Worker
1174*d5c09012SAndroid Build Coastguard Worker  // Output only. The time at which after the backup is eligible to be garbage
1175*d5c09012SAndroid Build Coastguard Worker  // collected. It is the duration specified by the backup's retention policy,
1176*d5c09012SAndroid Build Coastguard Worker  // added to the backup's create_time.
1177*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp expiry_time = 19
1178*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1179*d5c09012SAndroid Build Coastguard Worker
1180*d5c09012SAndroid Build Coastguard Worker  // Output only. The QuantityBasedExpiry of the backup, specified by the
1181*d5c09012SAndroid Build Coastguard Worker  // backup's retention policy. Once the expiry quantity is over retention, the
1182*d5c09012SAndroid Build Coastguard Worker  // backup is eligible to be garbage collected.
1183*d5c09012SAndroid Build Coastguard Worker  QuantityBasedExpiry expiry_quantity = 20
1184*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1185*d5c09012SAndroid Build Coastguard Worker
1186*d5c09012SAndroid Build Coastguard Worker  // Output only. Reserved for future use.
1187*d5c09012SAndroid Build Coastguard Worker  bool satisfies_pzs = 21 [(google.api.field_behavior) = OUTPUT_ONLY];
1188*d5c09012SAndroid Build Coastguard Worker
1189*d5c09012SAndroid Build Coastguard Worker  // Output only. The database engine major version of the cluster this backup
1190*d5c09012SAndroid Build Coastguard Worker  // was created from. Any restored cluster created from this backup will have
1191*d5c09012SAndroid Build Coastguard Worker  // the same database version.
1192*d5c09012SAndroid Build Coastguard Worker  DatabaseVersion database_version = 22
1193*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
1194*d5c09012SAndroid Build Coastguard Worker}
1195*d5c09012SAndroid Build Coastguard Worker
1196*d5c09012SAndroid Build Coastguard Worker// SupportedDatabaseFlag gives general information about a database flag,
1197*d5c09012SAndroid Build Coastguard Worker// like type and allowed values. This is a static value that is defined
1198*d5c09012SAndroid Build Coastguard Worker// on the server side, and it cannot be modified by callers.
1199*d5c09012SAndroid Build Coastguard Worker// To set the Database flags on a particular Instance, a caller should modify
1200*d5c09012SAndroid Build Coastguard Worker// the Instance.database_flags field.
1201*d5c09012SAndroid Build Coastguard Workermessage SupportedDatabaseFlag {
1202*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
1203*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/SupportedDatabaseFlag"
1204*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/flags/{flag}"
1205*d5c09012SAndroid Build Coastguard Worker  };
1206*d5c09012SAndroid Build Coastguard Worker
1207*d5c09012SAndroid Build Coastguard Worker  // Restrictions on STRING type values
1208*d5c09012SAndroid Build Coastguard Worker  message StringRestrictions {
1209*d5c09012SAndroid Build Coastguard Worker    // The list of allowed values, if bounded. This field will be empty
1210*d5c09012SAndroid Build Coastguard Worker    // if there is a unbounded number of allowed values.
1211*d5c09012SAndroid Build Coastguard Worker    repeated string allowed_values = 1;
1212*d5c09012SAndroid Build Coastguard Worker  }
1213*d5c09012SAndroid Build Coastguard Worker
1214*d5c09012SAndroid Build Coastguard Worker  // Restrictions on INTEGER type values.
1215*d5c09012SAndroid Build Coastguard Worker  message IntegerRestrictions {
1216*d5c09012SAndroid Build Coastguard Worker    // The minimum value that can be specified, if applicable.
1217*d5c09012SAndroid Build Coastguard Worker    google.protobuf.Int64Value min_value = 1;
1218*d5c09012SAndroid Build Coastguard Worker
1219*d5c09012SAndroid Build Coastguard Worker    // The maximum value that can be specified, if applicable.
1220*d5c09012SAndroid Build Coastguard Worker    google.protobuf.Int64Value max_value = 2;
1221*d5c09012SAndroid Build Coastguard Worker  }
1222*d5c09012SAndroid Build Coastguard Worker
1223*d5c09012SAndroid Build Coastguard Worker  // ValueType describes the semantic type of the value that the flag accepts.
1224*d5c09012SAndroid Build Coastguard Worker  // Regardless of the ValueType, the Instance.database_flags field accepts the
1225*d5c09012SAndroid Build Coastguard Worker  // stringified version of the value, i.e. "20" or "3.14".
1226*d5c09012SAndroid Build Coastguard Worker  enum ValueType {
1227*d5c09012SAndroid Build Coastguard Worker    // This is an unknown flag type.
1228*d5c09012SAndroid Build Coastguard Worker    VALUE_TYPE_UNSPECIFIED = 0;
1229*d5c09012SAndroid Build Coastguard Worker
1230*d5c09012SAndroid Build Coastguard Worker    // String type flag.
1231*d5c09012SAndroid Build Coastguard Worker    STRING = 1;
1232*d5c09012SAndroid Build Coastguard Worker
1233*d5c09012SAndroid Build Coastguard Worker    // Integer type flag.
1234*d5c09012SAndroid Build Coastguard Worker    INTEGER = 2;
1235*d5c09012SAndroid Build Coastguard Worker
1236*d5c09012SAndroid Build Coastguard Worker    // Float type flag.
1237*d5c09012SAndroid Build Coastguard Worker    FLOAT = 3;
1238*d5c09012SAndroid Build Coastguard Worker
1239*d5c09012SAndroid Build Coastguard Worker    // Denotes that the flag does not accept any values.
1240*d5c09012SAndroid Build Coastguard Worker    NONE = 4;
1241*d5c09012SAndroid Build Coastguard Worker  }
1242*d5c09012SAndroid Build Coastguard Worker
1243*d5c09012SAndroid Build Coastguard Worker  // The restrictions on the flag value per type.
1244*d5c09012SAndroid Build Coastguard Worker  oneof restrictions {
1245*d5c09012SAndroid Build Coastguard Worker    // Restriction on STRING type value.
1246*d5c09012SAndroid Build Coastguard Worker    StringRestrictions string_restrictions = 7;
1247*d5c09012SAndroid Build Coastguard Worker
1248*d5c09012SAndroid Build Coastguard Worker    // Restriction on INTEGER type value.
1249*d5c09012SAndroid Build Coastguard Worker    IntegerRestrictions integer_restrictions = 8;
1250*d5c09012SAndroid Build Coastguard Worker  }
1251*d5c09012SAndroid Build Coastguard Worker
1252*d5c09012SAndroid Build Coastguard Worker  // The name of the flag resource, following Google Cloud conventions, e.g.:
1253*d5c09012SAndroid Build Coastguard Worker  //  * projects/{project}/locations/{location}/flags/{flag}
1254*d5c09012SAndroid Build Coastguard Worker  // This field currently has no semantic meaning.
1255*d5c09012SAndroid Build Coastguard Worker  string name = 1;
1256*d5c09012SAndroid Build Coastguard Worker
1257*d5c09012SAndroid Build Coastguard Worker  // The name of the database flag, e.g. "max_allowed_packets".
1258*d5c09012SAndroid Build Coastguard Worker  // The is a possibly key for the Instance.database_flags map field.
1259*d5c09012SAndroid Build Coastguard Worker  string flag_name = 2;
1260*d5c09012SAndroid Build Coastguard Worker
1261*d5c09012SAndroid Build Coastguard Worker  ValueType value_type = 3;
1262*d5c09012SAndroid Build Coastguard Worker
1263*d5c09012SAndroid Build Coastguard Worker  // Whether the database flag accepts multiple values. If true,
1264*d5c09012SAndroid Build Coastguard Worker  // a comma-separated list of stringified values may be specified.
1265*d5c09012SAndroid Build Coastguard Worker  bool accepts_multiple_values = 4;
1266*d5c09012SAndroid Build Coastguard Worker
1267*d5c09012SAndroid Build Coastguard Worker  // Major database engine versions for which this flag is supported.
1268*d5c09012SAndroid Build Coastguard Worker  repeated DatabaseVersion supported_db_versions = 5;
1269*d5c09012SAndroid Build Coastguard Worker
1270*d5c09012SAndroid Build Coastguard Worker  // Whether setting or updating this flag on an Instance requires a database
1271*d5c09012SAndroid Build Coastguard Worker  // restart. If a flag that requires database restart is set, the backend
1272*d5c09012SAndroid Build Coastguard Worker  // will automatically restart the database (making sure to satisfy any
1273*d5c09012SAndroid Build Coastguard Worker  // availability SLO's).
1274*d5c09012SAndroid Build Coastguard Worker  bool requires_db_restart = 6;
1275*d5c09012SAndroid Build Coastguard Worker}
1276*d5c09012SAndroid Build Coastguard Worker
1277*d5c09012SAndroid Build Coastguard Worker// Message describing User object.
1278*d5c09012SAndroid Build Coastguard Workermessage User {
1279*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
1280*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/User"
1281*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/clusters/{cluster}/users/{user}"
1282*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
1283*d5c09012SAndroid Build Coastguard Worker  };
1284*d5c09012SAndroid Build Coastguard Worker
1285*d5c09012SAndroid Build Coastguard Worker  // Enum that details the user type.
1286*d5c09012SAndroid Build Coastguard Worker  enum UserType {
1287*d5c09012SAndroid Build Coastguard Worker    // Unspecified user type.
1288*d5c09012SAndroid Build Coastguard Worker    USER_TYPE_UNSPECIFIED = 0;
1289*d5c09012SAndroid Build Coastguard Worker
1290*d5c09012SAndroid Build Coastguard Worker    // The default user type that authenticates via password-based
1291*d5c09012SAndroid Build Coastguard Worker    // authentication.
1292*d5c09012SAndroid Build Coastguard Worker    ALLOYDB_BUILT_IN = 1;
1293*d5c09012SAndroid Build Coastguard Worker
1294*d5c09012SAndroid Build Coastguard Worker    // Database user that can authenticate via IAM-Based authentication.
1295*d5c09012SAndroid Build Coastguard Worker    ALLOYDB_IAM_USER = 2;
1296*d5c09012SAndroid Build Coastguard Worker  }
1297*d5c09012SAndroid Build Coastguard Worker
1298*d5c09012SAndroid Build Coastguard Worker  // Output only. Name of the resource in the form of
1299*d5c09012SAndroid Build Coastguard Worker  // projects/{project}/locations/{location}/cluster/{cluster}/users/{user}.
1300*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1301*d5c09012SAndroid Build Coastguard Worker
1302*d5c09012SAndroid Build Coastguard Worker  // Input only. Password for the user.
1303*d5c09012SAndroid Build Coastguard Worker  string password = 2 [(google.api.field_behavior) = INPUT_ONLY];
1304*d5c09012SAndroid Build Coastguard Worker
1305*d5c09012SAndroid Build Coastguard Worker  // Optional. List of database roles this user has.
1306*d5c09012SAndroid Build Coastguard Worker  // The database role strings are subject to the PostgreSQL naming conventions.
1307*d5c09012SAndroid Build Coastguard Worker  repeated string database_roles = 4 [(google.api.field_behavior) = OPTIONAL];
1308*d5c09012SAndroid Build Coastguard Worker
1309*d5c09012SAndroid Build Coastguard Worker  // Optional. Type of this user.
1310*d5c09012SAndroid Build Coastguard Worker  UserType user_type = 5 [(google.api.field_behavior) = OPTIONAL];
1311*d5c09012SAndroid Build Coastguard Worker}
1312*d5c09012SAndroid Build Coastguard Worker
1313*d5c09012SAndroid Build Coastguard Worker// Message describing Database object.
1314*d5c09012SAndroid Build Coastguard Workermessage Database {
1315*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
1316*d5c09012SAndroid Build Coastguard Worker    type: "alloydb.googleapis.com/Database"
1317*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/clusters/{cluster}/databases/{database}"
1318*d5c09012SAndroid Build Coastguard Worker    plural: "databases"
1319*d5c09012SAndroid Build Coastguard Worker    singular: "database"
1320*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
1321*d5c09012SAndroid Build Coastguard Worker  };
1322*d5c09012SAndroid Build Coastguard Worker
1323*d5c09012SAndroid Build Coastguard Worker  // Identifier. Name of the resource in the form of
1324*d5c09012SAndroid Build Coastguard Worker  // `projects/{project}/locations/{location}/clusters/{cluster}/databases/{database}`.
1325*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = IDENTIFIER];
1326*d5c09012SAndroid Build Coastguard Worker
1327*d5c09012SAndroid Build Coastguard Worker  // Optional. Charset for the database.
1328*d5c09012SAndroid Build Coastguard Worker  // This field can contain any PostgreSQL supported charset name.
1329*d5c09012SAndroid Build Coastguard Worker  // Example values include "UTF8", "SQL_ASCII", etc.
1330*d5c09012SAndroid Build Coastguard Worker  string charset = 2 [(google.api.field_behavior) = OPTIONAL];
1331*d5c09012SAndroid Build Coastguard Worker
1332*d5c09012SAndroid Build Coastguard Worker  // Optional. Collation for the database.
1333*d5c09012SAndroid Build Coastguard Worker  // Name of the custom or native collation for postgres.
1334*d5c09012SAndroid Build Coastguard Worker  // Example values include "C", "POSIX", etc
1335*d5c09012SAndroid Build Coastguard Worker  string collation = 3 [(google.api.field_behavior) = OPTIONAL];
1336*d5c09012SAndroid Build Coastguard Worker}
1337