aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/googleapis/google/bigtable/admin
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/bigtable/admin')
-rw-r--r--third_party/googleapis/google/bigtable/admin/bigtableadmin.yaml76
-rw-r--r--third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_data.proto126
-rw-r--r--third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service.proto80
-rw-r--r--third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service_messages.proto116
-rw-r--r--third_party/googleapis/google/bigtable/admin/v2/bigtable_instance_admin.proto233
-rw-r--r--third_party/googleapis/google/bigtable/admin/v2/bigtable_table_admin.proto214
-rw-r--r--third_party/googleapis/google/bigtable/admin/v2/common.proto38
-rw-r--r--third_party/googleapis/google/bigtable/admin/v2/instance.proto130
-rw-r--r--third_party/googleapis/google/bigtable/admin/v2/table.proto118
9 files changed, 1131 insertions, 0 deletions
diff --git a/third_party/googleapis/google/bigtable/admin/bigtableadmin.yaml b/third_party/googleapis/google/bigtable/admin/bigtableadmin.yaml
new file mode 100644
index 0000000000..cbf0447122
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/bigtableadmin.yaml
@@ -0,0 +1,76 @@
+# Google Bigtable Admin API service configuration
+
+type: google.api.Service
+config_version: 3
+name: bigtableadmin.googleapis.com
+title: Cloud Bigtable Admin API
+
+apis:
+- name: google.bigtable.admin.v2.BigtableInstanceAdmin
+- name: google.bigtable.admin.v2.BigtableTableAdmin
+- name: google.longrunning.Operations
+
+# Additional types which are used as google.protobuf.Any values
+types:
+- name: google.bigtable.admin.v2.CreateInstanceMetadata
+- name: google.bigtable.admin.v2.UpdateClusterMetadata
+
+authentication:
+ rules:
+ # Unless explicitly weakened, all BigtableInstanceAdmin ops require cluster
+ # admin access.
+ - selector: google.bigtable.admin.v2.BigtableInstanceAdmin.*,
+ google.longrunning.Operations.*
+ oauth:
+ canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
+ https://www.googleapis.com/auth/bigtable.admin.cluster,
+ https://www.googleapis.com/auth/bigtable.admin.instance,
+ https://www.googleapis.com/auth/cloud-bigtable.admin,
+ https://www.googleapis.com/auth/cloud-bigtable.admin.cluster,
+ https://www.googleapis.com/auth/cloud-platform
+ # BigtableInstanceAdmin Ops which only require read access
+ - selector: google.bigtable.admin.v2.BigtableInstanceAdmin.GetCluster,
+ google.bigtable.admin.v2.BigtableInstanceAdmin.GetInstance,
+ google.bigtable.admin.v2.BigtableInstanceAdmin.ListClusters,
+ google.bigtable.admin.v2.BigtableInstanceAdmin.ListInstances,
+ google.longrunning.Operations.GetOperation,
+ google.longrunning.Operations.ListOperations
+ oauth:
+ canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
+ https://www.googleapis.com/auth/bigtable.admin.cluster,
+ https://www.googleapis.com/auth/bigtable.admin.instance,
+ https://www.googleapis.com/auth/cloud-bigtable.admin,
+ https://www.googleapis.com/auth/cloud-bigtable.admin.cluster,
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/cloud-platform.read-only
+
+ # Unless explicitly weakened, all BigtableTableAdmin ops require table admin access
+ - selector: google.bigtable.admin.v2.BigtableTableAdmin.*
+ oauth:
+ canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
+ https://www.googleapis.com/auth/bigtable.admin.table,
+ https://www.googleapis.com/auth/cloud-bigtable.admin,
+ https://www.googleapis.com/auth/cloud-bigtable.admin.table,
+ https://www.googleapis.com/auth/cloud-platform
+ # BigtableTableAdmin Ops which only require read access
+ - selector: google.bigtable.admin.v2.BigtableTableAdmin.GetTable,
+ google.bigtable.admin.v2.BigtableTableAdmin.ListTables
+ oauth:
+ canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
+ https://www.googleapis.com/auth/bigtable.admin.table,
+ https://www.googleapis.com/auth/cloud-bigtable.admin,
+ https://www.googleapis.com/auth/cloud-bigtable.admin.table,
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/cloud-platform.read-only
+
+# Http override to expose Operations API at v2
+http:
+ rules:
+ - selector: google.longrunning.Operations.GetOperation
+ get: '/v2/{name=operations/**}'
+ - selector: google.longrunning.Operations.ListOperations
+ get: '/v2/{name=operations}'
+ - selector: google.longrunning.Operations.CancelOperation
+ post: '/v2/{name=operations/**}:cancel'
+ - selector: google.longrunning.Operations.DeleteOperation
+ delete: '/v2/{name=operations/**}'
diff --git a/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_data.proto b/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_data.proto
new file mode 100644
index 0000000000..40072416cd
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_data.proto
@@ -0,0 +1,126 @@
+// Copyright (c) 2015, Google Inc.
+//
+// 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.table.v1;
+
+import "google/longrunning/operations.proto";
+import "google/protobuf/duration.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/table/v1;table";
+option java_multiple_files = true;
+option java_outer_classname = "BigtableTableDataProto";
+option java_package = "com.google.bigtable.admin.table.v1";
+
+
+// A collection of user data indexed by row, column, and timestamp.
+// Each table is served using the resources of its parent cluster.
+message Table {
+ enum TimestampGranularity {
+ MILLIS = 0;
+ }
+
+ // A unique identifier of the form
+ // <cluster_name>/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]*
+ string name = 1;
+
+ // If this Table is in the process of being created, the Operation used to
+ // track its progress. As long as this operation is present, the Table will
+ // not accept any Table Admin or Read/Write requests.
+ google.longrunning.Operation current_operation = 2;
+
+ // The column families configured for this table, mapped by column family id.
+ map<string, ColumnFamily> column_families = 3;
+
+ // The granularity (e.g. MILLIS, MICROS) at which timestamps are stored in
+ // this table. Timestamps not matching the granularity will be rejected.
+ // Cannot be changed once the table is created.
+ TimestampGranularity granularity = 4;
+}
+
+// A set of columns within a table which share a common configuration.
+message ColumnFamily {
+ // A unique identifier of the form <table_name>/columnFamilies/[-_.a-zA-Z0-9]+
+ // The last segment is the same as the "name" field in
+ // google.bigtable.v1.Family.
+ string name = 1;
+
+ // Garbage collection expression specified by the following grammar:
+ // GC = EXPR
+ // | "" ;
+ // EXPR = EXPR, "||", EXPR (* lowest precedence *)
+ // | EXPR, "&&", EXPR
+ // | "(", EXPR, ")" (* highest precedence *)
+ // | PROP ;
+ // PROP = "version() >", NUM32
+ // | "age() >", NUM64, [ UNIT ] ;
+ // NUM32 = non-zero-digit { digit } ; (* # NUM32 <= 2^32 - 1 *)
+ // NUM64 = non-zero-digit { digit } ; (* # NUM64 <= 2^63 - 1 *)
+ // UNIT = "d" | "h" | "m" (* d=days, h=hours, m=minutes, else micros *)
+ // GC expressions can be up to 500 characters in length
+ //
+ // The different types of PROP are defined as follows:
+ // version() - cell index, counting from most recent and starting at 1
+ // age() - age of the cell (current time minus cell timestamp)
+ //
+ // Example: "version() > 3 || (age() > 3d && version() > 1)"
+ // drop cells beyond the most recent three, and drop cells older than three
+ // days unless they're the most recent cell in the row/column
+ //
+ // 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.
+ string gc_expression = 2;
+
+ // Garbage collection rule specified as a protobuf.
+ // Supersedes `gc_expression`.
+ // 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 = 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;
+ }
+
+ 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;
+ }
+}
diff --git a/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service.proto b/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service.proto
new file mode 100644
index 0000000000..6962862776
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service.proto
@@ -0,0 +1,80 @@
+// Copyright (c) 2015, Google Inc.
+//
+// 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.table.v1;
+
+import "google/api/annotations.proto";
+import "google/bigtable/admin/table/v1/bigtable_table_data.proto";
+import "google/bigtable/admin/table/v1/bigtable_table_service_messages.proto";
+import "google/protobuf/empty.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/table/v1;table";
+option java_multiple_files = true;
+option java_outer_classname = "BigtableTableServicesProto";
+option java_package = "com.google.bigtable.admin.table.v1";
+
+
+// Service for creating, configuring, and deleting Cloud Bigtable tables.
+// Provides access to the table schemas only, not the data stored within the tables.
+service BigtableTableService {
+ // Creates a new table, to be served from a specified cluster.
+ // The table can be created with a full set of initial column families,
+ // specified in the request.
+ rpc CreateTable(CreateTableRequest) returns (Table) {
+ option (google.api.http) = { post: "/v1/{name=projects/*/zones/*/clusters/*}/tables" body: "*" };
+ }
+
+ // Lists the names of all tables served from a specified cluster.
+ rpc ListTables(ListTablesRequest) returns (ListTablesResponse) {
+ option (google.api.http) = { get: "/v1/{name=projects/*/zones/*/clusters/*}/tables" };
+ }
+
+ // Gets the schema of the specified table, including its column families.
+ rpc GetTable(GetTableRequest) returns (Table) {
+ option (google.api.http) = { get: "/v1/{name=projects/*/zones/*/clusters/*/tables/*}" };
+ }
+
+ // Permanently deletes a specified table and all of its data.
+ rpc DeleteTable(DeleteTableRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { delete: "/v1/{name=projects/*/zones/*/clusters/*/tables/*}" };
+ }
+
+ // Changes the name of a specified table.
+ // Cannot be used to move tables between clusters, zones, or projects.
+ rpc RenameTable(RenameTableRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { post: "/v1/{name=projects/*/zones/*/clusters/*/tables/*}:rename" body: "*" };
+ }
+
+ // Creates a new column family within a specified table.
+ rpc CreateColumnFamily(CreateColumnFamilyRequest) returns (ColumnFamily) {
+ option (google.api.http) = { post: "/v1/{name=projects/*/zones/*/clusters/*/tables/*}/columnFamilies" body: "*" };
+ }
+
+ // Changes the configuration of a specified column family.
+ rpc UpdateColumnFamily(ColumnFamily) returns (ColumnFamily) {
+ option (google.api.http) = { put: "/v1/{name=projects/*/zones/*/clusters/*/tables/*/columnFamilies/*}" body: "*" };
+ }
+
+ // Permanently deletes a specified column family and all of its data.
+ rpc DeleteColumnFamily(DeleteColumnFamilyRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { delete: "/v1/{name=projects/*/zones/*/clusters/*/tables/*/columnFamilies/*}" };
+ }
+
+ // Delete all rows in a table corresponding to a particular prefix
+ rpc BulkDeleteRows(BulkDeleteRowsRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { post: "/v1/{table_name=projects/*/zones/*/clusters/*/tables/*}:bulkDeleteRows" body: "*" };
+ }
+}
diff --git a/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service_messages.proto b/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service_messages.proto
new file mode 100644
index 0000000000..7374dc9d8b
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/table/v1/bigtable_table_service_messages.proto
@@ -0,0 +1,116 @@
+// Copyright (c) 2015, Google Inc.
+//
+// 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.table.v1;
+
+import "google/bigtable/admin/table/v1/bigtable_table_data.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/table/v1;table";
+option java_multiple_files = true;
+option java_outer_classname = "BigtableTableServiceMessagesProto";
+option java_package = "com.google.bigtable.admin.table.v1";
+
+
+message CreateTableRequest {
+ // The unique name of the cluster in which to create the new table.
+ string name = 1;
+
+ // The name by which the new table should be referred to within the cluster,
+ // e.g. "foobar" rather than "<cluster_name>/tables/foobar".
+ string table_id = 2;
+
+ // The Table to create. The `name` field of the Table and all of its
+ // ColumnFamilies must be left blank, and will be populated in the response.
+ Table table = 3;
+
+ // The optional list of row keys that will be used to initially split the
+ // table into several tablets (Tablets are similar to HBase regions).
+ // Given two split keys, "s1" and "s2", three tablets will be created,
+ // spanning the key ranges: [, s1), [s1, s2), [s2, ).
+ //
+ // Example:
+ // * Row keys := ["a", "apple", "custom", "customer_1", "customer_2",
+ // "other", "zz"]
+ // * initial_split_keys := ["apple", "customer_1", "customer_2", "other"]
+ // * Key assignment:
+ // - Tablet 1 [, apple) => {"a"}.
+ // - Tablet 2 [apple, customer_1) => {"apple", "custom"}.
+ // - Tablet 3 [customer_1, customer_2) => {"customer_1"}.
+ // - Tablet 4 [customer_2, other) => {"customer_2"}.
+ // - Tablet 5 [other, ) => {"other", "zz"}.
+ repeated string initial_split_keys = 4;
+}
+
+message ListTablesRequest {
+ // The unique name of the cluster for which tables should be listed.
+ string name = 1;
+}
+
+message ListTablesResponse {
+ // The tables present in the requested cluster.
+ // At present, only the names of the tables are populated.
+ repeated Table tables = 1;
+}
+
+message GetTableRequest {
+ // The unique name of the requested table.
+ string name = 1;
+}
+
+message DeleteTableRequest {
+ // The unique name of the table to be deleted.
+ string name = 1;
+}
+
+message RenameTableRequest {
+ // The current unique name of the table.
+ string name = 1;
+
+ // The new name by which the table should be referred to within its containing
+ // cluster, e.g. "foobar" rather than "<cluster_name>/tables/foobar".
+ string new_id = 2;
+}
+
+message CreateColumnFamilyRequest {
+ // The unique name of the table in which to create the new column family.
+ string name = 1;
+
+ // The name by which the new column family should be referred to within the
+ // table, e.g. "foobar" rather than "<table_name>/columnFamilies/foobar".
+ string column_family_id = 2;
+
+ // The column family to create. The `name` field must be left blank.
+ ColumnFamily column_family = 3;
+}
+
+message DeleteColumnFamilyRequest {
+ // The unique name of the column family to be deleted.
+ string name = 1;
+}
+
+message BulkDeleteRowsRequest {
+ // The unique name of the table on which to perform the bulk delete
+ string table_name = 1;
+
+ oneof target {
+ // Delete all rows that start with this row key prefix. Prefix cannot be
+ // zero length.
+ bytes row_key_prefix = 2;
+
+ // Delete all rows in the table. Setting this to false is a no-op.
+ bool delete_all_data_from_table = 3;
+ }
+}
diff --git a/third_party/googleapis/google/bigtable/admin/v2/bigtable_instance_admin.proto b/third_party/googleapis/google/bigtable/admin/v2/bigtable_instance_admin.proto
new file mode 100644
index 0000000000..a4883bfcfa
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/v2/bigtable_instance_admin.proto
@@ -0,0 +1,233 @@
+// Copyright 2016 Google Inc.
+//
+// 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/annotations.proto";
+import "google/bigtable/admin/v2/instance.proto";
+import "google/longrunning/operations.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/v2;admin";
+option java_multiple_files = true;
+option java_outer_classname = "BigtableInstanceAdminProto";
+option java_package = "com.google.bigtable.admin.v2";
+
+
+// Service for creating, configuring, and deleting Cloud Bigtable Instances and
+// Clusters. Provides access to the Instance and Cluster schemas only, not the
+// tables' metadata or data stored in those tables.
+service BigtableInstanceAdmin {
+ // Create an instance within a project.
+ rpc CreateInstance(CreateInstanceRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = { post: "/v2/{parent=projects/*}/instances" body: "*" };
+ }
+
+ // Gets information about an instance.
+ rpc GetInstance(GetInstanceRequest) returns (Instance) {
+ option (google.api.http) = { get: "/v2/{name=projects/*/instances/*}" };
+ }
+
+ // Lists information about instances in a project.
+ rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) {
+ option (google.api.http) = { get: "/v2/{parent=projects/*}/instances" };
+ }
+
+ // Updates an instance within a project.
+ rpc UpdateInstance(Instance) returns (Instance) {
+ option (google.api.http) = { put: "/v2/{name=projects/*/instances/*}" body: "*" };
+ }
+
+ // Delete an instance from a project.
+ rpc DeleteInstance(DeleteInstanceRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { delete: "/v2/{name=projects/*/instances/*}" };
+ }
+
+ // Creates a cluster within an instance.
+ rpc CreateCluster(CreateClusterRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = { post: "/v2/{parent=projects/*/instances/*}/clusters" body: "cluster" };
+ }
+
+ // Gets information about a cluster.
+ rpc GetCluster(GetClusterRequest) returns (Cluster) {
+ option (google.api.http) = { get: "/v2/{name=projects/*/instances/*/clusters/*}" };
+ }
+
+ // Lists information about clusters in an instance.
+ rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
+ option (google.api.http) = { get: "/v2/{parent=projects/*/instances/*}/clusters" };
+ }
+
+ // Updates a cluster within an instance.
+ rpc UpdateCluster(Cluster) returns (google.longrunning.Operation) {
+ option (google.api.http) = { put: "/v2/{name=projects/*/instances/*/clusters/*}" body: "*" };
+ }
+
+ // Deletes a cluster from an instance.
+ rpc DeleteCluster(DeleteClusterRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { delete: "/v2/{name=projects/*/instances/*/clusters/*}" };
+ }
+}
+
+// Request message for BigtableInstanceAdmin.CreateInstance.
+message CreateInstanceRequest {
+ // The unique name of the project in which to create the new instance.
+ // Values are of the form `projects/<project>`.
+ string parent = 1;
+
+ // The ID to be used when referring to the new instance within its project,
+ // e.g., just `myinstance` rather than
+ // `projects/myproject/instances/myinstance`.
+ string instance_id = 2;
+
+ // The instance to create.
+ // Fields marked `OutputOnly` must be left blank.
+ Instance instance = 3;
+
+ // The clusters to be created within the instance, mapped by desired
+ // cluster ID, e.g., just `mycluster` rather than
+ // `projects/myproject/instances/myinstance/clusters/mycluster`.
+ // Fields marked `OutputOnly` must be left blank.
+ // Currently exactly one cluster must be specified.
+ map<string, Cluster> clusters = 4;
+}
+
+// Request message for BigtableInstanceAdmin.GetInstance.
+message GetInstanceRequest {
+ // The unique name of the requested instance. Values are of the form
+ // `projects/<project>/instances/<instance>`.
+ string name = 1;
+}
+
+// Request message for BigtableInstanceAdmin.ListInstances.
+message ListInstancesRequest {
+ // The unique name of the project for which a list of instances is requested.
+ // Values are of the form `projects/<project>`.
+ string parent = 1;
+
+ // The value of `next_page_token` returned by a previous call.
+ string page_token = 2;
+}
+
+// Response message for BigtableInstanceAdmin.ListInstances.
+message ListInstancesResponse {
+ // The list of requested instances.
+ repeated Instance instances = 1;
+
+ // Locations from which Instance information could not be retrieved,
+ // due to an outage or some other transient condition.
+ // Instances whose Clusters are all in one of the failed locations
+ // may be missing from `instances`, and Instances with at least one
+ // Cluster in a failed location may only have partial information returned.
+ repeated string failed_locations = 2;
+
+ // Set if not all instances could be returned in a single response.
+ // Pass this value to `page_token` in another request to get the next
+ // page of results.
+ string next_page_token = 3;
+}
+
+// Request message for BigtableInstanceAdmin.DeleteInstance.
+message DeleteInstanceRequest {
+ // The unique name of the instance to be deleted.
+ // Values are of the form `projects/<project>/instances/<instance>`.
+ string name = 1;
+}
+
+// Request message for BigtableInstanceAdmin.CreateCluster.
+message CreateClusterRequest {
+ // The unique name of the instance in which to create the new cluster.
+ // Values are of the form
+ // `projects/<project>/instances/<instance>`.
+ string parent = 1;
+
+ // The ID to be used when referring to the new cluster within its instance,
+ // e.g., just `mycluster` rather than
+ // `projects/myproject/instances/myinstance/clusters/mycluster`.
+ string cluster_id = 2;
+
+ // The cluster to be created.
+ // Fields marked `OutputOnly` must be left blank.
+ Cluster cluster = 3;
+}
+
+// Request message for BigtableInstanceAdmin.GetCluster.
+message GetClusterRequest {
+ // The unique name of the requested cluster. Values are of the form
+ // `projects/<project>/instances/<instance>/clusters/<cluster>`.
+ string name = 1;
+}
+
+// Request message for BigtableInstanceAdmin.ListClusters.
+message ListClustersRequest {
+ // The unique name of the instance for which a list of clusters is requested.
+ // Values are of the form `projects/<project>/instances/<instance>`.
+ // Use `<instance> = '-'` to list Clusters for all Instances in a project,
+ // e.g., `projects/myproject/instances/-`.
+ string parent = 1;
+
+ // The value of `next_page_token` returned by a previous call.
+ string page_token = 2;
+}
+
+// Response message for BigtableInstanceAdmin.ListClusters.
+message ListClustersResponse {
+ // The list of requested clusters.
+ repeated Cluster clusters = 1;
+
+ // Locations from which Cluster information could not be retrieved,
+ // due to an outage or some other transient condition.
+ // Clusters from these locations may be missing from `clusters`,
+ // or may only have partial information returned.
+ repeated string failed_locations = 2;
+
+ // Set if not all clusters could be returned in a single response.
+ // Pass this value to `page_token` in another request to get the next
+ // page of results.
+ string next_page_token = 3;
+}
+
+// Request message for BigtableInstanceAdmin.DeleteCluster.
+message DeleteClusterRequest {
+ // The unique name of the cluster to be deleted. Values are of the form
+ // `projects/<project>/instances/<instance>/clusters/<cluster>`.
+ string name = 1;
+}
+
+// The metadata for the Operation returned by CreateInstance.
+message CreateInstanceMetadata {
+ // The request that prompted the initiation of this CreateInstance operation.
+ CreateInstanceRequest original_request = 1;
+
+ // The time at which the original request was received.
+ google.protobuf.Timestamp request_time = 2;
+
+ // The time at which the operation failed or was completed successfully.
+ google.protobuf.Timestamp finish_time = 3;
+}
+
+// The metadata for the Operation returned by UpdateCluster.
+message UpdateClusterMetadata {
+ // The request that prompted the initiation of this UpdateCluster operation.
+ Cluster original_request = 1;
+
+ // The time at which the original request was received.
+ google.protobuf.Timestamp request_time = 2;
+
+ // The time at which the operation failed or was completed successfully.
+ google.protobuf.Timestamp finish_time = 3;
+}
diff --git a/third_party/googleapis/google/bigtable/admin/v2/bigtable_table_admin.proto b/third_party/googleapis/google/bigtable/admin/v2/bigtable_table_admin.proto
new file mode 100644
index 0000000000..a8500cd439
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/v2/bigtable_table_admin.proto
@@ -0,0 +1,214 @@
+// Copyright 2016 Google Inc.
+//
+// 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/annotations.proto";
+import "google/api/auth.proto";
+import "google/bigtable/admin/v2/table.proto";
+import "google/longrunning/operations.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/v2;admin";
+option java_multiple_files = true;
+option java_outer_classname = "BigtableTableAdminProto";
+option java_package = "com.google.bigtable.admin.v2";
+
+
+// Service for creating, configuring, and deleting Cloud Bigtable tables.
+// Provides access to the table schemas only, not the data stored within
+// the tables.
+service BigtableTableAdmin {
+ // Creates a new table in the specified instance.
+ // The table can be created with a full set of initial column families,
+ // specified in the request.
+ rpc CreateTable(CreateTableRequest) returns (Table) {
+ option (google.api.http) = { post: "/v2/{parent=projects/*/instances/*}/tables" body: "*" };
+ }
+
+ // Lists all tables served from a specified instance.
+ rpc ListTables(ListTablesRequest) returns (ListTablesResponse) {
+ option (google.api.http) = { get: "/v2/{parent=projects/*/instances/*}/tables" };
+ }
+
+ // Gets metadata information about the specified table.
+ rpc GetTable(GetTableRequest) returns (Table) {
+ option (google.api.http) = { get: "/v2/{name=projects/*/instances/*/tables/*}" };
+ }
+
+ // Permanently deletes a specified table and all of its data.
+ rpc DeleteTable(DeleteTableRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { delete: "/v2/{name=projects/*/instances/*/tables/*}" };
+ }
+
+ // Atomically performs a series of column family modifications
+ // on the specified table.
+ rpc ModifyColumnFamilies(ModifyColumnFamiliesRequest) returns (Table) {
+ option (google.api.http) = { post: "/v2/{name=projects/*/instances/*/tables/*}:modifyColumnFamilies" body: "*" };
+ }
+
+ // Permanently drop/delete a row range from a specified table. The request can
+ // specify whether to delete all rows in a table, or only those that match a
+ // particular prefix.
+ rpc DropRowRange(DropRowRangeRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { post: "/v2/{name=projects/*/instances/*/tables/*}:dropRowRange" body: "*" };
+ }
+}
+
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.CreateTable][google.bigtable.admin.v2.BigtableTableAdmin.CreateTable]
+message CreateTableRequest {
+ // An initial split point for a newly created table.
+ message Split {
+ // Row key to use as an initial tablet boundary.
+ bytes key = 1;
+ }
+
+ // The unique name of the instance in which to create the table.
+ // Values are of the form `projects/<project>/instances/<instance>`.
+ string parent = 1;
+
+ // The name by which the new table should be referred to within the parent
+ // instance, e.g., `foobar` rather than `<parent>/tables/foobar`.
+ string table_id = 2;
+
+ // The Table to create.
+ Table table = 3;
+
+ // The optional list of row keys that will be used to initially split the
+ // table into several tablets (tablets are similar to HBase regions).
+ // Given two split keys, `s1` and `s2`, three tablets will be created,
+ // spanning the key ranges: `[, s1), [s1, s2), [s2, )`.
+ //
+ // Example:
+ //
+ // * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",`
+ // `"other", "zz"]`
+ // * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]`
+ // * Key assignment:
+ // - Tablet 1 `[, apple) => {"a"}.`
+ // - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.`
+ // - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.`
+ // - Tablet 4 `[customer_2, other) => {"customer_2"}.`
+ // - Tablet 5 `[other, ) => {"other", "zz"}.`
+ repeated Split initial_splits = 4;
+}
+
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange][google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange]
+message DropRowRangeRequest {
+ // The unique name of the table on which to drop a range of rows.
+ // Values are of the form
+ // `projects/<project>/instances/<instance>/tables/<table>`.
+ string name = 1;
+
+ // Delete all rows or by prefix.
+ oneof target {
+ // Delete all rows that start with this row key prefix. Prefix cannot be
+ // zero length.
+ bytes row_key_prefix = 2;
+
+ // Delete all rows in the table. Setting this to false is a no-op.
+ bool delete_all_data_from_table = 3;
+ }
+}
+
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables]
+message ListTablesRequest {
+ // The unique name of the instance for which tables should be listed.
+ // Values are of the form `projects/<project>/instances/<instance>`.
+ string parent = 1;
+
+ // The view to be applied to the returned tables' fields.
+ // Defaults to `NAME_ONLY` if unspecified; no others are currently supported.
+ Table.View view = 2;
+
+ // The value of `next_page_token` returned by a previous call.
+ string page_token = 3;
+}
+
+// Response message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables]
+message ListTablesResponse {
+ // The tables present in the requested instance.
+ repeated Table tables = 1;
+
+ // Set if not all tables could be returned in a single response.
+ // Pass this value to `page_token` in another request to get the next
+ // page of results.
+ string next_page_token = 2;
+}
+
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.GetTable][google.bigtable.admin.v2.BigtableTableAdmin.GetTable]
+message GetTableRequest {
+ // The unique name of the requested table.
+ // Values are of the form
+ // `projects/<project>/instances/<instance>/tables/<table>`.
+ string name = 1;
+
+ // The view to be applied to the returned table's fields.
+ // Defaults to `SCHEMA_ONLY` if unspecified.
+ Table.View view = 2;
+}
+
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable][google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable]
+message DeleteTableRequest {
+ // The unique name of the table to be deleted.
+ // Values are of the form
+ // `projects/<project>/instances/<instance>/tables/<table>`.
+ string name = 1;
+}
+
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies][google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies]
+message ModifyColumnFamiliesRequest {
+ // A create, update, or delete of a particular column family.
+ message Modification {
+ // The ID of the column family to be modified.
+ string id = 1;
+
+ // Column familiy modifications.
+ oneof mod {
+ // Create a new column family with the specified schema, or fail if
+ // one already exists with the given ID.
+ ColumnFamily create = 2;
+
+ // Update an existing column family to the specified schema, or fail
+ // if no column family exists with the given ID.
+ ColumnFamily update = 3;
+
+ // Drop (delete) the column family with the given ID, or fail if no such
+ // family exists.
+ bool drop = 4;
+ }
+ }
+
+ // The unique name of the table whose families should be modified.
+ // Values are of the form
+ // `projects/<project>/instances/<instance>/tables/<table>`.
+ string name = 1;
+
+ // Modifications to be atomically applied to the specified table's families.
+ // Entries are applied in order, meaning that earlier modifications can be
+ // masked by later ones (in the case of repeated updates to the same family,
+ // for example).
+ repeated Modification modifications = 2;
+}
diff --git a/third_party/googleapis/google/bigtable/admin/v2/common.proto b/third_party/googleapis/google/bigtable/admin/v2/common.proto
new file mode 100644
index 0000000000..c6e2bb223b
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/v2/common.proto
@@ -0,0 +1,38 @@
+// Copyright 2016 Google Inc.
+//
+// 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/annotations.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/v2;admin";
+option java_multiple_files = true;
+option java_outer_classname = "CommonProto";
+option java_package = "com.google.bigtable.admin.v2";
+
+
+// Storage media types for persisting Bigtable data.
+enum StorageType {
+ // The user did not specify a storage type.
+ STORAGE_TYPE_UNSPECIFIED = 0;
+
+ // Flash (SSD) storage should be used.
+ SSD = 1;
+
+ // Magnetic drive (HDD) storage should be used.
+ HDD = 2;
+}
diff --git a/third_party/googleapis/google/bigtable/admin/v2/instance.proto b/third_party/googleapis/google/bigtable/admin/v2/instance.proto
new file mode 100644
index 0000000000..67921d6e15
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/v2/instance.proto
@@ -0,0 +1,130 @@
+// Copyright 2016 Google Inc.
+//
+// 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/annotations.proto";
+import "google/bigtable/admin/v2/common.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/v2;admin";
+option java_multiple_files = true;
+option java_outer_classname = "InstanceProto";
+option java_package = "com.google.bigtable.admin.v2";
+
+
+// A collection of Bigtable [Tables][google.bigtable.admin.v2.Table] and
+// the resources that serve them.
+// All tables in an instance are served from a single
+// [Cluster][google.bigtable.admin.v2.Cluster].
+message Instance {
+ // Possible states of an instance.
+ enum State {
+ // The state of the instance could not be determined.
+ STATE_NOT_KNOWN = 0;
+
+ // The instance has been successfully created and can serve requests
+ // to its tables.
+ READY = 1;
+
+ // The instance is currently being created, and may be destroyed
+ // if the creation process encounters an error.
+ CREATING = 2;
+ }
+
+ // The type of the instance.
+ enum Type {
+ // The type of the instance is unspecified. If set when creating an
+ // instance, a `PRODUCTION` instance will be created. If set when updating
+ // an instance, the type will be left unchanged.
+ TYPE_UNSPECIFIED = 0;
+
+ // An instance meant for production use. `serve_nodes` must be set
+ // on the cluster.
+ PRODUCTION = 1;
+ }
+
+ // (`OutputOnly`)
+ // The unique name of the instance. Values are of the form
+ // `projects/<project>/instances/[a-z][a-z0-9\\-]+[a-z0-9]`.
+ string name = 1;
+
+ // The descriptive name for this instance as it appears in UIs.
+ // Can be changed at any time, but should be kept globally unique
+ // to avoid confusion.
+ string display_name = 2;
+
+ // (`OutputOnly`)
+ // The current state of the instance.
+ State state = 3;
+
+ // The type of the instance. Defaults to `PRODUCTION`.
+ Type type = 4;
+}
+
+// A resizable group of nodes in a particular cloud location, capable
+// of serving all [Tables][google.bigtable.admin.v2.Table] in the parent
+// [Instance][google.bigtable.admin.v2.Instance].
+message Cluster {
+ // Possible states of a cluster.
+ enum State {
+ // The state of the cluster could not be determined.
+ STATE_NOT_KNOWN = 0;
+
+ // The cluster has been successfully created and is ready to serve requests.
+ READY = 1;
+
+ // The cluster is currently being created, and may be destroyed
+ // if the creation process encounters an error.
+ // A cluster may not be able to serve requests while being created.
+ CREATING = 2;
+
+ // The cluster is currently being resized, and may revert to its previous
+ // node count if the process encounters an error.
+ // A cluster is still capable of serving requests while being resized,
+ // but may exhibit performance as if its number of allocated nodes is
+ // between the starting and requested states.
+ RESIZING = 3;
+
+ // The cluster has no backing nodes. The data (tables) still
+ // exist, but no operations can be performed on the cluster.
+ DISABLED = 4;
+ }
+
+ // (`OutputOnly`)
+ // The unique name of the cluster. Values are of the form
+ // `projects/<project>/instances/<instance>/clusters/[a-z][-a-z0-9]*`.
+ string name = 1;
+
+ // (`CreationOnly`)
+ // The location where this cluster's nodes and storage reside. For best
+ // performance, clients should be located as close as possible to this cluster.
+ // Currently only zones are supported, so values should be of the form
+ // `projects/<project>/locations/<zone>`.
+ string location = 2;
+
+ // (`OutputOnly`)
+ // The current state of the cluster.
+ State state = 3;
+
+ // The number of nodes allocated to this cluster. More nodes enable higher
+ // throughput and more consistent performance.
+ int32 serve_nodes = 4;
+
+ // (`CreationOnly`)
+ // The type of storage used by this cluster to serve its
+ // parent instance's tables, unless explicitly overridden.
+ StorageType default_storage_type = 5;
+}
diff --git a/third_party/googleapis/google/bigtable/admin/v2/table.proto b/third_party/googleapis/google/bigtable/admin/v2/table.proto
new file mode 100644
index 0000000000..ce80571f0f
--- /dev/null
+++ b/third_party/googleapis/google/bigtable/admin/v2/table.proto
@@ -0,0 +1,118 @@
+// Copyright 2016 Google Inc.
+//
+// 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/annotations.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/v2;admin";
+option java_multiple_files = true;
+option java_outer_classname = "TableProto";
+option java_package = "com.google.bigtable.admin.v2";
+
+
+// A collection of user data indexed by row, column, and timestamp.
+// Each table is served using the resources of its parent cluster.
+message Table {
+ // 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;
+
+ // Populates all fields.
+ FULL = 4;
+ }
+
+ // (`OutputOnly`)
+ // 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`, `FULL`
+ string name = 1;
+
+ // (`CreationOnly`)
+ // The column families configured for this table, mapped by column family ID.
+ // Views: `SCHEMA_VIEW`, `FULL`
+ map<string, ColumnFamily> column_families = 3;
+
+ // (`CreationOnly`)
+ // The granularity (e.g. `MILLIS`, `MICROS`) 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;
+}
+
+// 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;
+}
+
+// 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;
+ }
+}