Skip to content

Commit 769bb24

Browse files
Google APIscopybara-github
authored andcommitted
feat: add SchemaBundles API
docs: improved comment formatting and product naming PiperOrigin-RevId: 774877252
1 parent 6268a51 commit 769bb24

File tree

3 files changed

+280
-8
lines changed

3 files changed

+280
-8
lines changed

google/bigtable/admin/v2/bigtable_table_admin.proto

Lines changed: 230 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ service BigtableTableAdmin {
389389
};
390390
}
391391

392-
// Gets the access control policy for a Table or Backup resource.
392+
// Gets the access control policy for a Bigtable resource.
393393
// Returns an empty policy if the resource exists but does not have a policy
394394
// set.
395395
rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
@@ -401,11 +401,19 @@ service BigtableTableAdmin {
401401
post: "/v2/{resource=projects/*/instances/*/clusters/*/backups/*}:getIamPolicy"
402402
body: "*"
403403
}
404+
additional_bindings {
405+
post: "/v2/{resource=projects/*/instances/*/tables/*/authorizedViews/*}:getIamPolicy"
406+
body: "*"
407+
}
408+
additional_bindings {
409+
post: "/v2/{resource=projects/*/instances/*/tables/*/schemaBundles/*}:getIamPolicy"
410+
body: "*"
411+
}
404412
};
405413
option (google.api.method_signature) = "resource";
406414
}
407415

408-
// Sets the access control policy on a Table or Backup resource.
416+
// Sets the access control policy on a Bigtable resource.
409417
// Replaces any existing policy.
410418
rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
411419
returns (google.iam.v1.Policy) {
@@ -416,11 +424,19 @@ service BigtableTableAdmin {
416424
post: "/v2/{resource=projects/*/instances/*/clusters/*/backups/*}:setIamPolicy"
417425
body: "*"
418426
}
427+
additional_bindings {
428+
post: "/v2/{resource=projects/*/instances/*/tables/*/authorizedViews/*}:setIamPolicy"
429+
body: "*"
430+
}
431+
additional_bindings {
432+
post: "/v2/{resource=projects/*/instances/*/tables/*/schemaBundles/*}:setIamPolicy"
433+
body: "*"
434+
}
419435
};
420436
option (google.api.method_signature) = "resource,policy";
421437
}
422438

423-
// Returns permissions that the caller has on the specified Table or Backup
439+
// Returns permissions that the caller has on the specified Bigtable
424440
// resource.
425441
rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
426442
returns (google.iam.v1.TestIamPermissionsResponse) {
@@ -431,9 +447,72 @@ service BigtableTableAdmin {
431447
post: "/v2/{resource=projects/*/instances/*/clusters/*/backups/*}:testIamPermissions"
432448
body: "*"
433449
}
450+
additional_bindings {
451+
post: "/v2/{resource=projects/*/instances/*/tables/*/authorizedViews/*}:testIamPermissions"
452+
body: "*"
453+
}
454+
additional_bindings {
455+
post: "/v2/{resource=projects/*/instances/*/tables/*/schemaBundles/*}:testIamPermissions"
456+
body: "*"
457+
}
434458
};
435459
option (google.api.method_signature) = "resource,permissions";
436460
}
461+
462+
// Creates a new schema bundle in the specified table.
463+
rpc CreateSchemaBundle(CreateSchemaBundleRequest)
464+
returns (google.longrunning.Operation) {
465+
option (google.api.http) = {
466+
post: "/v2/{parent=projects/*/instances/*/tables/*}/schemaBundles"
467+
body: "schema_bundle"
468+
};
469+
option (google.api.method_signature) =
470+
"parent,schema_bundle_id,schema_bundle";
471+
option (google.longrunning.operation_info) = {
472+
response_type: "SchemaBundle"
473+
metadata_type: "CreateSchemaBundleMetadata"
474+
};
475+
}
476+
477+
// Updates a schema bundle in the specified table.
478+
rpc UpdateSchemaBundle(UpdateSchemaBundleRequest)
479+
returns (google.longrunning.Operation) {
480+
option (google.api.http) = {
481+
patch: "/v2/{schema_bundle.name=projects/*/instances/*/tables/*/schemaBundles/*}"
482+
body: "schema_bundle"
483+
};
484+
option (google.api.method_signature) = "schema_bundle,update_mask";
485+
option (google.longrunning.operation_info) = {
486+
response_type: "SchemaBundle"
487+
metadata_type: "UpdateSchemaBundleMetadata"
488+
};
489+
}
490+
491+
// Gets metadata information about the specified schema bundle.
492+
rpc GetSchemaBundle(GetSchemaBundleRequest) returns (SchemaBundle) {
493+
option (google.api.http) = {
494+
get: "/v2/{name=projects/*/instances/*/tables/*/schemaBundles/*}"
495+
};
496+
option (google.api.method_signature) = "name";
497+
}
498+
499+
// Lists all schema bundles associated with the specified table.
500+
rpc ListSchemaBundles(ListSchemaBundlesRequest)
501+
returns (ListSchemaBundlesResponse) {
502+
option (google.api.http) = {
503+
get: "/v2/{parent=projects/*/instances/*/tables/*}/schemaBundles"
504+
};
505+
option (google.api.method_signature) = "parent";
506+
}
507+
508+
// Deletes a schema bundle in the specified table.
509+
rpc DeleteSchemaBundle(DeleteSchemaBundleRequest)
510+
returns (google.protobuf.Empty) {
511+
option (google.api.http) = {
512+
delete: "/v2/{name=projects/*/instances/*/tables/*/schemaBundles/*}"
513+
};
514+
option (google.api.method_signature) = "name";
515+
}
437516
}
438517

439518
// The request for
@@ -1307,7 +1386,8 @@ message CreateAuthorizedViewRequest {
13071386

13081387
// The metadata for the Operation returned by CreateAuthorizedView.
13091388
message CreateAuthorizedViewMetadata {
1310-
// The request that prompted the initiation of this CreateInstance operation.
1389+
// The request that prompted the initiation of this CreateAuthorizedView
1390+
// operation.
13111391
CreateAuthorizedViewRequest original_request = 1;
13121392

13131393
// The time at which the original request was received.
@@ -1344,8 +1424,8 @@ message ListAuthorizedViewsRequest {
13441424
// Optional. The value of `next_page_token` returned by a previous call.
13451425
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
13461426

1347-
// Optional. The resource_view to be applied to the returned views' fields.
1348-
// Default to NAME_ONLY.
1427+
// Optional. The resource_view to be applied to the returned AuthorizedViews'
1428+
// fields. Default to NAME_ONLY.
13491429
AuthorizedView.ResponseView view = 4 [(google.api.field_behavior) = OPTIONAL];
13501430
}
13511431

@@ -1384,8 +1464,8 @@ message GetAuthorizedViewRequest {
13841464
message UpdateAuthorizedViewRequest {
13851465
// Required. The AuthorizedView to update. The `name` in `authorized_view` is
13861466
// used to identify the AuthorizedView. AuthorizedView name must in this
1387-
// format
1388-
// projects/<project>/instances/<instance>/tables/<table>/authorizedViews/<authorized_view>
1467+
// format:
1468+
// `projects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}`.
13891469
AuthorizedView authorized_view = 1 [(google.api.field_behavior) = REQUIRED];
13901470

13911471
// Optional. The list of fields to update.
@@ -1436,3 +1516,145 @@ message DeleteAuthorizedViewRequest {
14361516
// returned.
14371517
string etag = 2 [(google.api.field_behavior) = OPTIONAL];
14381518
}
1519+
1520+
// The request for
1521+
// [CreateSchemaBundle][google.bigtable.admin.v2.BigtableTableAdmin.CreateSchemaBundle].
1522+
message CreateSchemaBundleRequest {
1523+
// Required. The parent resource where this schema bundle will be created.
1524+
// Values are of the form
1525+
// `projects/{project}/instances/{instance}/tables/{table}`.
1526+
string parent = 1 [
1527+
(google.api.field_behavior) = REQUIRED,
1528+
(google.api.resource_reference) = {
1529+
type: "bigtableadmin.googleapis.com/Table"
1530+
}
1531+
];
1532+
1533+
// Required. The unique ID to use for the schema bundle, which will become the
1534+
// final component of the schema bundle's resource name.
1535+
string schema_bundle_id = 2 [(google.api.field_behavior) = REQUIRED];
1536+
1537+
// Required. The schema bundle to create.
1538+
SchemaBundle schema_bundle = 3 [(google.api.field_behavior) = REQUIRED];
1539+
}
1540+
1541+
// The metadata for the Operation returned by
1542+
// [CreateSchemaBundle][google.bigtable.admin.v2.BigtableTableAdmin.CreateSchemaBundle].
1543+
message CreateSchemaBundleMetadata {
1544+
// The unique name identifying this schema bundle.
1545+
// Values are of the form
1546+
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
1547+
string name = 1;
1548+
1549+
// The time at which this operation started.
1550+
google.protobuf.Timestamp start_time = 2;
1551+
1552+
// If set, the time at which this operation finished or was canceled.
1553+
google.protobuf.Timestamp end_time = 3;
1554+
}
1555+
1556+
// The request for
1557+
// [UpdateSchemaBundle][google.bigtable.admin.v2.BigtableTableAdmin.UpdateSchemaBundle].
1558+
message UpdateSchemaBundleRequest {
1559+
// Required. The schema bundle to update.
1560+
//
1561+
// The schema bundle's `name` field is used to identify the schema bundle to
1562+
// update. Values are of the form
1563+
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
1564+
SchemaBundle schema_bundle = 1 [(google.api.field_behavior) = REQUIRED];
1565+
1566+
// Optional. The list of fields to update.
1567+
google.protobuf.FieldMask update_mask = 2
1568+
[(google.api.field_behavior) = OPTIONAL];
1569+
1570+
// Optional. If set, ignore the safety checks when updating the Schema Bundle.
1571+
// The safety checks are:
1572+
// - The new Schema Bundle is backwards compatible with the existing Schema
1573+
// Bundle.
1574+
bool ignore_warnings = 3 [(google.api.field_behavior) = OPTIONAL];
1575+
}
1576+
1577+
// The metadata for the Operation returned by
1578+
// [UpdateSchemaBundle][google.bigtable.admin.v2.BigtableTableAdmin.UpdateSchemaBundle].
1579+
message UpdateSchemaBundleMetadata {
1580+
// The unique name identifying this schema bundle.
1581+
// Values are of the form
1582+
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
1583+
string name = 1;
1584+
1585+
// The time at which this operation started.
1586+
google.protobuf.Timestamp start_time = 2;
1587+
1588+
// If set, the time at which this operation finished or was canceled.
1589+
google.protobuf.Timestamp end_time = 3;
1590+
}
1591+
1592+
// The request for
1593+
// [GetSchemaBundle][google.bigtable.admin.v2.BigtableTableAdmin.GetSchemaBundle].
1594+
message GetSchemaBundleRequest {
1595+
// Required. The unique name of the schema bundle to retrieve.
1596+
// Values are of the form
1597+
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
1598+
string name = 1 [
1599+
(google.api.field_behavior) = REQUIRED,
1600+
(google.api.resource_reference) = {
1601+
type: "bigtableadmin.googleapis.com/SchemaBundle"
1602+
}
1603+
];
1604+
}
1605+
1606+
// The request for
1607+
// [ListSchemaBundles][google.bigtable.admin.v2.BigtableTableAdmin.ListSchemaBundles].
1608+
message ListSchemaBundlesRequest {
1609+
// Required. The parent, which owns this collection of schema bundles.
1610+
// Values are of the form
1611+
// `projects/{project}/instances/{instance}/tables/{table}`.
1612+
string parent = 1 [
1613+
(google.api.field_behavior) = REQUIRED,
1614+
(google.api.resource_reference) = {
1615+
child_type: "bigtableadmin.googleapis.com/SchemaBundle"
1616+
}
1617+
];
1618+
1619+
// The maximum number of schema bundles to return. If the value is positive,
1620+
// the server may return at most this value. If unspecified, the server will
1621+
// return the maximum allowed page size.
1622+
int32 page_size = 2;
1623+
1624+
// A page token, received from a previous `ListSchemaBundles` call.
1625+
// Provide this to retrieve the subsequent page.
1626+
//
1627+
// When paginating, all other parameters provided to `ListSchemaBundles` must
1628+
// match the call that provided the page token.
1629+
string page_token = 3;
1630+
}
1631+
1632+
// The response for
1633+
// [ListSchemaBundles][google.bigtable.admin.v2.BigtableTableAdmin.ListSchemaBundles].
1634+
message ListSchemaBundlesResponse {
1635+
// The schema bundles from the specified table.
1636+
repeated SchemaBundle schema_bundles = 1;
1637+
1638+
// A token, which can be sent as `page_token` to retrieve the next page.
1639+
// If this field is omitted, there are no subsequent pages.
1640+
string next_page_token = 2;
1641+
}
1642+
1643+
// The request for
1644+
// [DeleteSchemaBundle][google.bigtable.admin.v2.BigtableTableAdmin.DeleteSchemaBundle].
1645+
message DeleteSchemaBundleRequest {
1646+
// Required. The unique name of the schema bundle to delete.
1647+
// Values are of the form
1648+
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
1649+
string name = 1 [
1650+
(google.api.field_behavior) = REQUIRED,
1651+
(google.api.resource_reference) = {
1652+
type: "bigtableadmin.googleapis.com/SchemaBundle"
1653+
}
1654+
];
1655+
1656+
// Optional. The etag of the schema bundle.
1657+
// If this is provided, it must match the server's etag. The server
1658+
// returns an ABORTED error on a mismatched etag.
1659+
string etag = 2 [(google.api.field_behavior) = OPTIONAL];
1660+
}

google/bigtable/admin/v2/bigtableadmin_v2.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ types:
1616
- name: google.bigtable.admin.v2.CreateInstanceMetadata
1717
- name: google.bigtable.admin.v2.CreateLogicalViewMetadata
1818
- name: google.bigtable.admin.v2.CreateMaterializedViewMetadata
19+
- name: google.bigtable.admin.v2.CreateSchemaBundleMetadata
1920
- name: google.bigtable.admin.v2.CreateTableFromSnapshotMetadata
2021
- name: google.bigtable.admin.v2.OptimizeRestoredTableMetadata
2122
- name: google.bigtable.admin.v2.PartialUpdateClusterMetadata
@@ -27,6 +28,7 @@ types:
2728
- name: google.bigtable.admin.v2.UpdateClusterMetadata
2829
- name: google.bigtable.admin.v2.UpdateInstanceMetadata
2930
- name: google.bigtable.admin.v2.UpdateLogicalViewMetadata
31+
- name: google.bigtable.admin.v2.UpdateSchemaBundleMetadata
3032
- name: google.bigtable.admin.v2.UpdateTableMetadata
3133

3234
documentation:

google/bigtable/admin/v2/table.proto

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,3 +637,51 @@ enum RestoreSourceType {
637637
// A backup was used as the source of the restore.
638638
BACKUP = 1;
639639
}
640+
641+
// Represents a protobuf schema.
642+
message ProtoSchema {
643+
// Required. Contains a protobuf-serialized
644+
// [google.protobuf.FileDescriptorSet](https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/descriptor.proto),
645+
// which could include multiple proto files.
646+
// To generate it, [install](https://grpc.io/docs/protoc-installation/) and
647+
// run `protoc` with
648+
// `--include_imports` and `--descriptor_set_out`. For example, to generate
649+
// for moon/shot/app.proto, run
650+
// ```
651+
// $protoc --proto_path=/app_path --proto_path=/lib_path \
652+
// --include_imports \
653+
// --descriptor_set_out=descriptors.pb \
654+
// moon/shot/app.proto
655+
// ```
656+
// For more details, see protobuffer [self
657+
// description](https://developers.google.com/protocol-buffers/docs/techniques#self-description).
658+
bytes proto_descriptors = 2 [(google.api.field_behavior) = REQUIRED];
659+
}
660+
661+
// A named collection of related schemas.
662+
message SchemaBundle {
663+
option (google.api.resource) = {
664+
type: "bigtableadmin.googleapis.com/SchemaBundle"
665+
pattern: "projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}"
666+
plural: "schemaBundles"
667+
singular: "schemaBundle"
668+
};
669+
670+
// Identifier. The unique name identifying this schema bundle.
671+
// Values are of the form
672+
// `projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}`
673+
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
674+
675+
// The type of this schema bundle. The oneof case cannot change after
676+
// creation.
677+
oneof type {
678+
// Schema for Protobufs.
679+
ProtoSchema proto_schema = 2;
680+
}
681+
682+
// Optional. The etag for this schema bundle.
683+
// This may be sent on update and delete requests to ensure the
684+
// client has an up-to-date value before proceeding. The server
685+
// returns an ABORTED error on a mismatched etag.
686+
string etag = 3 [(google.api.field_behavior) = OPTIONAL];
687+
}

0 commit comments

Comments
 (0)