| // 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; |
| } |