--- /dev/null
+// Copyright 2017 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: "*"
+ };
+ }
+}