xref: /aosp_15_r20/external/googleapis/google/bigtable/admin/v2/bigtable_instance_admin.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.bigtable.admin.v2;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/bigtable/admin/v2/instance.proto";
24import "google/iam/v1/iam_policy.proto";
25import "google/iam/v1/policy.proto";
26import "google/longrunning/operations.proto";
27import "google/protobuf/empty.proto";
28import "google/protobuf/field_mask.proto";
29import "google/protobuf/timestamp.proto";
30
31option csharp_namespace = "Google.Cloud.Bigtable.Admin.V2";
32option go_package = "google.golang.org/genproto/googleapis/bigtable/admin/v2;admin";
33option java_multiple_files = true;
34option java_outer_classname = "BigtableInstanceAdminProto";
35option java_package = "com.google.bigtable.admin.v2";
36option php_namespace = "Google\\Cloud\\Bigtable\\Admin\\V2";
37option ruby_package = "Google::Cloud::Bigtable::Admin::V2";
38
39// Service for creating, configuring, and deleting Cloud Bigtable Instances and
40// Clusters. Provides access to the Instance and Cluster schemas only, not the
41// tables' metadata or data stored in those tables.
42service BigtableInstanceAdmin {
43  option (google.api.default_host) = "bigtableadmin.googleapis.com";
44  option (google.api.oauth_scopes) =
45      "https://www.googleapis.com/auth/bigtable.admin,"
46      "https://www.googleapis.com/auth/bigtable.admin.cluster,"
47      "https://www.googleapis.com/auth/bigtable.admin.instance,"
48      "https://www.googleapis.com/auth/cloud-bigtable.admin,"
49      "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster,"
50      "https://www.googleapis.com/auth/cloud-platform,"
51      "https://www.googleapis.com/auth/cloud-platform.read-only";
52
53  // Create an instance within a project.
54  //
55  // Note that exactly one of Cluster.serve_nodes and
56  // Cluster.cluster_config.cluster_autoscaling_config can be set. If
57  // serve_nodes is set to non-zero, then the cluster is manually scaled. If
58  // cluster_config.cluster_autoscaling_config is non-empty, then autoscaling is
59  // enabled.
60  rpc CreateInstance(CreateInstanceRequest)
61      returns (google.longrunning.Operation) {
62    option (google.api.http) = {
63      post: "/v2/{parent=projects/*}/instances"
64      body: "*"
65    };
66    option (google.api.method_signature) =
67        "parent,instance_id,instance,clusters";
68    option (google.longrunning.operation_info) = {
69      response_type: "Instance"
70      metadata_type: "CreateInstanceMetadata"
71    };
72  }
73
74  // Gets information about an instance.
75  rpc GetInstance(GetInstanceRequest) returns (Instance) {
76    option (google.api.http) = {
77      get: "/v2/{name=projects/*/instances/*}"
78    };
79    option (google.api.method_signature) = "name";
80  }
81
82  // Lists information about instances in a project.
83  rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) {
84    option (google.api.http) = {
85      get: "/v2/{parent=projects/*}/instances"
86    };
87    option (google.api.method_signature) = "parent";
88  }
89
90  // Updates an instance within a project. This method updates only the display
91  // name and type for an Instance. To update other Instance properties, such as
92  // labels, use PartialUpdateInstance.
93  rpc UpdateInstance(Instance) returns (Instance) {
94    option (google.api.http) = {
95      put: "/v2/{name=projects/*/instances/*}"
96      body: "*"
97    };
98  }
99
100  // Partially updates an instance within a project. This method can modify all
101  // fields of an Instance and is the preferred way to update an Instance.
102  rpc PartialUpdateInstance(PartialUpdateInstanceRequest)
103      returns (google.longrunning.Operation) {
104    option (google.api.http) = {
105      patch: "/v2/{instance.name=projects/*/instances/*}"
106      body: "instance"
107    };
108    option (google.api.method_signature) = "instance,update_mask";
109    option (google.longrunning.operation_info) = {
110      response_type: "Instance"
111      metadata_type: "UpdateInstanceMetadata"
112    };
113  }
114
115  // Delete an instance from a project.
116  rpc DeleteInstance(DeleteInstanceRequest) returns (google.protobuf.Empty) {
117    option (google.api.http) = {
118      delete: "/v2/{name=projects/*/instances/*}"
119    };
120    option (google.api.method_signature) = "name";
121  }
122
123  // Creates a cluster within an instance.
124  //
125  // Note that exactly one of Cluster.serve_nodes and
126  // Cluster.cluster_config.cluster_autoscaling_config can be set. If
127  // serve_nodes is set to non-zero, then the cluster is manually scaled. If
128  // cluster_config.cluster_autoscaling_config is non-empty, then autoscaling is
129  // enabled.
130  rpc CreateCluster(CreateClusterRequest)
131      returns (google.longrunning.Operation) {
132    option (google.api.http) = {
133      post: "/v2/{parent=projects/*/instances/*}/clusters"
134      body: "cluster"
135    };
136    option (google.api.method_signature) = "parent,cluster_id,cluster";
137    option (google.longrunning.operation_info) = {
138      response_type: "Cluster"
139      metadata_type: "CreateClusterMetadata"
140    };
141  }
142
143  // Gets information about a cluster.
144  rpc GetCluster(GetClusterRequest) returns (Cluster) {
145    option (google.api.http) = {
146      get: "/v2/{name=projects/*/instances/*/clusters/*}"
147    };
148    option (google.api.method_signature) = "name";
149  }
150
151  // Lists information about clusters in an instance.
152  rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
153    option (google.api.http) = {
154      get: "/v2/{parent=projects/*/instances/*}/clusters"
155    };
156    option (google.api.method_signature) = "parent";
157  }
158
159  // Updates a cluster within an instance.
160  //
161  // Note that UpdateCluster does not support updating
162  // cluster_config.cluster_autoscaling_config. In order to update it, you
163  // must use PartialUpdateCluster.
164  rpc UpdateCluster(Cluster) returns (google.longrunning.Operation) {
165    option (google.api.http) = {
166      put: "/v2/{name=projects/*/instances/*/clusters/*}"
167      body: "*"
168    };
169    option (google.longrunning.operation_info) = {
170      response_type: "Cluster"
171      metadata_type: "UpdateClusterMetadata"
172    };
173  }
174
175  // Partially updates a cluster within a project. This method is the preferred
176  // way to update a Cluster.
177  //
178  // To enable and update autoscaling, set
179  // cluster_config.cluster_autoscaling_config. When autoscaling is enabled,
180  // serve_nodes is treated as an OUTPUT_ONLY field, meaning that updates to it
181  // are ignored. Note that an update cannot simultaneously set serve_nodes to
182  // non-zero and cluster_config.cluster_autoscaling_config to non-empty, and
183  // also specify both in the update_mask.
184  //
185  // To disable autoscaling, clear cluster_config.cluster_autoscaling_config,
186  // and explicitly set a serve_node count via the update_mask.
187  rpc PartialUpdateCluster(PartialUpdateClusterRequest)
188      returns (google.longrunning.Operation) {
189    option (google.api.http) = {
190      patch: "/v2/{cluster.name=projects/*/instances/*/clusters/*}"
191      body: "cluster"
192    };
193    option (google.api.method_signature) = "cluster,update_mask";
194    option (google.longrunning.operation_info) = {
195      response_type: "Cluster"
196      metadata_type: "PartialUpdateClusterMetadata"
197    };
198  }
199
200  // Deletes a cluster from an instance.
201  rpc DeleteCluster(DeleteClusterRequest) returns (google.protobuf.Empty) {
202    option (google.api.http) = {
203      delete: "/v2/{name=projects/*/instances/*/clusters/*}"
204    };
205    option (google.api.method_signature) = "name";
206  }
207
208  // Creates an app profile within an instance.
209  rpc CreateAppProfile(CreateAppProfileRequest) returns (AppProfile) {
210    option (google.api.http) = {
211      post: "/v2/{parent=projects/*/instances/*}/appProfiles"
212      body: "app_profile"
213    };
214    option (google.api.method_signature) = "parent,app_profile_id,app_profile";
215  }
216
217  // Gets information about an app profile.
218  rpc GetAppProfile(GetAppProfileRequest) returns (AppProfile) {
219    option (google.api.http) = {
220      get: "/v2/{name=projects/*/instances/*/appProfiles/*}"
221    };
222    option (google.api.method_signature) = "name";
223  }
224
225  // Lists information about app profiles in an instance.
226  rpc ListAppProfiles(ListAppProfilesRequest)
227      returns (ListAppProfilesResponse) {
228    option (google.api.http) = {
229      get: "/v2/{parent=projects/*/instances/*}/appProfiles"
230    };
231    option (google.api.method_signature) = "parent";
232  }
233
234  // Updates an app profile within an instance.
235  rpc UpdateAppProfile(UpdateAppProfileRequest)
236      returns (google.longrunning.Operation) {
237    option (google.api.http) = {
238      patch: "/v2/{app_profile.name=projects/*/instances/*/appProfiles/*}"
239      body: "app_profile"
240    };
241    option (google.api.method_signature) = "app_profile,update_mask";
242    option (google.longrunning.operation_info) = {
243      response_type: "AppProfile"
244      metadata_type: "UpdateAppProfileMetadata"
245    };
246  }
247
248  // Deletes an app profile from an instance.
249  rpc DeleteAppProfile(DeleteAppProfileRequest)
250      returns (google.protobuf.Empty) {
251    option (google.api.http) = {
252      delete: "/v2/{name=projects/*/instances/*/appProfiles/*}"
253    };
254    option (google.api.method_signature) = "name";
255  }
256
257  // Gets the access control policy for an instance resource. Returns an empty
258  // policy if an instance exists but does not have a policy set.
259  rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
260      returns (google.iam.v1.Policy) {
261    option (google.api.http) = {
262      post: "/v2/{resource=projects/*/instances/*}:getIamPolicy"
263      body: "*"
264    };
265    option (google.api.method_signature) = "resource";
266  }
267
268  // Sets the access control policy on an instance resource. Replaces any
269  // existing policy.
270  rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
271      returns (google.iam.v1.Policy) {
272    option (google.api.http) = {
273      post: "/v2/{resource=projects/*/instances/*}:setIamPolicy"
274      body: "*"
275    };
276    option (google.api.method_signature) = "resource,policy";
277  }
278
279  // Returns permissions that the caller has on the specified instance resource.
280  rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
281      returns (google.iam.v1.TestIamPermissionsResponse) {
282    option (google.api.http) = {
283      post: "/v2/{resource=projects/*/instances/*}:testIamPermissions"
284      body: "*"
285    };
286    option (google.api.method_signature) = "resource,permissions";
287  }
288
289  // Lists hot tablets in a cluster, within the time range provided. Hot
290  // tablets are ordered based on CPU usage.
291  rpc ListHotTablets(ListHotTabletsRequest) returns (ListHotTabletsResponse) {
292    option (google.api.http) = {
293      get: "/v2/{parent=projects/*/instances/*/clusters/*}/hotTablets"
294    };
295    option (google.api.method_signature) = "parent";
296  }
297}
298
299// Request message for BigtableInstanceAdmin.CreateInstance.
300message CreateInstanceRequest {
301  // Required. The unique name of the project in which to create the new
302  // instance. Values are of the form `projects/{project}`.
303  string parent = 1 [
304    (google.api.field_behavior) = REQUIRED,
305    (google.api.resource_reference) = {
306      type: "cloudresourcemanager.googleapis.com/Project"
307    }
308  ];
309
310  // Required. The ID to be used when referring to the new instance within its
311  // project, e.g., just `myinstance` rather than
312  // `projects/myproject/instances/myinstance`.
313  string instance_id = 2 [(google.api.field_behavior) = REQUIRED];
314
315  // Required. The instance to create.
316  // Fields marked `OutputOnly` must be left blank.
317  Instance instance = 3 [(google.api.field_behavior) = REQUIRED];
318
319  // Required. The clusters to be created within the instance, mapped by desired
320  // cluster ID, e.g., just `mycluster` rather than
321  // `projects/myproject/instances/myinstance/clusters/mycluster`.
322  // Fields marked `OutputOnly` must be left blank.
323  // Currently, at most four clusters can be specified.
324  map<string, Cluster> clusters = 4 [(google.api.field_behavior) = REQUIRED];
325}
326
327// Request message for BigtableInstanceAdmin.GetInstance.
328message GetInstanceRequest {
329  // Required. The unique name of the requested instance. Values are of the form
330  // `projects/{project}/instances/{instance}`.
331  string name = 1 [
332    (google.api.field_behavior) = REQUIRED,
333    (google.api.resource_reference) = {
334      type: "bigtableadmin.googleapis.com/Instance"
335    }
336  ];
337}
338
339// Request message for BigtableInstanceAdmin.ListInstances.
340message ListInstancesRequest {
341  // Required. The unique name of the project for which a list of instances is
342  // requested. Values are of the form `projects/{project}`.
343  string parent = 1 [
344    (google.api.field_behavior) = REQUIRED,
345    (google.api.resource_reference) = {
346      type: "cloudresourcemanager.googleapis.com/Project"
347    }
348  ];
349
350  // DEPRECATED: This field is unused and ignored.
351  string page_token = 2;
352}
353
354// Response message for BigtableInstanceAdmin.ListInstances.
355message ListInstancesResponse {
356  // The list of requested instances.
357  repeated Instance instances = 1;
358
359  // Locations from which Instance information could not be retrieved,
360  // due to an outage or some other transient condition.
361  // Instances whose Clusters are all in one of the failed locations
362  // may be missing from `instances`, and Instances with at least one
363  // Cluster in a failed location may only have partial information returned.
364  // Values are of the form `projects/<project>/locations/<zone_id>`
365  repeated string failed_locations = 2;
366
367  // DEPRECATED: This field is unused and ignored.
368  string next_page_token = 3;
369}
370
371// Request message for BigtableInstanceAdmin.PartialUpdateInstance.
372message PartialUpdateInstanceRequest {
373  // Required. The Instance which will (partially) replace the current value.
374  Instance instance = 1 [(google.api.field_behavior) = REQUIRED];
375
376  // Required. The subset of Instance fields which should be replaced.
377  // Must be explicitly set.
378  google.protobuf.FieldMask update_mask = 2
379      [(google.api.field_behavior) = REQUIRED];
380}
381
382// Request message for BigtableInstanceAdmin.DeleteInstance.
383message DeleteInstanceRequest {
384  // Required. The unique name of the instance to be deleted.
385  // Values are of the form `projects/{project}/instances/{instance}`.
386  string name = 1 [
387    (google.api.field_behavior) = REQUIRED,
388    (google.api.resource_reference) = {
389      type: "bigtableadmin.googleapis.com/Instance"
390    }
391  ];
392}
393
394// Request message for BigtableInstanceAdmin.CreateCluster.
395message CreateClusterRequest {
396  // Required. The unique name of the instance in which to create the new
397  // cluster. Values are of the form `projects/{project}/instances/{instance}`.
398  string parent = 1 [
399    (google.api.field_behavior) = REQUIRED,
400    (google.api.resource_reference) = {
401      type: "bigtableadmin.googleapis.com/Instance"
402    }
403  ];
404
405  // Required. The ID to be used when referring to the new cluster within its
406  // instance, e.g., just `mycluster` rather than
407  // `projects/myproject/instances/myinstance/clusters/mycluster`.
408  string cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
409
410  // Required. The cluster to be created.
411  // Fields marked `OutputOnly` must be left blank.
412  Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED];
413}
414
415// Request message for BigtableInstanceAdmin.GetCluster.
416message GetClusterRequest {
417  // Required. The unique name of the requested cluster. Values are of the form
418  // `projects/{project}/instances/{instance}/clusters/{cluster}`.
419  string name = 1 [
420    (google.api.field_behavior) = REQUIRED,
421    (google.api.resource_reference) = {
422      type: "bigtableadmin.googleapis.com/Cluster"
423    }
424  ];
425}
426
427// Request message for BigtableInstanceAdmin.ListClusters.
428message ListClustersRequest {
429  // Required. The unique name of the instance for which a list of clusters is
430  // requested. Values are of the form
431  // `projects/{project}/instances/{instance}`. Use `{instance} = '-'` to list
432  // Clusters for all Instances in a project, e.g.,
433  // `projects/myproject/instances/-`.
434  string parent = 1 [
435    (google.api.field_behavior) = REQUIRED,
436    (google.api.resource_reference) = {
437      type: "bigtableadmin.googleapis.com/Instance"
438    }
439  ];
440
441  // DEPRECATED: This field is unused and ignored.
442  string page_token = 2;
443}
444
445// Response message for BigtableInstanceAdmin.ListClusters.
446message ListClustersResponse {
447  // The list of requested clusters.
448  repeated Cluster clusters = 1;
449
450  // Locations from which Cluster information could not be retrieved,
451  // due to an outage or some other transient condition.
452  // Clusters from these locations may be missing from `clusters`,
453  // or may only have partial information returned.
454  // Values are of the form `projects/<project>/locations/<zone_id>`
455  repeated string failed_locations = 2;
456
457  // DEPRECATED: This field is unused and ignored.
458  string next_page_token = 3;
459}
460
461// Request message for BigtableInstanceAdmin.DeleteCluster.
462message DeleteClusterRequest {
463  // Required. The unique name of the cluster to be deleted. Values are of the
464  // form `projects/{project}/instances/{instance}/clusters/{cluster}`.
465  string name = 1 [
466    (google.api.field_behavior) = REQUIRED,
467    (google.api.resource_reference) = {
468      type: "bigtableadmin.googleapis.com/Cluster"
469    }
470  ];
471}
472
473// The metadata for the Operation returned by CreateInstance.
474message CreateInstanceMetadata {
475  // The request that prompted the initiation of this CreateInstance operation.
476  CreateInstanceRequest original_request = 1;
477
478  // The time at which the original request was received.
479  google.protobuf.Timestamp request_time = 2;
480
481  // The time at which the operation failed or was completed successfully.
482  google.protobuf.Timestamp finish_time = 3;
483}
484
485// The metadata for the Operation returned by UpdateInstance.
486message UpdateInstanceMetadata {
487  // The request that prompted the initiation of this UpdateInstance operation.
488  PartialUpdateInstanceRequest original_request = 1;
489
490  // The time at which the original request was received.
491  google.protobuf.Timestamp request_time = 2;
492
493  // The time at which the operation failed or was completed successfully.
494  google.protobuf.Timestamp finish_time = 3;
495}
496
497// The metadata for the Operation returned by CreateCluster.
498message CreateClusterMetadata {
499  // Progress info for copying a table's data to the new cluster.
500  message TableProgress {
501    enum State {
502      STATE_UNSPECIFIED = 0;
503
504      // The table has not yet begun copying to the new cluster.
505      PENDING = 1;
506
507      // The table is actively being copied to the new cluster.
508      COPYING = 2;
509
510      // The table has been fully copied to the new cluster.
511      COMPLETED = 3;
512
513      // The table was deleted before it finished copying to the new cluster.
514      // Note that tables deleted after completion will stay marked as
515      // COMPLETED, not CANCELLED.
516      CANCELLED = 4;
517    }
518
519    // Estimate of the size of the table to be copied.
520    int64 estimated_size_bytes = 2;
521
522    // Estimate of the number of bytes copied so far for this table.
523    // This will eventually reach 'estimated_size_bytes' unless the table copy
524    // is CANCELLED.
525    int64 estimated_copied_bytes = 3;
526
527    State state = 4;
528  }
529
530  // The request that prompted the initiation of this CreateCluster operation.
531  CreateClusterRequest original_request = 1;
532
533  // The time at which the original request was received.
534  google.protobuf.Timestamp request_time = 2;
535
536  // The time at which the operation failed or was completed successfully.
537  google.protobuf.Timestamp finish_time = 3;
538
539  // Keys: the full `name` of each table that existed in the instance when
540  // CreateCluster was first called, i.e.
541  // `projects/<project>/instances/<instance>/tables/<table>`. Any table added
542  // to the instance by a later API call will be created in the new cluster by
543  // that API call, not this one.
544  //
545  // Values: information on how much of a table's data has been copied to the
546  // newly-created cluster so far.
547  map<string, TableProgress> tables = 4;
548}
549
550// The metadata for the Operation returned by UpdateCluster.
551message UpdateClusterMetadata {
552  // The request that prompted the initiation of this UpdateCluster operation.
553  Cluster original_request = 1;
554
555  // The time at which the original request was received.
556  google.protobuf.Timestamp request_time = 2;
557
558  // The time at which the operation failed or was completed successfully.
559  google.protobuf.Timestamp finish_time = 3;
560}
561
562// The metadata for the Operation returned by PartialUpdateCluster.
563message PartialUpdateClusterMetadata {
564  // The time at which the original request was received.
565  google.protobuf.Timestamp request_time = 1;
566
567  // The time at which the operation failed or was completed successfully.
568  google.protobuf.Timestamp finish_time = 2;
569
570  // The original request for PartialUpdateCluster.
571  PartialUpdateClusterRequest original_request = 3;
572}
573
574// Request message for BigtableInstanceAdmin.PartialUpdateCluster.
575message PartialUpdateClusterRequest {
576  // Required. The Cluster which contains the partial updates to be applied,
577  // subject to the update_mask.
578  Cluster cluster = 1 [(google.api.field_behavior) = REQUIRED];
579
580  // Required. The subset of Cluster fields which should be replaced.
581  google.protobuf.FieldMask update_mask = 2
582      [(google.api.field_behavior) = REQUIRED];
583}
584
585// Request message for BigtableInstanceAdmin.CreateAppProfile.
586message CreateAppProfileRequest {
587  // Required. The unique name of the instance in which to create the new app
588  // profile. Values are of the form `projects/{project}/instances/{instance}`.
589  string parent = 1 [
590    (google.api.field_behavior) = REQUIRED,
591    (google.api.resource_reference) = {
592      type: "bigtableadmin.googleapis.com/Instance"
593    }
594  ];
595
596  // Required. The ID to be used when referring to the new app profile within
597  // its instance, e.g., just `myprofile` rather than
598  // `projects/myproject/instances/myinstance/appProfiles/myprofile`.
599  string app_profile_id = 2 [(google.api.field_behavior) = REQUIRED];
600
601  // Required. The app profile to be created.
602  // Fields marked `OutputOnly` will be ignored.
603  AppProfile app_profile = 3 [(google.api.field_behavior) = REQUIRED];
604
605  // If true, ignore safety checks when creating the app profile.
606  bool ignore_warnings = 4;
607}
608
609// Request message for BigtableInstanceAdmin.GetAppProfile.
610message GetAppProfileRequest {
611  // Required. The unique name of the requested app profile. Values are of the
612  // form `projects/{project}/instances/{instance}/appProfiles/{app_profile}`.
613  string name = 1 [
614    (google.api.field_behavior) = REQUIRED,
615    (google.api.resource_reference) = {
616      type: "bigtableadmin.googleapis.com/AppProfile"
617    }
618  ];
619}
620
621// Request message for BigtableInstanceAdmin.ListAppProfiles.
622message ListAppProfilesRequest {
623  // Required. The unique name of the instance for which a list of app profiles
624  // is requested. Values are of the form
625  // `projects/{project}/instances/{instance}`.
626  // Use `{instance} = '-'` to list AppProfiles for all Instances in a project,
627  // e.g., `projects/myproject/instances/-`.
628  string parent = 1 [
629    (google.api.field_behavior) = REQUIRED,
630    (google.api.resource_reference) = {
631      type: "bigtableadmin.googleapis.com/Instance"
632    }
633  ];
634
635  // Maximum number of results per page.
636  //
637  // A page_size of zero lets the server choose the number of items to return.
638  // A page_size which is strictly positive will return at most that many items.
639  // A negative page_size will cause an error.
640  //
641  // Following the first request, subsequent paginated calls are not required
642  // to pass a page_size. If a page_size is set in subsequent calls, it must
643  // match the page_size given in the first request.
644  int32 page_size = 3;
645
646  // The value of `next_page_token` returned by a previous call.
647  string page_token = 2;
648}
649
650// Response message for BigtableInstanceAdmin.ListAppProfiles.
651message ListAppProfilesResponse {
652  // The list of requested app profiles.
653  repeated AppProfile app_profiles = 1;
654
655  // Set if not all app profiles could be returned in a single response.
656  // Pass this value to `page_token` in another request to get the next
657  // page of results.
658  string next_page_token = 2;
659
660  // Locations from which AppProfile information could not be retrieved,
661  // due to an outage or some other transient condition.
662  // AppProfiles from these locations may be missing from `app_profiles`.
663  // Values are of the form `projects/<project>/locations/<zone_id>`
664  repeated string failed_locations = 3;
665}
666
667// Request message for BigtableInstanceAdmin.UpdateAppProfile.
668message UpdateAppProfileRequest {
669  // Required. The app profile which will (partially) replace the current value.
670  AppProfile app_profile = 1 [(google.api.field_behavior) = REQUIRED];
671
672  // Required. The subset of app profile fields which should be replaced.
673  // If unset, all fields will be replaced.
674  google.protobuf.FieldMask update_mask = 2
675      [(google.api.field_behavior) = REQUIRED];
676
677  // If true, ignore safety checks when updating the app profile.
678  bool ignore_warnings = 3;
679}
680
681// Request message for BigtableInstanceAdmin.DeleteAppProfile.
682message DeleteAppProfileRequest {
683  // Required. The unique name of the app profile to be deleted. Values are of
684  // the form
685  // `projects/{project}/instances/{instance}/appProfiles/{app_profile}`.
686  string name = 1 [
687    (google.api.field_behavior) = REQUIRED,
688    (google.api.resource_reference) = {
689      type: "bigtableadmin.googleapis.com/AppProfile"
690    }
691  ];
692
693  // Required. If true, ignore safety checks when deleting the app profile.
694  bool ignore_warnings = 2 [(google.api.field_behavior) = REQUIRED];
695}
696
697// The metadata for the Operation returned by UpdateAppProfile.
698message UpdateAppProfileMetadata {}
699
700// Request message for BigtableInstanceAdmin.ListHotTablets.
701message ListHotTabletsRequest {
702  // Required. The cluster name to list hot tablets.
703  // Value is in the following form:
704  // `projects/{project}/instances/{instance}/clusters/{cluster}`.
705  string parent = 1 [
706    (google.api.field_behavior) = REQUIRED,
707    (google.api.resource_reference) = {
708      type: "bigtableadmin.googleapis.com/Cluster"
709    }
710  ];
711
712  // The start time to list hot tablets. The hot tablets in the response will
713  // have start times between the requested start time and end time. Start time
714  // defaults to Now if it is unset, and end time defaults to Now - 24 hours if
715  // it is unset. The start time should be less than the end time, and the
716  // maximum allowed time range between start time and end time is 48 hours.
717  // Start time and end time should have values between Now and Now - 14 days.
718  google.protobuf.Timestamp start_time = 2;
719
720  // The end time to list hot tablets.
721  google.protobuf.Timestamp end_time = 3;
722
723  // Maximum number of results per page.
724  //
725  // A page_size that is empty or zero lets the server choose the number of
726  // items to return. A page_size which is strictly positive will return at most
727  // that many items. A negative page_size will cause an error.
728  //
729  // Following the first request, subsequent paginated calls do not need a
730  // page_size field. If a page_size is set in subsequent calls, it must match
731  // the page_size given in the first request.
732  int32 page_size = 4;
733
734  // The value of `next_page_token` returned by a previous call.
735  string page_token = 5;
736}
737
738// Response message for BigtableInstanceAdmin.ListHotTablets.
739message ListHotTabletsResponse {
740  // List of hot tablets in the tables of the requested cluster that fall
741  // within the requested time range. Hot tablets are ordered by node cpu usage
742  // percent. If there are multiple hot tablets that correspond to the same
743  // tablet within a 15-minute interval, only the hot tablet with the highest
744  // node cpu usage will be included in the response.
745  repeated HotTablet hot_tablets = 1;
746
747  // Set if not all hot tablets could be returned in a single response.
748  // Pass this value to `page_token` in another request to get the next
749  // page of results.
750  string next_page_token = 2;
751}
752