-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathtable.proto
More file actions
728 lines (621 loc) · 28.4 KB
/
table.proto
File metadata and controls
728 lines (621 loc) · 28.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.bigtable.admin.v2;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/bigtable/admin/v2/types.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
option csharp_namespace = "Google.Cloud.Bigtable.Admin.V2";
option go_package = "cloud.google.com/go/bigtable/admin/apiv2/adminpb;adminpb";
option java_multiple_files = true;
option java_outer_classname = "TableProto";
option java_package = "com.google.bigtable.admin.v2";
option php_namespace = "Google\\Cloud\\Bigtable\\Admin\\V2";
option ruby_package = "Google::Cloud::Bigtable::Admin::V2";
option (google.api.resource_definition) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
pattern: "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}"
};
// Information about a table restore.
message RestoreInfo {
// The type of the restore source.
RestoreSourceType source_type = 1;
// Information about the source used to restore the table.
oneof source_info {
// Information about the backup used to restore the table. The backup
// may no longer exist.
BackupInfo backup_info = 2;
}
}
// Change stream configuration.
message ChangeStreamConfig {
// How long the change stream should be retained. Change stream data older
// than the retention period will not be returned when reading the change
// stream from the table.
// Values must be at least 1 day and at most 7 days, and will be truncated to
// microsecond granularity.
google.protobuf.Duration retention_period = 1;
}
// A collection of user data indexed by row, column, and timestamp.
// Each table is served using the resources of its parent cluster.
message Table {
option (google.api.resource) = {
type: "bigtableadmin.googleapis.com/Table"
pattern: "projects/{project}/instances/{instance}/tables/{table}"
};
// The state of a table's data in a particular cluster.
message ClusterState {
// Table replication states.
enum ReplicationState {
// The replication state of the table is unknown in this cluster.
STATE_NOT_KNOWN = 0;
// The cluster was recently created, and the table must finish copying
// over pre-existing data from other clusters before it can begin
// receiving live replication updates and serving Data API requests.
INITIALIZING = 1;
// The table is temporarily unable to serve Data API requests from this
// cluster due to planned internal maintenance.
PLANNED_MAINTENANCE = 2;
// The table is temporarily unable to serve Data API requests from this
// cluster due to unplanned or emergency maintenance.
UNPLANNED_MAINTENANCE = 3;
// The table can serve Data API requests from this cluster. Depending on
// replication delay, reads may not immediately reflect the state of the
// table in other clusters.
READY = 4;
// The table is fully created and ready for use after a restore, and is
// being optimized for performance. When optimizations are complete, the
// table will transition to `READY` state.
READY_OPTIMIZING = 5;
}
// Output only. The state of replication for the table in this cluster.
ReplicationState replication_state = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The encryption information for the table in this cluster.
// If the encryption key protecting this resource is customer managed, then
// its version can be rotated in Cloud Key Management Service (Cloud KMS).
// The primary version of the key and its status will be reflected here when
// changes propagate from Cloud KMS.
repeated EncryptionInfo encryption_info = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Possible timestamp granularities to use when keeping multiple versions
// of data in a table.
enum TimestampGranularity {
// The user did not specify a granularity. Should not be returned.
// When specified during table creation, MILLIS will be used.
TIMESTAMP_GRANULARITY_UNSPECIFIED = 0;
// The table keeps data versioned at a granularity of 1ms.
MILLIS = 1;
}
// Defines a view over a table's fields.
enum View {
// Uses the default view for each method as documented in its request.
VIEW_UNSPECIFIED = 0;
// Only populates `name`.
NAME_ONLY = 1;
// Only populates `name` and fields related to the table's schema.
SCHEMA_VIEW = 2;
// Only populates `name` and fields related to the table's replication
// state.
REPLICATION_VIEW = 3;
// Only populates `name` and fields related to the table's encryption state.
ENCRYPTION_VIEW = 5;
// Populates all fields.
FULL = 4;
}
// Defines an automated backup policy for a table
message AutomatedBackupPolicy {
// Required. How long the automated backups should be retained. Values must
// be at least 3 days and at most 90 days.
google.protobuf.Duration retention_period = 1
[(google.api.field_behavior) = REQUIRED];
// How frequently automated backups should occur. The only supported value
// at this time is 24 hours. An undefined frequency is treated as 24 hours.
google.protobuf.Duration frequency = 2;
// Optional. A list of Cloud Bigtable zones where automated backups are
// allowed to be created. If empty, automated backups will be created in all
// zones of the instance. Locations are in the format
// `projects/{project}/locations/{zone}`.
// This field can only set for tables in Enterprise Plus instances.
repeated string locations = 3 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "locations.googleapis.com/Location"
}
];
}
// The unique name of the table. Values are of the form
// `projects/{project}/instances/{instance}/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`.
// Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `FULL`
string name = 1;
// Output only. Map from cluster ID to per-cluster table state.
// If it could not be determined whether or not the table has data in a
// particular cluster (for example, if its zone is unavailable), then
// there will be an entry for the cluster with UNKNOWN `replication_status`.
// Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`
map<string, ClusterState> cluster_states = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// The column families configured for this table, mapped by column family ID.
// Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`
map<string, ColumnFamily> column_families = 3;
// Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored
// in this table. Timestamps not matching the granularity will be rejected. If
// unspecified at creation time, the value will be set to `MILLIS`. Views:
// `SCHEMA_VIEW`, `FULL`.
TimestampGranularity granularity = 4
[(google.api.field_behavior) = IMMUTABLE];
// Output only. If this table was restored from another data source (e.g. a
// backup), this field will be populated with information about the restore.
RestoreInfo restore_info = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// If specified, enable the change stream on this table.
// Otherwise, the change stream is disabled and the change stream is not
// retained.
ChangeStreamConfig change_stream_config = 8;
// Set to true to make the table protected against data loss. i.e. deleting
// the following resources through Admin APIs are prohibited:
//
// * The table.
// * The column families in the table.
// * The instance containing the table.
//
// Note one can still delete the data stored in the table through Data APIs.
bool deletion_protection = 9;
oneof automated_backup_config {
// If specified, automated backups are enabled for this table.
// Otherwise, automated backups are disabled.
AutomatedBackupPolicy automated_backup_policy = 13;
}
// Rules to specify what data is stored in each storage tier.
// Different tiers store data differently, providing different trade-offs
// between cost and performance. Different parts of a table can be stored
// separately on different tiers.
// If a config is specified, tiered storage is enabled for this table.
// Otherwise, tiered storage is disabled.
// Only SSD instances can configure tiered storage.
TieredStorageConfig tiered_storage_config = 14;
// The row key schema for this table. The schema is used to decode the raw row
// key bytes into a structured format. The order of field declarations in this
// schema is important, as it reflects how the raw row key bytes are
// structured. Currently, this only affects how the key is read via a
// GoogleSQL query from the ExecuteQuery API.
//
// For a SQL query, the _key column is still read as raw bytes. But queries
// can reference the key fields by name, which will be decoded from _key using
// provided type and encoding. Queries that reference key fields will fail if
// they encounter an invalid row key.
//
// For example, if _key = "some_id#2024-04-30#\x00\x13\x00\xf3" with the
// following schema:
// {
// fields {
// field_name: "id"
// type { string { encoding: utf8_bytes {} } }
// }
// fields {
// field_name: "date"
// type { string { encoding: utf8_bytes {} } }
// }
// fields {
// field_name: "product_code"
// type { int64 { encoding: big_endian_bytes {} } }
// }
// encoding { delimited_bytes { delimiter: "#" } }
// }
//
// The decoded key parts would be:
// id = "some_id", date = "2024-04-30", product_code = 1245427
// The query "SELECT _key, product_code FROM table" will return two columns:
// /------------------------------------------------------\
// | _key | product_code |
// | --------------------------------------|--------------|
// | "some_id#2024-04-30#\x00\x13\x00\xf3" | 1245427 |
// \------------------------------------------------------/
//
// The schema has the following invariants:
// (1) The decoded field values are order-preserved. For read, the field
// values will be decoded in sorted mode from the raw bytes.
// (2) Every field in the schema must specify a non-empty name.
// (3) Every field must specify a type with an associated encoding. The type
// is limited to scalar types only: Array, Map, Aggregate, and Struct are not
// allowed.
// (4) The field names must not collide with existing column family
// names and reserved keywords "_key" and "_timestamp".
//
// The following update operations are allowed for row_key_schema:
// - Update from an empty schema to a new schema.
// - Remove the existing schema. This operation requires setting the
// `ignore_warnings` flag to `true`, since it might be a backward
// incompatible change. Without the flag, the update request will fail with
// an INVALID_ARGUMENT error.
// Any other row key schema update operation (e.g. update existing schema
// columns names or types) is currently unsupported.
Type.Struct row_key_schema = 15;
}
// AuthorizedViews represent subsets of a particular Cloud Bigtable table. Users
// can configure access to each Authorized View independently from the table and
// use the existing Data APIs to access the subset of data.
message AuthorizedView {
option (google.api.resource) = {
type: "bigtableadmin.googleapis.com/AuthorizedView"
pattern: "projects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}"
plural: "authorizedViews"
singular: "authorizedView"
};
// Subsets of a column family that are included in this AuthorizedView.
message FamilySubsets {
// Individual exact column qualifiers to be included in the AuthorizedView.
repeated bytes qualifiers = 1;
// Prefixes for qualifiers to be included in the AuthorizedView. Every
// qualifier starting with one of these prefixes is included in the
// AuthorizedView. To provide access to all qualifiers, include the empty
// string as a prefix
// ("").
repeated bytes qualifier_prefixes = 2;
}
// Defines a simple AuthorizedView that is a subset of the underlying Table.
message SubsetView {
// Row prefixes to be included in the AuthorizedView.
// To provide access to all rows, include the empty string as a prefix ("").
repeated bytes row_prefixes = 1;
// Map from column family name to the columns in this family to be included
// in the AuthorizedView.
map<string, FamilySubsets> family_subsets = 2;
}
// Defines a subset of an AuthorizedView's fields.
enum ResponseView {
// Uses the default view for each method as documented in the request.
RESPONSE_VIEW_UNSPECIFIED = 0;
// Only populates `name`.
NAME_ONLY = 1;
// Only populates the AuthorizedView's basic metadata. This includes:
// name, deletion_protection, etag.
BASIC = 2;
// Populates every fields.
FULL = 3;
}
// Identifier. The name of this AuthorizedView.
// Values are of the form
// `projects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// The type of this AuthorizedView.
oneof authorized_view {
// An AuthorizedView permitting access to an explicit subset of a Table.
SubsetView subset_view = 2;
}
// The etag for this AuthorizedView.
// If this is provided on update, it must match the server's etag. The server
// returns ABORTED error on a mismatched etag.
string etag = 3;
// Set to true to make the AuthorizedView protected against deletion.
// The parent Table and containing Instance cannot be deleted if an
// AuthorizedView has this bit set.
bool deletion_protection = 4;
}
// A set of columns within a table which share a common configuration.
message ColumnFamily {
// Garbage collection rule specified as a protobuf.
// Must serialize to at most 500 bytes.
//
// NOTE: Garbage collection executes opportunistically in the background, and
// so it's possible for reads to return a cell even if it matches the active
// GC expression for its family.
GcRule gc_rule = 1;
// The type of data stored in each of this family's cell values, including its
// full encoding. If omitted, the family only serves raw untyped bytes.
//
// For now, only the `Aggregate` type is supported.
//
// `Aggregate` can only be set at family creation and is immutable afterwards.
//
//
// If `value_type` is `Aggregate`, written data must be compatible with:
// * `value_type.input_type` for `AddInput` mutations
Type value_type = 3;
}
// Rule for determining which cells to delete during garbage collection.
message GcRule {
// A GcRule which deletes cells matching all of the given rules.
message Intersection {
// Only delete cells which would be deleted by every element of `rules`.
repeated GcRule rules = 1;
}
// A GcRule which deletes cells matching any of the given rules.
message Union {
// Delete cells which would be deleted by any element of `rules`.
repeated GcRule rules = 1;
}
// Garbage collection rules.
oneof rule {
// Delete all cells in a column except the most recent N.
int32 max_num_versions = 1;
// Delete cells in a column older than the given age.
// Values must be at least one millisecond, and will be truncated to
// microsecond granularity.
google.protobuf.Duration max_age = 2;
// Delete cells that would be deleted by every nested rule.
Intersection intersection = 3;
// Delete cells that would be deleted by any nested rule.
Union union = 4;
}
}
// Encryption information for a given resource.
// If this resource is protected with customer managed encryption, the in-use
// Cloud Key Management Service (Cloud KMS) key version is specified along with
// its status.
message EncryptionInfo {
// Possible encryption types for a resource.
enum EncryptionType {
// Encryption type was not specified, though data at rest remains encrypted.
ENCRYPTION_TYPE_UNSPECIFIED = 0;
// The data backing this resource is encrypted at rest with a key that is
// fully managed by Google. No key version or status will be populated.
// This is the default state.
GOOGLE_DEFAULT_ENCRYPTION = 1;
// The data backing this resource is encrypted at rest with a key that is
// managed by the customer.
// The in-use version of the key and its status are populated for
// CMEK-protected tables.
// CMEK-protected backups are pinned to the key version that was in use at
// the time the backup was taken. This key version is populated but its
// status is not tracked and is reported as `UNKNOWN`.
CUSTOMER_MANAGED_ENCRYPTION = 2;
}
// Output only. The type of encryption used to protect this resource.
EncryptionType encryption_type = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The status of encrypt/decrypt calls on underlying data for
// this resource. Regardless of status, the existing data is always encrypted
// at rest.
google.rpc.Status encryption_status = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The version of the Cloud KMS key specified in the parent
// cluster that is in use for the data underlying this table.
string kms_key_version = 2 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
}
];
}
// A snapshot of a table at a particular time. A snapshot can be used as a
// checkpoint for data restoration or a data source for a new table.
//
// Note: This is a private alpha release of Cloud Bigtable snapshots. This
// feature is not currently available to most Cloud Bigtable customers. This
// feature might be changed in backward-incompatible ways and is not recommended
// for production use. It is not subject to any SLA or deprecation policy.
message Snapshot {
option (google.api.resource) = {
type: "bigtableadmin.googleapis.com/Snapshot"
pattern: "projects/{project}/instances/{instance}/clusters/{cluster}/snapshots/{snapshot}"
};
// Possible states of a snapshot.
enum State {
// The state of the snapshot could not be determined.
STATE_NOT_KNOWN = 0;
// The snapshot has been successfully created and can serve all requests.
READY = 1;
// The snapshot is currently being created, and may be destroyed if the
// creation process encounters an error. A snapshot may not be restored to a
// table while it is being created.
CREATING = 2;
}
// The unique name of the snapshot.
// Values are of the form
// `projects/{project}/instances/{instance}/clusters/{cluster}/snapshots/{snapshot}`.
string name = 1;
// Output only. The source table at the time the snapshot was taken.
Table source_table = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The size of the data in the source table at the time the
// snapshot was taken. In some cases, this value may be computed
// asynchronously via a background process and a placeholder of 0 will be used
// in the meantime.
int64 data_size_bytes = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time when the snapshot is created.
google.protobuf.Timestamp create_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// The time when the snapshot will be deleted. The maximum amount of time a
// snapshot can stay active is 365 days. If 'ttl' is not specified,
// the default maximum of 365 days will be used.
google.protobuf.Timestamp delete_time = 5;
// Output only. The current state of the snapshot.
State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Description of the snapshot.
string description = 7;
}
// A backup of a Cloud Bigtable table.
message Backup {
option (google.api.resource) = {
type: "bigtableadmin.googleapis.com/Backup"
pattern: "projects/{project}/instances/{instance}/clusters/{cluster}/backups/{backup}"
};
// Indicates the current state of the backup.
enum State {
// Not specified.
STATE_UNSPECIFIED = 0;
// The pending backup is still being created. Operations on the
// backup may fail with `FAILED_PRECONDITION` in this state.
CREATING = 1;
// The backup is complete and ready for use.
READY = 2;
}
// The type of the backup.
enum BackupType {
// Not specified.
BACKUP_TYPE_UNSPECIFIED = 0;
// The default type for Cloud Bigtable managed backups. Supported for
// backups created in both HDD and SSD instances. Requires optimization when
// restored to a table in an SSD instance.
STANDARD = 1;
// A backup type with faster restore to SSD performance. Only supported for
// backups created in SSD instances. A new SSD table restored from a hot
// backup reaches production performance more quickly than a standard
// backup.
HOT = 2;
}
// A globally unique identifier for the backup which cannot be
// changed. Values are of the form
// `projects/{project}/instances/{instance}/clusters/{cluster}/
// backups/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`
// The final segment of the name must be between 1 and 50 characters
// in length.
//
// The backup is stored in the cluster identified by the prefix of the backup
// name of the form
// `projects/{project}/instances/{instance}/clusters/{cluster}`.
string name = 1;
// Required. Immutable. Name of the table from which this backup was created.
// This needs to be in the same instance as the backup. Values are of the form
// `projects/{project}/instances/{instance}/tables/{source_table}`.
string source_table = 2 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = REQUIRED
];
// Output only. Name of the backup from which this backup was copied. If a
// backup is not created by copying a backup, this field will be empty. Values
// are of the form:
// projects/<project>/instances/<instance>/clusters/<cluster>/backups/<backup>
string source_backup = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The expiration time of the backup.
// When creating a backup or updating its `expire_time`, the value must be
// greater than the backup creation time by:
// - At least 6 hours
// - At most 90 days
//
// Once the `expire_time` has passed, Cloud Bigtable will delete the backup.
google.protobuf.Timestamp expire_time = 3
[(google.api.field_behavior) = REQUIRED];
// Output only. `start_time` is the time that the backup was started
// (i.e. approximately the time the
// [CreateBackup][google.bigtable.admin.v2.BigtableTableAdmin.CreateBackup]
// request is received). The row data in this backup will be no older than
// this timestamp.
google.protobuf.Timestamp start_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. `end_time` is the time that the backup was finished. The row
// data in the backup will be no newer than this timestamp.
google.protobuf.Timestamp end_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Size of the backup in bytes.
int64 size_bytes = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The current state of the backup.
State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The encryption information for the backup.
EncryptionInfo encryption_info = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Indicates the backup type of the backup.
BackupType backup_type = 11;
// The time at which the hot backup will be converted to a standard backup.
// Once the `hot_to_standard_time` has passed, Cloud Bigtable will convert the
// hot backup to a standard backup. This value must be greater than the backup
// creation time by:
// - At least 24 hours
//
// This field only applies for hot backups. When creating or updating a
// standard backup, attempting to set this field will fail the request.
google.protobuf.Timestamp hot_to_standard_time = 12;
}
// Information about a backup.
message BackupInfo {
// Output only. Name of the backup.
string backup = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time that the backup was started. Row data in the backup
// will be no older than this timestamp.
google.protobuf.Timestamp start_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. This time that the backup was finished. Row data in the
// backup will be no newer than this timestamp.
google.protobuf.Timestamp end_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Name of the table the backup was created from.
string source_table = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Name of the backup from which this backup was copied. If a
// backup is not created by copying a backup, this field will be empty. Values
// are of the form:
// projects/<project>/instances/<instance>/clusters/<cluster>/backups/<backup>
string source_backup = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Indicates the type of the restore source.
enum RestoreSourceType {
// No restore associated.
RESTORE_SOURCE_TYPE_UNSPECIFIED = 0;
// A backup was used as the source of the restore.
BACKUP = 1;
}
// Config for tiered storage.
// A valid config must have a valid TieredStorageRule. Otherwise the whole
// TieredStorageConfig must be unset.
// By default all data is stored in the SSD tier (only SSD instances can
// configure tiered storage).
message TieredStorageConfig {
// Rule to specify what data is stored in the infrequent access(IA) tier.
// The IA tier allows storing more data per node with reduced performance.
TieredStorageRule infrequent_access = 1;
}
// Rule to specify what data is stored in a storage tier.
message TieredStorageRule {
// Rules to specify what data is stored in this tier.
oneof rule {
// Include cells older than the given age.
// For the infrequent access tier, this value must be at least 30 days.
google.protobuf.Duration include_if_older_than = 1;
}
}
// Represents a protobuf schema.
message ProtoSchema {
// Required. Contains a protobuf-serialized
// [google.protobuf.FileDescriptorSet](https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/descriptor.proto),
// which could include multiple proto files.
// To generate it, [install](https://grpc.io/docs/protoc-installation/) and
// run `protoc` with
// `--include_imports` and `--descriptor_set_out`. For example, to generate
// for moon/shot/app.proto, run
// ```
// $protoc --proto_path=/app_path --proto_path=/lib_path \
// --include_imports \
// --descriptor_set_out=descriptors.pb \
// moon/shot/app.proto
// ```
// For more details, see protobuffer [self
// description](https://developers.google.com/protocol-buffers/docs/techniques#self-description).
bytes proto_descriptors = 2 [(google.api.field_behavior) = REQUIRED];
}
// A named collection of related schemas.
message SchemaBundle {
option (google.api.resource) = {
type: "bigtableadmin.googleapis.com/SchemaBundle"
pattern: "projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}"
plural: "schemaBundles"
singular: "schemaBundle"
};
// Identifier. The unique name identifying this schema bundle.
// Values are of the form
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// The type of this schema bundle. The oneof case cannot change after
// creation.
oneof type {
// Schema for Protobufs.
ProtoSchema proto_schema = 2;
}
// Optional. The etag for this schema bundle.
// This may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding. The server
// returns an ABORTED error on a mismatched etag.
string etag = 3 [(google.api.field_behavior) = OPTIONAL];
}