diff --git a/magefiles/gen.go b/magefiles/gen.go index 414ee35..ce39b53 100644 --- a/magefiles/gen.go +++ b/magefiles/gen.go @@ -24,7 +24,7 @@ func (g Gen) All() error { const ( ProtoPath = "proto/authzed/api" BufRepository = "buf.build/authzed/api" - BufTag = "aa9a74cba13a9e97c419bb5b9c8ef7c0cc7eb13e" + BufTag = "80f6ef8af583b1a4de4ab7957e7f0a6e6ddf2904" ) // Proto runs proto codegen diff --git a/proto/apidocs.swagger.json b/proto/apidocs.swagger.json index 2013d42..447db73 100644 --- a/proto/apidocs.swagger.json +++ b/proto/apidocs.swagger.json @@ -114,7 +114,7 @@ }, "/v1/experimental/permissions/computable": { "post": { - "summary": "EXPERIMENTAL: ComputablePermissions is an API that allows clients to request the set of\npermissions that compute based off a set of relations. For example, if a schema has a relation\n`viewer` and a permission `view` defined as `permission view = viewer + editor`, then the\ncomputable permissions for the relation `viewer` will include `view`.", + "summary": "EXPERIMENTAL: ComputablePermissions is an API that allows clients to request the set of\npermissions that compute based off a relation. For example, if a schema has a relation\n`viewer` and a permission `view` defined as `permission view = viewer + editor`, then the\ncomputable permissions for the relation `viewer` will include `view`.", "operationId": "ExperimentalService_ExperimentalComputablePermissions", "responses": { "200": { @@ -147,7 +147,7 @@ }, "/v1/experimental/permissions/dependent": { "post": { - "summary": "EXPERIMENTAL: DependentRelations is an API that allows clients to request the set of\nrelations that used to compute a permission, recursively. It is the inverse of the\nComputablePermissions API.", + "summary": "EXPERIMENTAL: DependentRelations is an API that allows clients to request the set of\nrelations and permissions that used to compute a permission, recursively. It is the\ninverse of the ComputablePermissions API.", "operationId": "ExperimentalService_ExperimentalDependentRelations", "responses": { "200": { @@ -1715,18 +1715,6 @@ }, "description": "ExpPermission is the representation of a permission in the schema." }, - "v1ExpPermissionReference": { - "type": "object", - "properties": { - "definitionName": { - "type": "string" - }, - "permissionName": { - "type": "string" - } - }, - "description": "ExpPermissionReference is a reference to a permission in the schema." - }, "v1ExpRelation": { "type": "object", "properties": { @@ -1757,9 +1745,12 @@ }, "relationName": { "type": "string" + }, + "isPermission": { + "type": "boolean" } }, - "description": "ExpRelationReference is a reference to a relation in the schema." + "description": "ExpRelationReference is a reference to a relation or permission in the schema." }, "v1ExpRelationSubjectTypeChange": { "type": "object", @@ -1918,12 +1909,11 @@ "consistency": { "$ref": "#/definitions/v1Consistency" }, - "relations": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1ExpRelationReference" - } + "definitionName": { + "type": "string" + }, + "relationName": { + "type": "string" }, "optionalDefinitionNameFilter": { "type": "string", @@ -1938,7 +1928,7 @@ "type": "array", "items": { "type": "object", - "$ref": "#/definitions/v1ExpPermissionReference" + "$ref": "#/definitions/v1ExpRelationReference" } }, "readAt": { @@ -1953,8 +1943,11 @@ "consistency": { "$ref": "#/definitions/v1Consistency" }, - "permission": { - "$ref": "#/definitions/v1ExpPermissionReference" + "definitionName": { + "type": "string" + }, + "permissionName": { + "type": "string" } } }, diff --git a/proto/authzed/api/v0/zz_generated.version.go b/proto/authzed/api/v0/zz_generated.version.go index 0d4a5c5..abea808 100644 --- a/proto/authzed/api/v0/zz_generated.version.go +++ b/proto/authzed/api/v0/zz_generated.version.go @@ -2,5 +2,5 @@ package v0 const ( BufRepository = "buf.build/authzed/api" - BufTag = "aa9a74cba13a9e97c419bb5b9c8ef7c0cc7eb13e" + BufTag = "80f6ef8af583b1a4de4ab7957e7f0a6e6ddf2904" ) diff --git a/proto/authzed/api/v1/experimental_service.pb.go b/proto/authzed/api/v1/experimental_service.pb.go index 302fba9..4c74db4 100644 --- a/proto/authzed/api/v1/experimental_service.pb.go +++ b/proto/authzed/api/v1/experimental_service.pb.go @@ -1266,12 +1266,13 @@ type ExperimentalComputablePermissionsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Consistency *Consistency `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"` - Relations []*ExpRelationReference `protobuf:"bytes,2,rep,name=relations,proto3" json:"relations,omitempty"` + Consistency *Consistency `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"` + DefinitionName string `protobuf:"bytes,2,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"` + RelationName string `protobuf:"bytes,3,opt,name=relation_name,json=relationName,proto3" json:"relation_name,omitempty"` // optional_definition_name_match is a prefix that is matched against the definition name(s) // for the permissions returned. // If not specified, will be ignored. - OptionalDefinitionNameFilter string `protobuf:"bytes,3,opt,name=optional_definition_name_filter,json=optionalDefinitionNameFilter,proto3" json:"optional_definition_name_filter,omitempty"` + OptionalDefinitionNameFilter string `protobuf:"bytes,4,opt,name=optional_definition_name_filter,json=optionalDefinitionNameFilter,proto3" json:"optional_definition_name_filter,omitempty"` } func (x *ExperimentalComputablePermissionsRequest) Reset() { @@ -1313,11 +1314,18 @@ func (x *ExperimentalComputablePermissionsRequest) GetConsistency() *Consistency return nil } -func (x *ExperimentalComputablePermissionsRequest) GetRelations() []*ExpRelationReference { +func (x *ExperimentalComputablePermissionsRequest) GetDefinitionName() string { if x != nil { - return x.Relations + return x.DefinitionName } - return nil + return "" +} + +func (x *ExperimentalComputablePermissionsRequest) GetRelationName() string { + if x != nil { + return x.RelationName + } + return "" } func (x *ExperimentalComputablePermissionsRequest) GetOptionalDefinitionNameFilter() string { @@ -1327,7 +1335,7 @@ func (x *ExperimentalComputablePermissionsRequest) GetOptionalDefinitionNameFilt return "" } -// ExpRelationReference is a reference to a relation in the schema. +// ExpRelationReference is a reference to a relation or permission in the schema. type ExpRelationReference struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1335,6 +1343,7 @@ type ExpRelationReference struct { DefinitionName string `protobuf:"bytes,1,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"` RelationName string `protobuf:"bytes,2,opt,name=relation_name,json=relationName,proto3" json:"relation_name,omitempty"` + IsPermission bool `protobuf:"varint,3,opt,name=is_permission,json=isPermission,proto3" json:"is_permission,omitempty"` } func (x *ExpRelationReference) Reset() { @@ -1383,60 +1392,11 @@ func (x *ExpRelationReference) GetRelationName() string { return "" } -// ExpPermissionReference is a reference to a permission in the schema. -type ExpPermissionReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DefinitionName string `protobuf:"bytes,1,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"` - PermissionName string `protobuf:"bytes,2,opt,name=permission_name,json=permissionName,proto3" json:"permission_name,omitempty"` -} - -func (x *ExpPermissionReference) Reset() { - *x = ExpPermissionReference{} - if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ExpPermissionReference) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpPermissionReference) ProtoMessage() {} - -func (x *ExpPermissionReference) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpPermissionReference.ProtoReflect.Descriptor instead. -func (*ExpPermissionReference) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{20} -} - -func (x *ExpPermissionReference) GetDefinitionName() string { +func (x *ExpRelationReference) GetIsPermission() bool { if x != nil { - return x.DefinitionName + return x.IsPermission } - return "" -} - -func (x *ExpPermissionReference) GetPermissionName() string { - if x != nil { - return x.PermissionName - } - return "" + return false } type ExperimentalComputablePermissionsResponse struct { @@ -1444,7 +1404,7 @@ type ExperimentalComputablePermissionsResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Permissions []*ExpPermissionReference `protobuf:"bytes,1,rep,name=permissions,proto3" json:"permissions,omitempty"` + Permissions []*ExpRelationReference `protobuf:"bytes,1,rep,name=permissions,proto3" json:"permissions,omitempty"` // read_at is the ZedToken at which the schema was read. ReadAt *ZedToken `protobuf:"bytes,2,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"` } @@ -1452,7 +1412,7 @@ type ExperimentalComputablePermissionsResponse struct { func (x *ExperimentalComputablePermissionsResponse) Reset() { *x = ExperimentalComputablePermissionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[21] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1465,7 +1425,7 @@ func (x *ExperimentalComputablePermissionsResponse) String() string { func (*ExperimentalComputablePermissionsResponse) ProtoMessage() {} func (x *ExperimentalComputablePermissionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[21] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1478,10 +1438,10 @@ func (x *ExperimentalComputablePermissionsResponse) ProtoReflect() protoreflect. // Deprecated: Use ExperimentalComputablePermissionsResponse.ProtoReflect.Descriptor instead. func (*ExperimentalComputablePermissionsResponse) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{21} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{20} } -func (x *ExperimentalComputablePermissionsResponse) GetPermissions() []*ExpPermissionReference { +func (x *ExperimentalComputablePermissionsResponse) GetPermissions() []*ExpRelationReference { if x != nil { return x.Permissions } @@ -1500,14 +1460,15 @@ type ExperimentalDependentRelationsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Consistency *Consistency `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"` - Permission *ExpPermissionReference `protobuf:"bytes,2,opt,name=permission,proto3" json:"permission,omitempty"` + Consistency *Consistency `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"` + DefinitionName string `protobuf:"bytes,2,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"` + PermissionName string `protobuf:"bytes,3,opt,name=permission_name,json=permissionName,proto3" json:"permission_name,omitempty"` } func (x *ExperimentalDependentRelationsRequest) Reset() { *x = ExperimentalDependentRelationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[22] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1520,7 +1481,7 @@ func (x *ExperimentalDependentRelationsRequest) String() string { func (*ExperimentalDependentRelationsRequest) ProtoMessage() {} func (x *ExperimentalDependentRelationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[22] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1533,7 +1494,7 @@ func (x *ExperimentalDependentRelationsRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ExperimentalDependentRelationsRequest.ProtoReflect.Descriptor instead. func (*ExperimentalDependentRelationsRequest) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{22} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{21} } func (x *ExperimentalDependentRelationsRequest) GetConsistency() *Consistency { @@ -1543,11 +1504,18 @@ func (x *ExperimentalDependentRelationsRequest) GetConsistency() *Consistency { return nil } -func (x *ExperimentalDependentRelationsRequest) GetPermission() *ExpPermissionReference { +func (x *ExperimentalDependentRelationsRequest) GetDefinitionName() string { if x != nil { - return x.Permission + return x.DefinitionName } - return nil + return "" +} + +func (x *ExperimentalDependentRelationsRequest) GetPermissionName() string { + if x != nil { + return x.PermissionName + } + return "" } type ExperimentalDependentRelationsResponse struct { @@ -1563,7 +1531,7 @@ type ExperimentalDependentRelationsResponse struct { func (x *ExperimentalDependentRelationsResponse) Reset() { *x = ExperimentalDependentRelationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[23] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1544,7 @@ func (x *ExperimentalDependentRelationsResponse) String() string { func (*ExperimentalDependentRelationsResponse) ProtoMessage() {} func (x *ExperimentalDependentRelationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[23] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1557,7 @@ func (x *ExperimentalDependentRelationsResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use ExperimentalDependentRelationsResponse.ProtoReflect.Descriptor instead. func (*ExperimentalDependentRelationsResponse) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{23} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{22} } func (x *ExperimentalDependentRelationsResponse) GetRelations() []*ExpRelationReference { @@ -1618,7 +1586,7 @@ type ExperimentalDiffSchemaRequest struct { func (x *ExperimentalDiffSchemaRequest) Reset() { *x = ExperimentalDiffSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[24] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1599,7 @@ func (x *ExperimentalDiffSchemaRequest) String() string { func (*ExperimentalDiffSchemaRequest) ProtoMessage() {} func (x *ExperimentalDiffSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[24] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1612,7 @@ func (x *ExperimentalDiffSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExperimentalDiffSchemaRequest.ProtoReflect.Descriptor instead. func (*ExperimentalDiffSchemaRequest) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{24} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{23} } func (x *ExperimentalDiffSchemaRequest) GetConsistency() *Consistency { @@ -1674,7 +1642,7 @@ type ExperimentalDiffSchemaResponse struct { func (x *ExperimentalDiffSchemaResponse) Reset() { *x = ExperimentalDiffSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[25] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1687,7 +1655,7 @@ func (x *ExperimentalDiffSchemaResponse) String() string { func (*ExperimentalDiffSchemaResponse) ProtoMessage() {} func (x *ExperimentalDiffSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[25] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1700,7 +1668,7 @@ func (x *ExperimentalDiffSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExperimentalDiffSchemaResponse.ProtoReflect.Descriptor instead. func (*ExperimentalDiffSchemaResponse) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{25} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{24} } func (x *ExperimentalDiffSchemaResponse) GetDiffs() []*ExpSchemaDiff { @@ -1729,7 +1697,7 @@ type ExpRelationSubjectTypeChange struct { func (x *ExpRelationSubjectTypeChange) Reset() { *x = ExpRelationSubjectTypeChange{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[26] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1742,7 +1710,7 @@ func (x *ExpRelationSubjectTypeChange) String() string { func (*ExpRelationSubjectTypeChange) ProtoMessage() {} func (x *ExpRelationSubjectTypeChange) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[26] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1755,7 +1723,7 @@ func (x *ExpRelationSubjectTypeChange) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpRelationSubjectTypeChange.ProtoReflect.Descriptor instead. func (*ExpRelationSubjectTypeChange) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{26} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{25} } func (x *ExpRelationSubjectTypeChange) GetRelation() *ExpRelation { @@ -1784,7 +1752,7 @@ type ExpCaveatParameterTypeChange struct { func (x *ExpCaveatParameterTypeChange) Reset() { *x = ExpCaveatParameterTypeChange{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[27] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1797,7 +1765,7 @@ func (x *ExpCaveatParameterTypeChange) String() string { func (*ExpCaveatParameterTypeChange) ProtoMessage() {} func (x *ExpCaveatParameterTypeChange) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[27] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1810,7 +1778,7 @@ func (x *ExpCaveatParameterTypeChange) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpCaveatParameterTypeChange.ProtoReflect.Descriptor instead. func (*ExpCaveatParameterTypeChange) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{27} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{26} } func (x *ExpCaveatParameterTypeChange) GetParameter() *ExpCaveatParameter { @@ -1860,7 +1828,7 @@ type ExpSchemaDiff struct { func (x *ExpSchemaDiff) Reset() { *x = ExpSchemaDiff{} if protoimpl.UnsafeEnabled { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[28] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1873,7 +1841,7 @@ func (x *ExpSchemaDiff) String() string { func (*ExpSchemaDiff) ProtoMessage() {} func (x *ExpSchemaDiff) ProtoReflect() protoreflect.Message { - mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[28] + mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1886,7 +1854,7 @@ func (x *ExpSchemaDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpSchemaDiff.ProtoReflect.Descriptor instead. func (*ExpSchemaDiff) Descriptor() ([]byte, []int) { - return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{28} + return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{27} } func (m *ExpSchemaDiff) GetDiff() isExpSchemaDiff_Diff { @@ -2385,298 +2353,294 @@ var file_authzed_api_v1_experimental_service_proto_rawDesc = []byte{ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf4, 0x01, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x28, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0b, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x1c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x89, + 0x01, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0x0a, 0x29, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x5a, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x64, 0x41, 0x74, 0x22, 0xb8, 0x01, 0x0a, 0x25, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, + 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, + 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9f, + 0x01, 0x0a, 0x26, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, + 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, - 0x1f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x22, 0x64, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x45, 0x78, - 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, - 0x0f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x29, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x75, 0x74, 0x68, - 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, - 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x5a, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x41, - 0x74, 0x22, 0xae, 0x01, 0x0a, 0x25, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, + 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x78, 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0x9f, 0x01, 0x0a, 0x26, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, - 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x64, 0x41, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, - 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, - 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x22, 0x88, 0x01, 0x0a, 0x1e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, - 0x69, 0x66, 0x66, 0x52, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x75, - 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x65, 0x64, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x41, 0x74, 0x22, 0xab, 0x01, - 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x37, - 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x1c, - 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x09, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x23, - 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x22, 0xa0, 0x0d, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x0f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x65, - 0x64, 0x12, 0x4e, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x64, 0x12, 0x64, 0x0a, 0x1e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, - 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x44, 0x65, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1b, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, - 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x1c, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x6d, 0x0a, 0x1b, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, - 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x5a, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x41, 0x74, + 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, + 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, + 0x01, 0x0a, 0x1e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, + 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x33, 0x0a, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x78, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x69, 0x66, 0x66, 0x52, + 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, + 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x41, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x1d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x10, 0x70, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x11, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1b, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, - 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x75, 0x74, - 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x43, - 0x61, 0x76, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x41, - 0x64, 0x64, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0e, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, - 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, - 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x76, 0x65, 0x61, - 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x1a, 0x63, 0x61, 0x76, 0x65, - 0x61, 0x74, 0x5f, 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, - 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, - 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x17, 0x63, 0x61, 0x76, 0x65, 0x61, - 0x74, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x65, 0x78, 0x70, - 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x11, 0x63, 0x61, - 0x76, 0x65, 0x61, 0x74, 0x45, 0x78, 0x70, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, - 0x5a, 0x0a, 0x16, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x14, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x18, 0x63, - 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x73, + 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x43, + 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x22, + 0xa0, 0x0d, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x69, 0x66, + 0x66, 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, + 0x12, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x64, 0x0a, + 0x1e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x63, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x10, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x1c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x12, 0x6d, 0x0a, 0x1b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x64, 0x64, + 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x41, 0x64, 0x64, + 0x65, 0x64, 0x12, 0x71, 0x0a, 0x1d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x52, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x78, 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x65, + 0x64, 0x12, 0x4e, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x48, 0x00, 0x52, 0x16, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x1d, 0x63, + 0x78, 0x70, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x64, 0x12, 0x64, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, + 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x41, 0x64, 0x64, 0x65, 0x64, + 0x12, 0x42, 0x0a, 0x0e, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, + 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x1a, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x64, + 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, + 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x17, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x44, 0x6f, 0x63, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x4b, + 0x0a, 0x13, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x11, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, + 0x45, 0x78, 0x70, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x16, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x48, 0x00, 0x52, 0x1a, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x42, 0x06, - 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66, 0x32, 0x94, 0x0a, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb2, - 0x01, 0x0a, 0x17, 0x42, 0x75, 0x6c, 0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x75, 0x74, - 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, - 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x75, 0x74, - 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, - 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x69, 0x6d, 0x70, 0x6f, 0x72, - 0x74, 0x28, 0x01, 0x12, 0xb2, 0x01, 0x0a, 0x17, 0x42, 0x75, 0x6c, 0x6b, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, - 0x2e, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, - 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x62, 0x75, 0x6c, 0x6b, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x30, 0x01, 0x12, 0xae, 0x01, 0x0a, 0x13, 0x42, 0x75, 0x6c, - 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x2a, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, + 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x14, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x18, 0x63, 0x61, 0x76, 0x65, 0x61, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, + 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, + 0x16, 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x1d, 0x63, 0x61, 0x76, 0x65, 0x61, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x78, 0x70, 0x43, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1a, + 0x63, 0x61, 0x76, 0x65, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x69, + 0x66, 0x66, 0x32, 0x94, 0x0a, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb2, 0x01, 0x0a, 0x17, 0x42, + 0x75, 0x6c, 0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, + 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x73, 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x28, 0x01, 0x12, + 0xb2, 0x01, 0x0a, 0x17, 0x42, 0x75, 0x6c, 0x6b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, + 0x6b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, + 0x6b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x30, 0x01, 0x12, 0xae, 0x01, 0x0a, 0x13, 0x42, 0x75, 0x6c, 0x6b, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x02, 0x01, 0x12, 0xab, 0x01, 0x0a, 0x19, 0x45, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x30, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, - 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, - 0x74, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0xcc, 0x01, 0x0a, 0x21, 0x45, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, - 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, - 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0xc2, 0x01, 0x0a, 0x1e, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, + 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x6c, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, + 0x75, 0x6c, 0x6b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x88, 0x02, 0x01, 0x12, 0xab, 0x01, 0x0a, 0x19, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x30, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, + 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0xcc, 0x01, 0x0a, 0x21, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x36, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x65, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, - 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x16, - 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x66, 0x66, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x2d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0xc2, 0x01, 0x0a, 0x1e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, - 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x4a, 0x0a, - 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, - 0x64, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, - 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, + 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, + 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x12, 0x2d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, + 0x44, 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, + 0x69, 0x66, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x64, + 0x69, 0x66, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x4a, 0x0a, 0x12, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x50, + 0x01, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2d, 0x67, 0x6f, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x65, 0x64, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2691,7 +2655,7 @@ func file_authzed_api_v1_experimental_service_proto_rawDescGZIP() []byte { return file_authzed_api_v1_experimental_service_proto_rawDescData } -var file_authzed_api_v1_experimental_service_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_authzed_api_v1_experimental_service_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_authzed_api_v1_experimental_service_proto_goTypes = []interface{}{ (*BulkCheckPermissionRequest)(nil), // 0: authzed.api.v1.BulkCheckPermissionRequest (*BulkCheckPermissionRequestItem)(nil), // 1: authzed.api.v1.BulkCheckPermissionRequestItem @@ -2713,107 +2677,104 @@ var file_authzed_api_v1_experimental_service_proto_goTypes = []interface{}{ (*ExpPermission)(nil), // 17: authzed.api.v1.ExpPermission (*ExperimentalComputablePermissionsRequest)(nil), // 18: authzed.api.v1.ExperimentalComputablePermissionsRequest (*ExpRelationReference)(nil), // 19: authzed.api.v1.ExpRelationReference - (*ExpPermissionReference)(nil), // 20: authzed.api.v1.ExpPermissionReference - (*ExperimentalComputablePermissionsResponse)(nil), // 21: authzed.api.v1.ExperimentalComputablePermissionsResponse - (*ExperimentalDependentRelationsRequest)(nil), // 22: authzed.api.v1.ExperimentalDependentRelationsRequest - (*ExperimentalDependentRelationsResponse)(nil), // 23: authzed.api.v1.ExperimentalDependentRelationsResponse - (*ExperimentalDiffSchemaRequest)(nil), // 24: authzed.api.v1.ExperimentalDiffSchemaRequest - (*ExperimentalDiffSchemaResponse)(nil), // 25: authzed.api.v1.ExperimentalDiffSchemaResponse - (*ExpRelationSubjectTypeChange)(nil), // 26: authzed.api.v1.ExpRelationSubjectTypeChange - (*ExpCaveatParameterTypeChange)(nil), // 27: authzed.api.v1.ExpCaveatParameterTypeChange - (*ExpSchemaDiff)(nil), // 28: authzed.api.v1.ExpSchemaDiff - (*Consistency)(nil), // 29: authzed.api.v1.Consistency - (*ObjectReference)(nil), // 30: authzed.api.v1.ObjectReference - (*SubjectReference)(nil), // 31: authzed.api.v1.SubjectReference - (*structpb.Struct)(nil), // 32: google.protobuf.Struct - (*ZedToken)(nil), // 33: authzed.api.v1.ZedToken - (*status.Status)(nil), // 34: google.rpc.Status - (CheckPermissionResponse_Permissionship)(0), // 35: authzed.api.v1.CheckPermissionResponse.Permissionship - (*PartialCaveatInfo)(nil), // 36: authzed.api.v1.PartialCaveatInfo - (*Relationship)(nil), // 37: authzed.api.v1.Relationship - (*Cursor)(nil), // 38: authzed.api.v1.Cursor - (*RelationshipFilter)(nil), // 39: authzed.api.v1.RelationshipFilter + (*ExperimentalComputablePermissionsResponse)(nil), // 20: authzed.api.v1.ExperimentalComputablePermissionsResponse + (*ExperimentalDependentRelationsRequest)(nil), // 21: authzed.api.v1.ExperimentalDependentRelationsRequest + (*ExperimentalDependentRelationsResponse)(nil), // 22: authzed.api.v1.ExperimentalDependentRelationsResponse + (*ExperimentalDiffSchemaRequest)(nil), // 23: authzed.api.v1.ExperimentalDiffSchemaRequest + (*ExperimentalDiffSchemaResponse)(nil), // 24: authzed.api.v1.ExperimentalDiffSchemaResponse + (*ExpRelationSubjectTypeChange)(nil), // 25: authzed.api.v1.ExpRelationSubjectTypeChange + (*ExpCaveatParameterTypeChange)(nil), // 26: authzed.api.v1.ExpCaveatParameterTypeChange + (*ExpSchemaDiff)(nil), // 27: authzed.api.v1.ExpSchemaDiff + (*Consistency)(nil), // 28: authzed.api.v1.Consistency + (*ObjectReference)(nil), // 29: authzed.api.v1.ObjectReference + (*SubjectReference)(nil), // 30: authzed.api.v1.SubjectReference + (*structpb.Struct)(nil), // 31: google.protobuf.Struct + (*ZedToken)(nil), // 32: authzed.api.v1.ZedToken + (*status.Status)(nil), // 33: google.rpc.Status + (CheckPermissionResponse_Permissionship)(0), // 34: authzed.api.v1.CheckPermissionResponse.Permissionship + (*PartialCaveatInfo)(nil), // 35: authzed.api.v1.PartialCaveatInfo + (*Relationship)(nil), // 36: authzed.api.v1.Relationship + (*Cursor)(nil), // 37: authzed.api.v1.Cursor + (*RelationshipFilter)(nil), // 38: authzed.api.v1.RelationshipFilter } var file_authzed_api_v1_experimental_service_proto_depIdxs = []int32{ - 29, // 0: authzed.api.v1.BulkCheckPermissionRequest.consistency:type_name -> authzed.api.v1.Consistency + 28, // 0: authzed.api.v1.BulkCheckPermissionRequest.consistency:type_name -> authzed.api.v1.Consistency 1, // 1: authzed.api.v1.BulkCheckPermissionRequest.items:type_name -> authzed.api.v1.BulkCheckPermissionRequestItem - 30, // 2: authzed.api.v1.BulkCheckPermissionRequestItem.resource:type_name -> authzed.api.v1.ObjectReference - 31, // 3: authzed.api.v1.BulkCheckPermissionRequestItem.subject:type_name -> authzed.api.v1.SubjectReference - 32, // 4: authzed.api.v1.BulkCheckPermissionRequestItem.context:type_name -> google.protobuf.Struct - 33, // 5: authzed.api.v1.BulkCheckPermissionResponse.checked_at:type_name -> authzed.api.v1.ZedToken + 29, // 2: authzed.api.v1.BulkCheckPermissionRequestItem.resource:type_name -> authzed.api.v1.ObjectReference + 30, // 3: authzed.api.v1.BulkCheckPermissionRequestItem.subject:type_name -> authzed.api.v1.SubjectReference + 31, // 4: authzed.api.v1.BulkCheckPermissionRequestItem.context:type_name -> google.protobuf.Struct + 32, // 5: authzed.api.v1.BulkCheckPermissionResponse.checked_at:type_name -> authzed.api.v1.ZedToken 3, // 6: authzed.api.v1.BulkCheckPermissionResponse.pairs:type_name -> authzed.api.v1.BulkCheckPermissionPair 1, // 7: authzed.api.v1.BulkCheckPermissionPair.request:type_name -> authzed.api.v1.BulkCheckPermissionRequestItem 4, // 8: authzed.api.v1.BulkCheckPermissionPair.item:type_name -> authzed.api.v1.BulkCheckPermissionResponseItem - 34, // 9: authzed.api.v1.BulkCheckPermissionPair.error:type_name -> google.rpc.Status - 35, // 10: authzed.api.v1.BulkCheckPermissionResponseItem.permissionship:type_name -> authzed.api.v1.CheckPermissionResponse.Permissionship - 36, // 11: authzed.api.v1.BulkCheckPermissionResponseItem.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo - 37, // 12: authzed.api.v1.BulkImportRelationshipsRequest.relationships:type_name -> authzed.api.v1.Relationship - 29, // 13: authzed.api.v1.BulkExportRelationshipsRequest.consistency:type_name -> authzed.api.v1.Consistency - 38, // 14: authzed.api.v1.BulkExportRelationshipsRequest.optional_cursor:type_name -> authzed.api.v1.Cursor - 39, // 15: authzed.api.v1.BulkExportRelationshipsRequest.optional_relationship_filter:type_name -> authzed.api.v1.RelationshipFilter - 38, // 16: authzed.api.v1.BulkExportRelationshipsResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor - 37, // 17: authzed.api.v1.BulkExportRelationshipsResponse.relationships:type_name -> authzed.api.v1.Relationship - 29, // 18: authzed.api.v1.ExperimentalReflectSchemaRequest.consistency:type_name -> authzed.api.v1.Consistency + 33, // 9: authzed.api.v1.BulkCheckPermissionPair.error:type_name -> google.rpc.Status + 34, // 10: authzed.api.v1.BulkCheckPermissionResponseItem.permissionship:type_name -> authzed.api.v1.CheckPermissionResponse.Permissionship + 35, // 11: authzed.api.v1.BulkCheckPermissionResponseItem.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo + 36, // 12: authzed.api.v1.BulkImportRelationshipsRequest.relationships:type_name -> authzed.api.v1.Relationship + 28, // 13: authzed.api.v1.BulkExportRelationshipsRequest.consistency:type_name -> authzed.api.v1.Consistency + 37, // 14: authzed.api.v1.BulkExportRelationshipsRequest.optional_cursor:type_name -> authzed.api.v1.Cursor + 38, // 15: authzed.api.v1.BulkExportRelationshipsRequest.optional_relationship_filter:type_name -> authzed.api.v1.RelationshipFilter + 37, // 16: authzed.api.v1.BulkExportRelationshipsResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor + 36, // 17: authzed.api.v1.BulkExportRelationshipsResponse.relationships:type_name -> authzed.api.v1.Relationship + 28, // 18: authzed.api.v1.ExperimentalReflectSchemaRequest.consistency:type_name -> authzed.api.v1.Consistency 11, // 19: authzed.api.v1.ExperimentalReflectSchemaRequest.optional_filters:type_name -> authzed.api.v1.ExpSchemaFilter 12, // 20: authzed.api.v1.ExperimentalReflectSchemaResponse.definitions:type_name -> authzed.api.v1.ExpDefinition 13, // 21: authzed.api.v1.ExperimentalReflectSchemaResponse.caveats:type_name -> authzed.api.v1.ExpCaveat - 33, // 22: authzed.api.v1.ExperimentalReflectSchemaResponse.read_at:type_name -> authzed.api.v1.ZedToken + 32, // 22: authzed.api.v1.ExperimentalReflectSchemaResponse.read_at:type_name -> authzed.api.v1.ZedToken 15, // 23: authzed.api.v1.ExpDefinition.relations:type_name -> authzed.api.v1.ExpRelation 17, // 24: authzed.api.v1.ExpDefinition.permissions:type_name -> authzed.api.v1.ExpPermission 14, // 25: authzed.api.v1.ExpCaveat.parameters:type_name -> authzed.api.v1.ExpCaveatParameter 16, // 26: authzed.api.v1.ExpRelation.subject_types:type_name -> authzed.api.v1.ExpTypeReference - 29, // 27: authzed.api.v1.ExperimentalComputablePermissionsRequest.consistency:type_name -> authzed.api.v1.Consistency - 19, // 28: authzed.api.v1.ExperimentalComputablePermissionsRequest.relations:type_name -> authzed.api.v1.ExpRelationReference - 20, // 29: authzed.api.v1.ExperimentalComputablePermissionsResponse.permissions:type_name -> authzed.api.v1.ExpPermissionReference - 33, // 30: authzed.api.v1.ExperimentalComputablePermissionsResponse.read_at:type_name -> authzed.api.v1.ZedToken - 29, // 31: authzed.api.v1.ExperimentalDependentRelationsRequest.consistency:type_name -> authzed.api.v1.Consistency - 20, // 32: authzed.api.v1.ExperimentalDependentRelationsRequest.permission:type_name -> authzed.api.v1.ExpPermissionReference - 19, // 33: authzed.api.v1.ExperimentalDependentRelationsResponse.relations:type_name -> authzed.api.v1.ExpRelationReference - 33, // 34: authzed.api.v1.ExperimentalDependentRelationsResponse.read_at:type_name -> authzed.api.v1.ZedToken - 29, // 35: authzed.api.v1.ExperimentalDiffSchemaRequest.consistency:type_name -> authzed.api.v1.Consistency - 28, // 36: authzed.api.v1.ExperimentalDiffSchemaResponse.diffs:type_name -> authzed.api.v1.ExpSchemaDiff - 33, // 37: authzed.api.v1.ExperimentalDiffSchemaResponse.read_at:type_name -> authzed.api.v1.ZedToken - 15, // 38: authzed.api.v1.ExpRelationSubjectTypeChange.relation:type_name -> authzed.api.v1.ExpRelation - 16, // 39: authzed.api.v1.ExpRelationSubjectTypeChange.changed_subject_type:type_name -> authzed.api.v1.ExpTypeReference - 14, // 40: authzed.api.v1.ExpCaveatParameterTypeChange.parameter:type_name -> authzed.api.v1.ExpCaveatParameter - 12, // 41: authzed.api.v1.ExpSchemaDiff.definition_added:type_name -> authzed.api.v1.ExpDefinition - 12, // 42: authzed.api.v1.ExpSchemaDiff.definition_removed:type_name -> authzed.api.v1.ExpDefinition - 12, // 43: authzed.api.v1.ExpSchemaDiff.definition_doc_comment_changed:type_name -> authzed.api.v1.ExpDefinition - 15, // 44: authzed.api.v1.ExpSchemaDiff.relation_added:type_name -> authzed.api.v1.ExpRelation - 15, // 45: authzed.api.v1.ExpSchemaDiff.relation_removed:type_name -> authzed.api.v1.ExpRelation - 15, // 46: authzed.api.v1.ExpSchemaDiff.relation_doc_comment_changed:type_name -> authzed.api.v1.ExpRelation - 26, // 47: authzed.api.v1.ExpSchemaDiff.relation_subject_type_added:type_name -> authzed.api.v1.ExpRelationSubjectTypeChange - 26, // 48: authzed.api.v1.ExpSchemaDiff.relation_subject_type_removed:type_name -> authzed.api.v1.ExpRelationSubjectTypeChange - 17, // 49: authzed.api.v1.ExpSchemaDiff.permission_added:type_name -> authzed.api.v1.ExpPermission - 17, // 50: authzed.api.v1.ExpSchemaDiff.permission_removed:type_name -> authzed.api.v1.ExpPermission - 17, // 51: authzed.api.v1.ExpSchemaDiff.permission_doc_comment_changed:type_name -> authzed.api.v1.ExpPermission - 17, // 52: authzed.api.v1.ExpSchemaDiff.permission_expr_changed:type_name -> authzed.api.v1.ExpPermission - 13, // 53: authzed.api.v1.ExpSchemaDiff.caveat_added:type_name -> authzed.api.v1.ExpCaveat - 13, // 54: authzed.api.v1.ExpSchemaDiff.caveat_removed:type_name -> authzed.api.v1.ExpCaveat - 13, // 55: authzed.api.v1.ExpSchemaDiff.caveat_doc_comment_changed:type_name -> authzed.api.v1.ExpCaveat - 13, // 56: authzed.api.v1.ExpSchemaDiff.caveat_expr_changed:type_name -> authzed.api.v1.ExpCaveat - 14, // 57: authzed.api.v1.ExpSchemaDiff.caveat_parameter_added:type_name -> authzed.api.v1.ExpCaveatParameter - 14, // 58: authzed.api.v1.ExpSchemaDiff.caveat_parameter_removed:type_name -> authzed.api.v1.ExpCaveatParameter - 27, // 59: authzed.api.v1.ExpSchemaDiff.caveat_parameter_type_changed:type_name -> authzed.api.v1.ExpCaveatParameterTypeChange - 5, // 60: authzed.api.v1.ExperimentalService.BulkImportRelationships:input_type -> authzed.api.v1.BulkImportRelationshipsRequest - 7, // 61: authzed.api.v1.ExperimentalService.BulkExportRelationships:input_type -> authzed.api.v1.BulkExportRelationshipsRequest - 0, // 62: authzed.api.v1.ExperimentalService.BulkCheckPermission:input_type -> authzed.api.v1.BulkCheckPermissionRequest - 9, // 63: authzed.api.v1.ExperimentalService.ExperimentalReflectSchema:input_type -> authzed.api.v1.ExperimentalReflectSchemaRequest - 18, // 64: authzed.api.v1.ExperimentalService.ExperimentalComputablePermissions:input_type -> authzed.api.v1.ExperimentalComputablePermissionsRequest - 22, // 65: authzed.api.v1.ExperimentalService.ExperimentalDependentRelations:input_type -> authzed.api.v1.ExperimentalDependentRelationsRequest - 24, // 66: authzed.api.v1.ExperimentalService.ExperimentalDiffSchema:input_type -> authzed.api.v1.ExperimentalDiffSchemaRequest - 6, // 67: authzed.api.v1.ExperimentalService.BulkImportRelationships:output_type -> authzed.api.v1.BulkImportRelationshipsResponse - 8, // 68: authzed.api.v1.ExperimentalService.BulkExportRelationships:output_type -> authzed.api.v1.BulkExportRelationshipsResponse - 2, // 69: authzed.api.v1.ExperimentalService.BulkCheckPermission:output_type -> authzed.api.v1.BulkCheckPermissionResponse - 10, // 70: authzed.api.v1.ExperimentalService.ExperimentalReflectSchema:output_type -> authzed.api.v1.ExperimentalReflectSchemaResponse - 21, // 71: authzed.api.v1.ExperimentalService.ExperimentalComputablePermissions:output_type -> authzed.api.v1.ExperimentalComputablePermissionsResponse - 23, // 72: authzed.api.v1.ExperimentalService.ExperimentalDependentRelations:output_type -> authzed.api.v1.ExperimentalDependentRelationsResponse - 25, // 73: authzed.api.v1.ExperimentalService.ExperimentalDiffSchema:output_type -> authzed.api.v1.ExperimentalDiffSchemaResponse - 67, // [67:74] is the sub-list for method output_type - 60, // [60:67] is the sub-list for method input_type - 60, // [60:60] is the sub-list for extension type_name - 60, // [60:60] is the sub-list for extension extendee - 0, // [0:60] is the sub-list for field type_name + 28, // 27: authzed.api.v1.ExperimentalComputablePermissionsRequest.consistency:type_name -> authzed.api.v1.Consistency + 19, // 28: authzed.api.v1.ExperimentalComputablePermissionsResponse.permissions:type_name -> authzed.api.v1.ExpRelationReference + 32, // 29: authzed.api.v1.ExperimentalComputablePermissionsResponse.read_at:type_name -> authzed.api.v1.ZedToken + 28, // 30: authzed.api.v1.ExperimentalDependentRelationsRequest.consistency:type_name -> authzed.api.v1.Consistency + 19, // 31: authzed.api.v1.ExperimentalDependentRelationsResponse.relations:type_name -> authzed.api.v1.ExpRelationReference + 32, // 32: authzed.api.v1.ExperimentalDependentRelationsResponse.read_at:type_name -> authzed.api.v1.ZedToken + 28, // 33: authzed.api.v1.ExperimentalDiffSchemaRequest.consistency:type_name -> authzed.api.v1.Consistency + 27, // 34: authzed.api.v1.ExperimentalDiffSchemaResponse.diffs:type_name -> authzed.api.v1.ExpSchemaDiff + 32, // 35: authzed.api.v1.ExperimentalDiffSchemaResponse.read_at:type_name -> authzed.api.v1.ZedToken + 15, // 36: authzed.api.v1.ExpRelationSubjectTypeChange.relation:type_name -> authzed.api.v1.ExpRelation + 16, // 37: authzed.api.v1.ExpRelationSubjectTypeChange.changed_subject_type:type_name -> authzed.api.v1.ExpTypeReference + 14, // 38: authzed.api.v1.ExpCaveatParameterTypeChange.parameter:type_name -> authzed.api.v1.ExpCaveatParameter + 12, // 39: authzed.api.v1.ExpSchemaDiff.definition_added:type_name -> authzed.api.v1.ExpDefinition + 12, // 40: authzed.api.v1.ExpSchemaDiff.definition_removed:type_name -> authzed.api.v1.ExpDefinition + 12, // 41: authzed.api.v1.ExpSchemaDiff.definition_doc_comment_changed:type_name -> authzed.api.v1.ExpDefinition + 15, // 42: authzed.api.v1.ExpSchemaDiff.relation_added:type_name -> authzed.api.v1.ExpRelation + 15, // 43: authzed.api.v1.ExpSchemaDiff.relation_removed:type_name -> authzed.api.v1.ExpRelation + 15, // 44: authzed.api.v1.ExpSchemaDiff.relation_doc_comment_changed:type_name -> authzed.api.v1.ExpRelation + 25, // 45: authzed.api.v1.ExpSchemaDiff.relation_subject_type_added:type_name -> authzed.api.v1.ExpRelationSubjectTypeChange + 25, // 46: authzed.api.v1.ExpSchemaDiff.relation_subject_type_removed:type_name -> authzed.api.v1.ExpRelationSubjectTypeChange + 17, // 47: authzed.api.v1.ExpSchemaDiff.permission_added:type_name -> authzed.api.v1.ExpPermission + 17, // 48: authzed.api.v1.ExpSchemaDiff.permission_removed:type_name -> authzed.api.v1.ExpPermission + 17, // 49: authzed.api.v1.ExpSchemaDiff.permission_doc_comment_changed:type_name -> authzed.api.v1.ExpPermission + 17, // 50: authzed.api.v1.ExpSchemaDiff.permission_expr_changed:type_name -> authzed.api.v1.ExpPermission + 13, // 51: authzed.api.v1.ExpSchemaDiff.caveat_added:type_name -> authzed.api.v1.ExpCaveat + 13, // 52: authzed.api.v1.ExpSchemaDiff.caveat_removed:type_name -> authzed.api.v1.ExpCaveat + 13, // 53: authzed.api.v1.ExpSchemaDiff.caveat_doc_comment_changed:type_name -> authzed.api.v1.ExpCaveat + 13, // 54: authzed.api.v1.ExpSchemaDiff.caveat_expr_changed:type_name -> authzed.api.v1.ExpCaveat + 14, // 55: authzed.api.v1.ExpSchemaDiff.caveat_parameter_added:type_name -> authzed.api.v1.ExpCaveatParameter + 14, // 56: authzed.api.v1.ExpSchemaDiff.caveat_parameter_removed:type_name -> authzed.api.v1.ExpCaveatParameter + 26, // 57: authzed.api.v1.ExpSchemaDiff.caveat_parameter_type_changed:type_name -> authzed.api.v1.ExpCaveatParameterTypeChange + 5, // 58: authzed.api.v1.ExperimentalService.BulkImportRelationships:input_type -> authzed.api.v1.BulkImportRelationshipsRequest + 7, // 59: authzed.api.v1.ExperimentalService.BulkExportRelationships:input_type -> authzed.api.v1.BulkExportRelationshipsRequest + 0, // 60: authzed.api.v1.ExperimentalService.BulkCheckPermission:input_type -> authzed.api.v1.BulkCheckPermissionRequest + 9, // 61: authzed.api.v1.ExperimentalService.ExperimentalReflectSchema:input_type -> authzed.api.v1.ExperimentalReflectSchemaRequest + 18, // 62: authzed.api.v1.ExperimentalService.ExperimentalComputablePermissions:input_type -> authzed.api.v1.ExperimentalComputablePermissionsRequest + 21, // 63: authzed.api.v1.ExperimentalService.ExperimentalDependentRelations:input_type -> authzed.api.v1.ExperimentalDependentRelationsRequest + 23, // 64: authzed.api.v1.ExperimentalService.ExperimentalDiffSchema:input_type -> authzed.api.v1.ExperimentalDiffSchemaRequest + 6, // 65: authzed.api.v1.ExperimentalService.BulkImportRelationships:output_type -> authzed.api.v1.BulkImportRelationshipsResponse + 8, // 66: authzed.api.v1.ExperimentalService.BulkExportRelationships:output_type -> authzed.api.v1.BulkExportRelationshipsResponse + 2, // 67: authzed.api.v1.ExperimentalService.BulkCheckPermission:output_type -> authzed.api.v1.BulkCheckPermissionResponse + 10, // 68: authzed.api.v1.ExperimentalService.ExperimentalReflectSchema:output_type -> authzed.api.v1.ExperimentalReflectSchemaResponse + 20, // 69: authzed.api.v1.ExperimentalService.ExperimentalComputablePermissions:output_type -> authzed.api.v1.ExperimentalComputablePermissionsResponse + 22, // 70: authzed.api.v1.ExperimentalService.ExperimentalDependentRelations:output_type -> authzed.api.v1.ExperimentalDependentRelationsResponse + 24, // 71: authzed.api.v1.ExperimentalService.ExperimentalDiffSchema:output_type -> authzed.api.v1.ExperimentalDiffSchemaResponse + 65, // [65:72] is the sub-list for method output_type + 58, // [58:65] is the sub-list for method input_type + 58, // [58:58] is the sub-list for extension type_name + 58, // [58:58] is the sub-list for extension extendee + 0, // [0:58] is the sub-list for field type_name } func init() { file_authzed_api_v1_experimental_service_proto_init() } @@ -3065,18 +3026,6 @@ func file_authzed_api_v1_experimental_service_proto_init() { } } file_authzed_api_v1_experimental_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpPermissionReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_authzed_api_v1_experimental_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExperimentalComputablePermissionsResponse); i { case 0: return &v.state @@ -3088,7 +3037,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExperimentalDependentRelationsRequest); i { case 0: return &v.state @@ -3100,7 +3049,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExperimentalDependentRelationsResponse); i { case 0: return &v.state @@ -3112,7 +3061,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExperimentalDiffSchemaRequest); i { case 0: return &v.state @@ -3124,7 +3073,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExperimentalDiffSchemaResponse); i { case 0: return &v.state @@ -3136,7 +3085,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExpRelationSubjectTypeChange); i { case 0: return &v.state @@ -3148,7 +3097,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExpCaveatParameterTypeChange); i { case 0: return &v.state @@ -3160,7 +3109,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { return nil } } - file_authzed_api_v1_experimental_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_authzed_api_v1_experimental_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExpSchemaDiff); i { case 0: return &v.state @@ -3182,7 +3131,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { (*ExpTypeReference_OptionalRelationName)(nil), (*ExpTypeReference_IsPublicWildcard)(nil), } - file_authzed_api_v1_experimental_service_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_authzed_api_v1_experimental_service_proto_msgTypes[27].OneofWrappers = []interface{}{ (*ExpSchemaDiff_DefinitionAdded)(nil), (*ExpSchemaDiff_DefinitionRemoved)(nil), (*ExpSchemaDiff_DefinitionDocCommentChanged)(nil), @@ -3209,7 +3158,7 @@ func file_authzed_api_v1_experimental_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_authzed_api_v1_experimental_service_proto_rawDesc, NumEnums: 0, - NumMessages: 29, + NumMessages: 28, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/authzed/api/v1/experimental_service.pb.validate.go b/proto/authzed/api/v1/experimental_service.pb.validate.go index 9b72c82..4f98901 100644 --- a/proto/authzed/api/v1/experimental_service.pb.validate.go +++ b/proto/authzed/api/v1/experimental_service.pb.validate.go @@ -2960,39 +2960,9 @@ func (m *ExperimentalComputablePermissionsRequest) validate(all bool) error { } } - for idx, item := range m.GetRelations() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ExperimentalComputablePermissionsRequestValidationError{ - field: fmt.Sprintf("Relations[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ExperimentalComputablePermissionsRequestValidationError{ - field: fmt.Sprintf("Relations[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ExperimentalComputablePermissionsRequestValidationError{ - field: fmt.Sprintf("Relations[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } + // no validation rules for DefinitionName - } + // no validation rules for RelationName // no validation rules for OptionalDefinitionNameFilter @@ -3104,6 +3074,8 @@ func (m *ExpRelationReference) validate(all bool) error { // no validation rules for RelationName + // no validation rules for IsPermission + if len(errors) > 0 { return ExpRelationReferenceMultiError(errors) } @@ -3184,112 +3156,6 @@ var _ interface { ErrorName() string } = ExpRelationReferenceValidationError{} -// Validate checks the field values on ExpPermissionReference with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *ExpPermissionReference) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ExpPermissionReference with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// ExpPermissionReferenceMultiError, or nil if none found. -func (m *ExpPermissionReference) ValidateAll() error { - return m.validate(true) -} - -func (m *ExpPermissionReference) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for DefinitionName - - // no validation rules for PermissionName - - if len(errors) > 0 { - return ExpPermissionReferenceMultiError(errors) - } - - return nil -} - -// ExpPermissionReferenceMultiError is an error wrapping multiple validation -// errors returned by ExpPermissionReference.ValidateAll() if the designated -// constraints aren't met. -type ExpPermissionReferenceMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ExpPermissionReferenceMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ExpPermissionReferenceMultiError) AllErrors() []error { return m } - -// ExpPermissionReferenceValidationError is the validation error returned by -// ExpPermissionReference.Validate if the designated constraints aren't met. -type ExpPermissionReferenceValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ExpPermissionReferenceValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ExpPermissionReferenceValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ExpPermissionReferenceValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ExpPermissionReferenceValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ExpPermissionReferenceValidationError) ErrorName() string { - return "ExpPermissionReferenceValidationError" -} - -// Error satisfies the builtin error interface -func (e ExpPermissionReferenceValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sExpPermissionReference.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ExpPermissionReferenceValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ExpPermissionReferenceValidationError{} - // Validate checks the field values on // ExperimentalComputablePermissionsResponse with the rules defined in the // proto definition for this message. If any rules are violated, the first @@ -3511,34 +3377,9 @@ func (m *ExperimentalDependentRelationsRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetPermission()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ExperimentalDependentRelationsRequestValidationError{ - field: "Permission", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ExperimentalDependentRelationsRequestValidationError{ - field: "Permission", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetPermission()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ExperimentalDependentRelationsRequestValidationError{ - field: "Permission", - reason: "embedded message failed validation", - cause: err, - } - } - } + // no validation rules for DefinitionName + + // no validation rules for PermissionName if len(errors) > 0 { return ExperimentalDependentRelationsRequestMultiError(errors) diff --git a/proto/authzed/api/v1/experimental_service_grpc.pb.go b/proto/authzed/api/v1/experimental_service_grpc.pb.go index 20cb593..76bd431 100644 --- a/proto/authzed/api/v1/experimental_service_grpc.pb.go +++ b/proto/authzed/api/v1/experimental_service_grpc.pb.go @@ -54,13 +54,13 @@ type ExperimentalServiceClient interface { // SpiceDB. This is useful for clients that need to introspect the schema of a SpiceDB instance. ExperimentalReflectSchema(ctx context.Context, in *ExperimentalReflectSchemaRequest, opts ...grpc.CallOption) (*ExperimentalReflectSchemaResponse, error) // EXPERIMENTAL: ComputablePermissions is an API that allows clients to request the set of - // permissions that compute based off a set of relations. For example, if a schema has a relation + // permissions that compute based off a relation. For example, if a schema has a relation // `viewer` and a permission `view` defined as `permission view = viewer + editor`, then the // computable permissions for the relation `viewer` will include `view`. ExperimentalComputablePermissions(ctx context.Context, in *ExperimentalComputablePermissionsRequest, opts ...grpc.CallOption) (*ExperimentalComputablePermissionsResponse, error) // EXPERIMENTAL: DependentRelations is an API that allows clients to request the set of - // relations that used to compute a permission, recursively. It is the inverse of the - // ComputablePermissions API. + // relations and permissions that used to compute a permission, recursively. It is the + // inverse of the ComputablePermissions API. ExperimentalDependentRelations(ctx context.Context, in *ExperimentalDependentRelationsRequest, opts ...grpc.CallOption) (*ExperimentalDependentRelationsResponse, error) // EXPERIMENTAL: DiffSchema is an API that allows clients to request the difference between the // specified schema and the schema stored in SpiceDB. This is useful for clients that need to @@ -214,13 +214,13 @@ type ExperimentalServiceServer interface { // SpiceDB. This is useful for clients that need to introspect the schema of a SpiceDB instance. ExperimentalReflectSchema(context.Context, *ExperimentalReflectSchemaRequest) (*ExperimentalReflectSchemaResponse, error) // EXPERIMENTAL: ComputablePermissions is an API that allows clients to request the set of - // permissions that compute based off a set of relations. For example, if a schema has a relation + // permissions that compute based off a relation. For example, if a schema has a relation // `viewer` and a permission `view` defined as `permission view = viewer + editor`, then the // computable permissions for the relation `viewer` will include `view`. ExperimentalComputablePermissions(context.Context, *ExperimentalComputablePermissionsRequest) (*ExperimentalComputablePermissionsResponse, error) // EXPERIMENTAL: DependentRelations is an API that allows clients to request the set of - // relations that used to compute a permission, recursively. It is the inverse of the - // ComputablePermissions API. + // relations and permissions that used to compute a permission, recursively. It is the + // inverse of the ComputablePermissions API. ExperimentalDependentRelations(context.Context, *ExperimentalDependentRelationsRequest) (*ExperimentalDependentRelationsResponse, error) // EXPERIMENTAL: DiffSchema is an API that allows clients to request the difference between the // specified schema and the schema stored in SpiceDB. This is useful for clients that need to diff --git a/proto/authzed/api/v1/experimental_service_vtproto.pb.go b/proto/authzed/api/v1/experimental_service_vtproto.pb.go index 8b96561..02d6e1b 100644 --- a/proto/authzed/api/v1/experimental_service_vtproto.pb.go +++ b/proto/authzed/api/v1/experimental_service_vtproto.pb.go @@ -491,14 +491,9 @@ func (m *ExperimentalComputablePermissionsRequest) CloneVT() *ExperimentalComput } r := new(ExperimentalComputablePermissionsRequest) r.Consistency = m.Consistency.CloneVT() + r.DefinitionName = m.DefinitionName + r.RelationName = m.RelationName r.OptionalDefinitionNameFilter = m.OptionalDefinitionNameFilter - if rhs := m.Relations; rhs != nil { - tmpContainer := make([]*ExpRelationReference, len(rhs)) - for k, v := range rhs { - tmpContainer[k] = v.CloneVT() - } - r.Relations = tmpContainer - } if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -517,6 +512,7 @@ func (m *ExpRelationReference) CloneVT() *ExpRelationReference { r := new(ExpRelationReference) r.DefinitionName = m.DefinitionName r.RelationName = m.RelationName + r.IsPermission = m.IsPermission if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -528,24 +524,6 @@ func (m *ExpRelationReference) CloneMessageVT() proto.Message { return m.CloneVT() } -func (m *ExpPermissionReference) CloneVT() *ExpPermissionReference { - if m == nil { - return (*ExpPermissionReference)(nil) - } - r := new(ExpPermissionReference) - r.DefinitionName = m.DefinitionName - r.PermissionName = m.PermissionName - if len(m.unknownFields) > 0 { - r.unknownFields = make([]byte, len(m.unknownFields)) - copy(r.unknownFields, m.unknownFields) - } - return r -} - -func (m *ExpPermissionReference) CloneMessageVT() proto.Message { - return m.CloneVT() -} - func (m *ExperimentalComputablePermissionsResponse) CloneVT() *ExperimentalComputablePermissionsResponse { if m == nil { return (*ExperimentalComputablePermissionsResponse)(nil) @@ -553,7 +531,7 @@ func (m *ExperimentalComputablePermissionsResponse) CloneVT() *ExperimentalCompu r := new(ExperimentalComputablePermissionsResponse) r.ReadAt = m.ReadAt.CloneVT() if rhs := m.Permissions; rhs != nil { - tmpContainer := make([]*ExpPermissionReference, len(rhs)) + tmpContainer := make([]*ExpRelationReference, len(rhs)) for k, v := range rhs { tmpContainer[k] = v.CloneVT() } @@ -576,7 +554,8 @@ func (m *ExperimentalDependentRelationsRequest) CloneVT() *ExperimentalDependent } r := new(ExperimentalDependentRelationsRequest) r.Consistency = m.Consistency.CloneVT() - r.Permission = m.Permission.CloneVT() + r.DefinitionName = m.DefinitionName + r.PermissionName = m.PermissionName if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -1604,22 +1583,11 @@ func (this *ExperimentalComputablePermissionsRequest) EqualVT(that *Experimental if !this.Consistency.EqualVT(that.Consistency) { return false } - if len(this.Relations) != len(that.Relations) { + if this.DefinitionName != that.DefinitionName { return false } - for i, vx := range this.Relations { - vy := that.Relations[i] - if p, q := vx, vy; p != q { - if p == nil { - p = &ExpRelationReference{} - } - if q == nil { - q = &ExpRelationReference{} - } - if !p.EqualVT(q) { - return false - } - } + if this.RelationName != that.RelationName { + return false } if this.OptionalDefinitionNameFilter != that.OptionalDefinitionNameFilter { return false @@ -1646,33 +1614,14 @@ func (this *ExpRelationReference) EqualVT(that *ExpRelationReference) bool { if this.RelationName != that.RelationName { return false } - return string(this.unknownFields) == string(that.unknownFields) -} - -func (this *ExpRelationReference) EqualMessageVT(thatMsg proto.Message) bool { - that, ok := thatMsg.(*ExpRelationReference) - if !ok { - return false - } - return this.EqualVT(that) -} -func (this *ExpPermissionReference) EqualVT(that *ExpPermissionReference) bool { - if this == that { - return true - } else if this == nil || that == nil { - return false - } - if this.DefinitionName != that.DefinitionName { - return false - } - if this.PermissionName != that.PermissionName { + if this.IsPermission != that.IsPermission { return false } return string(this.unknownFields) == string(that.unknownFields) } -func (this *ExpPermissionReference) EqualMessageVT(thatMsg proto.Message) bool { - that, ok := thatMsg.(*ExpPermissionReference) +func (this *ExpRelationReference) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*ExpRelationReference) if !ok { return false } @@ -1691,10 +1640,10 @@ func (this *ExperimentalComputablePermissionsResponse) EqualVT(that *Experimenta vy := that.Permissions[i] if p, q := vx, vy; p != q { if p == nil { - p = &ExpPermissionReference{} + p = &ExpRelationReference{} } if q == nil { - q = &ExpPermissionReference{} + q = &ExpRelationReference{} } if !p.EqualVT(q) { return false @@ -1723,7 +1672,10 @@ func (this *ExperimentalDependentRelationsRequest) EqualVT(that *ExperimentalDep if !this.Consistency.EqualVT(that.Consistency) { return false } - if !this.Permission.EqualVT(that.Permission) { + if this.DefinitionName != that.DefinitionName { + return false + } + if this.PermissionName != that.PermissionName { return false } return string(this.unknownFields) == string(that.unknownFields) @@ -3546,19 +3498,21 @@ func (m *ExperimentalComputablePermissionsRequest) MarshalToSizedBufferVT(dAtA [ copy(dAtA[i:], m.OptionalDefinitionNameFilter) i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.OptionalDefinitionNameFilter))) i-- + dAtA[i] = 0x22 + } + if len(m.RelationName) > 0 { + i -= len(m.RelationName) + copy(dAtA[i:], m.RelationName) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RelationName))) + i-- dAtA[i] = 0x1a } - if len(m.Relations) > 0 { - for iNdEx := len(m.Relations) - 1; iNdEx >= 0; iNdEx-- { - size, err := m.Relations[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) - i-- - dAtA[i] = 0x12 - } + if len(m.DefinitionName) > 0 { + i -= len(m.DefinitionName) + copy(dAtA[i:], m.DefinitionName) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefinitionName))) + i-- + dAtA[i] = 0x12 } if m.Consistency != nil { size, err := m.Consistency.MarshalToSizedBufferVT(dAtA[:i]) @@ -3603,6 +3557,16 @@ func (m *ExpRelationReference) MarshalToSizedBufferVT(dAtA []byte) (int, error) i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.IsPermission { + i-- + if m.IsPermission { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } if len(m.RelationName) > 0 { i -= len(m.RelationName) copy(dAtA[i:], m.RelationName) @@ -3620,53 +3584,6 @@ func (m *ExpRelationReference) MarshalToSizedBufferVT(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *ExpPermissionReference) MarshalVT() (dAtA []byte, err error) { - if m == nil { - return nil, nil - } - size := m.SizeVT() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBufferVT(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ExpPermissionReference) MarshalToVT(dAtA []byte) (int, error) { - size := m.SizeVT() - return m.MarshalToSizedBufferVT(dAtA[:size]) -} - -func (m *ExpPermissionReference) MarshalToSizedBufferVT(dAtA []byte) (int, error) { - if m == nil { - return 0, nil - } - i := len(dAtA) - _ = i - var l int - _ = l - if m.unknownFields != nil { - i -= len(m.unknownFields) - copy(dAtA[i:], m.unknownFields) - } - if len(m.PermissionName) > 0 { - i -= len(m.PermissionName) - copy(dAtA[i:], m.PermissionName) - i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PermissionName))) - i-- - dAtA[i] = 0x12 - } - if len(m.DefinitionName) > 0 { - i -= len(m.DefinitionName) - copy(dAtA[i:], m.DefinitionName) - i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefinitionName))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *ExperimentalComputablePermissionsResponse) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -3752,13 +3669,17 @@ func (m *ExperimentalDependentRelationsRequest) MarshalToSizedBufferVT(dAtA []by i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } - if m.Permission != nil { - size, err := m.Permission.MarshalToSizedBufferVT(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + if len(m.PermissionName) > 0 { + i -= len(m.PermissionName) + copy(dAtA[i:], m.PermissionName) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PermissionName))) + i-- + dAtA[i] = 0x1a + } + if len(m.DefinitionName) > 0 { + i -= len(m.DefinitionName) + copy(dAtA[i:], m.DefinitionName) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefinitionName))) i-- dAtA[i] = 0x12 } @@ -4914,31 +4835,15 @@ func (m *ExperimentalComputablePermissionsRequest) SizeVT() (n int) { l = m.Consistency.SizeVT() n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } - if len(m.Relations) > 0 { - for _, e := range m.Relations { - l = e.SizeVT() - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) - } - } - l = len(m.OptionalDefinitionNameFilter) + l = len(m.DefinitionName) if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } - n += len(m.unknownFields) - return n -} - -func (m *ExpRelationReference) SizeVT() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DefinitionName) + l = len(m.RelationName) if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } - l = len(m.RelationName) + l = len(m.OptionalDefinitionNameFilter) if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } @@ -4946,7 +4851,7 @@ func (m *ExpRelationReference) SizeVT() (n int) { return n } -func (m *ExpPermissionReference) SizeVT() (n int) { +func (m *ExpRelationReference) SizeVT() (n int) { if m == nil { return 0 } @@ -4956,10 +4861,13 @@ func (m *ExpPermissionReference) SizeVT() (n int) { if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } - l = len(m.PermissionName) + l = len(m.RelationName) if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } + if m.IsPermission { + n += 2 + } n += len(m.unknownFields) return n } @@ -4994,8 +4902,12 @@ func (m *ExperimentalDependentRelationsRequest) SizeVT() (n int) { l = m.Consistency.SizeVT() n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } - if m.Permission != nil { - l = m.Permission.SizeVT() + l = len(m.DefinitionName) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.PermissionName) + if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } n += len(m.unknownFields) @@ -8065,41 +7977,7 @@ func (m *ExperimentalComputablePermissionsRequest) UnmarshalVT(dAtA []byte) erro iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Relations", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protohelpers.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protohelpers.ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Relations = append(m.Relations, &ExpRelationReference{}) - if err := m.Relations[len(m.Relations)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OptionalDefinitionNameFilter", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DefinitionName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8127,62 +8005,11 @@ func (m *ExperimentalComputablePermissionsRequest) UnmarshalVT(dAtA []byte) erro if postIndex > l { return io.ErrUnexpectedEOF } - m.OptionalDefinitionNameFilter = string(dAtA[iNdEx:postIndex]) + m.DefinitionName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := protohelpers.Skip(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protohelpers.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ExpRelationReference) UnmarshalVT(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ExpRelationReference: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ExpRelationReference: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DefinitionName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RelationName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8210,11 +8037,11 @@ func (m *ExpRelationReference) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DefinitionName = string(dAtA[iNdEx:postIndex]) + m.RelationName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RelationName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OptionalDefinitionNameFilter", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8242,7 +8069,7 @@ func (m *ExpRelationReference) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RelationName = string(dAtA[iNdEx:postIndex]) + m.OptionalDefinitionNameFilter = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -8266,7 +8093,7 @@ func (m *ExpRelationReference) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *ExpPermissionReference) UnmarshalVT(dAtA []byte) error { +func (m *ExpRelationReference) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8289,10 +8116,10 @@ func (m *ExpPermissionReference) UnmarshalVT(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExpPermissionReference: wiretype end group for non-group") + return fmt.Errorf("proto: ExpRelationReference: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExpPermissionReference: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExpRelationReference: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8329,7 +8156,7 @@ func (m *ExpPermissionReference) UnmarshalVT(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PermissionName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RelationName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8357,8 +8184,28 @@ func (m *ExpPermissionReference) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.PermissionName = string(dAtA[iNdEx:postIndex]) + m.RelationName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsPermission", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsPermission = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -8439,7 +8286,7 @@ func (m *ExperimentalComputablePermissionsResponse) UnmarshalVT(dAtA []byte) err if postIndex > l { return io.ErrUnexpectedEOF } - m.Permissions = append(m.Permissions, &ExpPermissionReference{}) + m.Permissions = append(m.Permissions, &ExpRelationReference{}) if err := m.Permissions[len(m.Permissions)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -8569,9 +8416,9 @@ func (m *ExperimentalDependentRelationsRequest) UnmarshalVT(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Permission", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DefinitionName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protohelpers.ErrIntOverflow @@ -8581,27 +8428,55 @@ func (m *ExperimentalDependentRelationsRequest) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return protohelpers.ErrInvalidLength } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return protohelpers.ErrInvalidLength } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Permission == nil { - m.Permission = &ExpPermissionReference{} + m.DefinitionName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermissionName", wireType) } - if err := m.Permission.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { - return err + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermissionName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/proto/authzed/api/v1/zz_generated.version.go b/proto/authzed/api/v1/zz_generated.version.go index 395ee2f..ab3ee03 100644 --- a/proto/authzed/api/v1/zz_generated.version.go +++ b/proto/authzed/api/v1/zz_generated.version.go @@ -2,5 +2,5 @@ package v1 const ( BufRepository = "buf.build/authzed/api" - BufTag = "aa9a74cba13a9e97c419bb5b9c8ef7c0cc7eb13e" + BufTag = "80f6ef8af583b1a4de4ab7957e7f0a6e6ddf2904" ) diff --git a/proto/authzed/api/v1alpha1/zz_generated.version.go b/proto/authzed/api/v1alpha1/zz_generated.version.go index 447408a..dffe4ef 100644 --- a/proto/authzed/api/v1alpha1/zz_generated.version.go +++ b/proto/authzed/api/v1alpha1/zz_generated.version.go @@ -2,5 +2,5 @@ package v1alpha1 const ( BufRepository = "buf.build/authzed/api" - BufTag = "aa9a74cba13a9e97c419bb5b9c8ef7c0cc7eb13e" + BufTag = "80f6ef8af583b1a4de4ab7957e7f0a6e6ddf2904" )