diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index 422bdde09e..d8e64caea5 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -65,14 +65,14 @@ func createAttributeValueSql( Suffix("RETURNING id"). ToSql() } -func (c Client) CreateAttributeValue(ctx context.Context, v *attributes.ValueCreate) (*attributes.Value, error) { +func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v *attributes.ValueCreateUpdate) (*attributes.Value, error) { metadataJson, metadata, err := marshalCreateMetadata(v.Metadata) if err != nil { return nil, err } sql, args, err := createAttributeValueSql( - v.AttributeId, + attributeId, v.Value, v.Members, metadataJson, @@ -176,7 +176,7 @@ func updateAttributeValueSql( Where(sq.Eq{"id": id}). ToSql() } -func (c Client) UpdateAttributeValue(ctx context.Context, id string, v *attributes.ValueUpdate) (*attributes.Value, error) { +func (c Client) UpdateAttributeValue(ctx context.Context, id string, v *attributes.ValueCreateUpdate) (*attributes.Value, error) { prev, err := c.GetAttributeValue(ctx, id) if err != nil { return nil, err diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 4c98786c1b..e65cfbd2df 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -21,6 +21,7 @@ import ( var ( AttributeTable = tableName(TableAttributes) + NamespacesTable = tableName(TableNamespaces) AttributeRuleTypeEnumPrefix = "ATTRIBUTE_RULE_TYPE_ENUM_" ) @@ -64,8 +65,8 @@ func attributesSelect() sq.SelectBuilder { ")"+ ") AS values", ). - LeftJoin(AttributeValueTable + " ON " + AttributeValueTable + ".id = " + AttributeTable + ".id"). - LeftJoin(NamespacesTable + " ON " + NamespacesTable + ".id = " + AttributeTable + ".namespace_id"). + LeftJoin(AttributeValueTable+" ON "+AttributeValueTable+".id = "+AttributeTable+".id"). + LeftJoin(NamespacesTable+" ON "+NamespacesTable+".id = "+AttributeTable+".namespace_id"). GroupBy(tableField(AttributeTable, "id"), tableField(NamespacesTable, "name")) } @@ -171,6 +172,7 @@ func listAllAttributesSql() (string, []interface{}, error) { From(AttributeTable). ToSql() } + func (c Client) ListAllAttributes(ctx context.Context) ([]*attributes.Attribute, error) { sql, args, err := listAllAttributesSql() rows, err := c.query(ctx, sql, args, err) @@ -195,6 +197,7 @@ func getAttributeSql(id string) (string, []interface{}, error) { From(AttributeTable). ToSql() } + func (c Client) GetAttribute(ctx context.Context, id string) (*attributes.Attribute, error) { sql, args, err := getAttributeSql(id) row, err := c.queryRow(ctx, sql, args, err) @@ -218,6 +221,7 @@ func getAttributesByNamespaceSql(namespaceId string) (string, []interface{}, err From(AttributeTable). ToSql() } + func (c Client) GetAttributesByNamespace(ctx context.Context, namespaceId string) ([]*attributes.Attribute, error) { sql, args, err := getAttributesByNamespaceSql(namespaceId) @@ -244,6 +248,7 @@ func createAttributeSql(namespaceId string, name string, rule string, metadata [ Suffix("RETURNING \"id\""). ToSql() } + func (c Client) CreateAttribute(ctx context.Context, attr *attributes.AttributeCreateUpdate) (*attributes.Attribute, error) { metadataJson, metadata, err := marshalCreateMetadata(attr.Metadata) if err != nil { @@ -289,6 +294,7 @@ func updateAttributeSql(id string, name string, rule string, metadata []byte) (s Where(sq.Eq{tableField(AttributeTable, "id"): id}). ToSql() } + func (c Client) UpdateAttribute(ctx context.Context, id string, attr *attributes.AttributeCreateUpdate) (*attributes.Attribute, error) { // get attribute before updating a, err := c.GetAttribute(ctx, id) @@ -325,6 +331,7 @@ func deleteAttributeSql(id string) (string, []interface{}, error) { Where(sq.Eq{tableField(AttributeTable, "id"): id}). ToSql() } + func (c Client) DeleteAttribute(ctx context.Context, id string) (*attributes.Attribute, error) { // get attribute before deleting a, err := c.GetAttribute(ctx, id) diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index c925470931..7295679770 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -10,13 +10,12 @@ import ( "github.com/opentdf/opentdf-v2-poc/services" ) -var NamespacesTable = tableName(TableNamespaces) - func getNamespaceSql(id string) (string, []interface{}, error) { + t := Tables.Namespaces return newStatementBuilder(). Select("*"). - From(NamespacesTable). - Where(sq.Eq{tableField(NamespacesTable, "id"): id}). + From(t.Name()). + Where(sq.Eq{t.Field("id"): id}). ToSql() } @@ -48,9 +47,10 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp } func listNamespacesSql() (string, []interface{}, error) { + t := Tables.Namespaces return newStatementBuilder(). Select("*"). - From(NamespacesTable). + From(t.Name()). ToSql() } @@ -82,8 +82,9 @@ func (c Client) ListNamespaces(ctx context.Context) ([]*namespaces.Namespace, er } func createNamespaceSql(name string) (string, []interface{}, error) { + t := Tables.Namespaces return newStatementBuilder(). - Insert(NamespacesTable). + Insert(t.Name()). Columns("name"). Values(name). Suffix("RETURNING \"id\""). @@ -111,10 +112,11 @@ func (c Client) CreateNamespace(ctx context.Context, name string) (string, error } func updateNamespaceSql(id string, name string) (string, []interface{}, error) { + t := Tables.Namespaces return newStatementBuilder(). - Update(NamespacesTable). + Update(t.Name()). Set("name", name). - Where(sq.Eq{tableField(NamespacesTable, "id"): id}). + Where(sq.Eq{t.Field("id"): id}). ToSql() } @@ -143,10 +145,11 @@ func (c Client) UpdateNamespace(ctx context.Context, id string, name string) (*n } func deleteNamespaceSql(id string) (string, []interface{}, error) { + t := Tables.Namespaces // TODO: handle delete cascade, dangerous deletion via special rpc, or "soft-delete" status change return newStatementBuilder(). - Delete(NamespacesTable). - Where(sq.Eq{"id": id}). + Delete(t.Name()). + Where(sq.Eq{t.Field("id"): id}). Suffix("RETURNING \"id\""). ToSql() } diff --git a/migrations/20240131000000_diagram.md b/migrations/20240131000000_diagram.md index 9b9982b985..4d8737f75d 100644 --- a/migrations/20240131000000_diagram.md +++ b/migrations/20240131000000_diagram.md @@ -50,6 +50,7 @@ erDiagram } AttributeValue { + uuid id PK uuid namespace_id FK uuid attribute_definition_id FK varchar value diff --git a/proto/attributes/attributes.proto b/proto/attributes/attributes.proto index d7e1a6d888..63d906d399 100644 --- a/proto/attributes/attributes.proto +++ b/proto/attributes/attributes.proto @@ -53,7 +53,7 @@ message AttributeCreateUpdate { ]; // optional - repeated ValueCreate values = 5; + repeated ValueCreateUpdate values = 5; } message Value { @@ -70,18 +70,7 @@ message Value { repeated string members = 5; } -message ValueCreate { - common.MetadataMutable metadata = 1; - - string attribute_id = 2 [(buf.validate.field).required = true]; - - string value = 3; - - // list of attribute values that this value is related to (attribute group) - repeated string members = 4; -} - -message ValueUpdate { +message ValueCreateUpdate { common.MetadataMutable metadata = 1; string value = 2; @@ -161,15 +150,16 @@ message ListAttributeValuesResponse { message CreateAttributeValueRequest { string attribute_id = 1 [(buf.validate.field).required = true]; - ValueCreate value = 2 [(buf.validate.field).required = true]; + ValueCreateUpdate value = 2 [(buf.validate.field).required = true]; } message CreateAttributeValueResponse { Value value = 1; } message UpdateAttributeValueRequest { - string id = 1 [(buf.validate.field).required = true]; - ValueUpdate value = 2 [(buf.validate.field).required = true]; + string attribute_id = 1 [(buf.validate.field).required = true]; + string id = 2 [(buf.validate.field).required = true]; + ValueCreateUpdate value = 3 [(buf.validate.field).required = true]; } message UpdateAttributeValueResponse { Value value = 1; @@ -242,7 +232,7 @@ service AttributesService { rpc UpdateAttributeValue(UpdateAttributeValueRequest) returns (UpdateAttributeValueResponse) { option (google.api.http) = { - post: "/attributes/_/values/{id}" + post: "/attributes/{attribute_id}/values/{id}" body: "value" }; } diff --git a/sdk/attributes/attributes.pb.go b/sdk/attributes/attributes.pb.go index c04c58ad6b..b0377bad84 100644 --- a/sdk/attributes/attributes.pb.go +++ b/sdk/attributes/attributes.pb.go @@ -182,7 +182,7 @@ type AttributeCreateUpdate struct { // attribute rule enum Rule AttributeRuleTypeEnum `protobuf:"varint,4,opt,name=rule,proto3,enum=attributes.AttributeRuleTypeEnum" json:"rule,omitempty"` // optional - Values []*ValueCreate `protobuf:"bytes,5,rep,name=values,proto3" json:"values,omitempty"` + Values []*ValueCreateUpdate `protobuf:"bytes,5,rep,name=values,proto3" json:"values,omitempty"` } func (x *AttributeCreateUpdate) Reset() { @@ -245,7 +245,7 @@ func (x *AttributeCreateUpdate) GetRule() AttributeRuleTypeEnum { return AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED } -func (x *AttributeCreateUpdate) GetValues() []*ValueCreate { +func (x *AttributeCreateUpdate) GetValues() []*ValueCreateUpdate { if x != nil { return x.Values } @@ -333,79 +333,7 @@ func (x *Value) GetMembers() []string { return nil } -type ValueCreate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *common.MetadataMutable `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - AttributeId string `protobuf:"bytes,2,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - // list of attribute values that this value is related to (attribute group) - Members []string `protobuf:"bytes,4,rep,name=members,proto3" json:"members,omitempty"` -} - -func (x *ValueCreate) Reset() { - *x = ValueCreate{} - if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ValueCreate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ValueCreate) ProtoMessage() {} - -func (x *ValueCreate) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[3] - 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 ValueCreate.ProtoReflect.Descriptor instead. -func (*ValueCreate) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{3} -} - -func (x *ValueCreate) GetMetadata() *common.MetadataMutable { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *ValueCreate) GetAttributeId() string { - if x != nil { - return x.AttributeId - } - return "" -} - -func (x *ValueCreate) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -func (x *ValueCreate) GetMembers() []string { - if x != nil { - return x.Members - } - return nil -} - -type ValueUpdate struct { +type ValueCreateUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -416,23 +344,23 @@ type ValueUpdate struct { Members []string `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` } -func (x *ValueUpdate) Reset() { - *x = ValueUpdate{} +func (x *ValueCreateUpdate) Reset() { + *x = ValueCreateUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[4] + mi := &file_attributes_attributes_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ValueUpdate) String() string { +func (x *ValueCreateUpdate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ValueUpdate) ProtoMessage() {} +func (*ValueCreateUpdate) ProtoMessage() {} -func (x *ValueUpdate) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[4] +func (x *ValueCreateUpdate) ProtoReflect() protoreflect.Message { + mi := &file_attributes_attributes_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -443,26 +371,26 @@ func (x *ValueUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ValueUpdate.ProtoReflect.Descriptor instead. -func (*ValueUpdate) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{4} +// Deprecated: Use ValueCreateUpdate.ProtoReflect.Descriptor instead. +func (*ValueCreateUpdate) Descriptor() ([]byte, []int) { + return file_attributes_attributes_proto_rawDescGZIP(), []int{3} } -func (x *ValueUpdate) GetMetadata() *common.MetadataMutable { +func (x *ValueCreateUpdate) GetMetadata() *common.MetadataMutable { if x != nil { return x.Metadata } return nil } -func (x *ValueUpdate) GetValue() string { +func (x *ValueCreateUpdate) GetValue() string { if x != nil { return x.Value } return "" } -func (x *ValueUpdate) GetMembers() []string { +func (x *ValueCreateUpdate) GetMembers() []string { if x != nil { return x.Members } @@ -481,7 +409,7 @@ type DefinitionKeyAccessServerGrant struct { func (x *DefinitionKeyAccessServerGrant) Reset() { *x = DefinitionKeyAccessServerGrant{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[5] + mi := &file_attributes_attributes_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -494,7 +422,7 @@ func (x *DefinitionKeyAccessServerGrant) String() string { func (*DefinitionKeyAccessServerGrant) ProtoMessage() {} func (x *DefinitionKeyAccessServerGrant) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[5] + mi := &file_attributes_attributes_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -507,7 +435,7 @@ func (x *DefinitionKeyAccessServerGrant) ProtoReflect() protoreflect.Message { // Deprecated: Use DefinitionKeyAccessServerGrant.ProtoReflect.Descriptor instead. func (*DefinitionKeyAccessServerGrant) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{5} + return file_attributes_attributes_proto_rawDescGZIP(), []int{4} } func (x *DefinitionKeyAccessServerGrant) GetAttributeId() string { @@ -536,7 +464,7 @@ type ValueKeyAccessServerGrant struct { func (x *ValueKeyAccessServerGrant) Reset() { *x = ValueKeyAccessServerGrant{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[6] + mi := &file_attributes_attributes_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -549,7 +477,7 @@ func (x *ValueKeyAccessServerGrant) String() string { func (*ValueKeyAccessServerGrant) ProtoMessage() {} func (x *ValueKeyAccessServerGrant) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[6] + mi := &file_attributes_attributes_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -562,7 +490,7 @@ func (x *ValueKeyAccessServerGrant) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueKeyAccessServerGrant.ProtoReflect.Descriptor instead. func (*ValueKeyAccessServerGrant) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{6} + return file_attributes_attributes_proto_rawDescGZIP(), []int{5} } func (x *ValueKeyAccessServerGrant) GetValueId() string { @@ -588,7 +516,7 @@ type ListAttributesRequest struct { func (x *ListAttributesRequest) Reset() { *x = ListAttributesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[7] + mi := &file_attributes_attributes_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -601,7 +529,7 @@ func (x *ListAttributesRequest) String() string { func (*ListAttributesRequest) ProtoMessage() {} func (x *ListAttributesRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[7] + mi := &file_attributes_attributes_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -614,7 +542,7 @@ func (x *ListAttributesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributesRequest.ProtoReflect.Descriptor instead. func (*ListAttributesRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{7} + return file_attributes_attributes_proto_rawDescGZIP(), []int{6} } type ListAttributesResponse struct { @@ -628,7 +556,7 @@ type ListAttributesResponse struct { func (x *ListAttributesResponse) Reset() { *x = ListAttributesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[8] + mi := &file_attributes_attributes_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +569,7 @@ func (x *ListAttributesResponse) String() string { func (*ListAttributesResponse) ProtoMessage() {} func (x *ListAttributesResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[8] + mi := &file_attributes_attributes_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +582,7 @@ func (x *ListAttributesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributesResponse.ProtoReflect.Descriptor instead. func (*ListAttributesResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{8} + return file_attributes_attributes_proto_rawDescGZIP(), []int{7} } func (x *ListAttributesResponse) GetAttributes() []*Attribute { @@ -675,7 +603,7 @@ type GetAttributeRequest struct { func (x *GetAttributeRequest) Reset() { *x = GetAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[9] + mi := &file_attributes_attributes_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -688,7 +616,7 @@ func (x *GetAttributeRequest) String() string { func (*GetAttributeRequest) ProtoMessage() {} func (x *GetAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[9] + mi := &file_attributes_attributes_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -701,7 +629,7 @@ func (x *GetAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeRequest.ProtoReflect.Descriptor instead. func (*GetAttributeRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{9} + return file_attributes_attributes_proto_rawDescGZIP(), []int{8} } func (x *GetAttributeRequest) GetId() string { @@ -722,7 +650,7 @@ type GetAttributeResponse struct { func (x *GetAttributeResponse) Reset() { *x = GetAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[10] + mi := &file_attributes_attributes_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -735,7 +663,7 @@ func (x *GetAttributeResponse) String() string { func (*GetAttributeResponse) ProtoMessage() {} func (x *GetAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[10] + mi := &file_attributes_attributes_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -748,7 +676,7 @@ func (x *GetAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeResponse.ProtoReflect.Descriptor instead. func (*GetAttributeResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{10} + return file_attributes_attributes_proto_rawDescGZIP(), []int{9} } func (x *GetAttributeResponse) GetAttribute() *Attribute { @@ -769,7 +697,7 @@ type CreateAttributeRequest struct { func (x *CreateAttributeRequest) Reset() { *x = CreateAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[11] + mi := &file_attributes_attributes_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -782,7 +710,7 @@ func (x *CreateAttributeRequest) String() string { func (*CreateAttributeRequest) ProtoMessage() {} func (x *CreateAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[11] + mi := &file_attributes_attributes_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -795,7 +723,7 @@ func (x *CreateAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeRequest.ProtoReflect.Descriptor instead. func (*CreateAttributeRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{11} + return file_attributes_attributes_proto_rawDescGZIP(), []int{10} } func (x *CreateAttributeRequest) GetAttribute() *AttributeCreateUpdate { @@ -816,7 +744,7 @@ type CreateAttributeResponse struct { func (x *CreateAttributeResponse) Reset() { *x = CreateAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[12] + mi := &file_attributes_attributes_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -829,7 +757,7 @@ func (x *CreateAttributeResponse) String() string { func (*CreateAttributeResponse) ProtoMessage() {} func (x *CreateAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[12] + mi := &file_attributes_attributes_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -842,7 +770,7 @@ func (x *CreateAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeResponse.ProtoReflect.Descriptor instead. func (*CreateAttributeResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{12} + return file_attributes_attributes_proto_rawDescGZIP(), []int{11} } func (x *CreateAttributeResponse) GetAttribute() *Attribute { @@ -864,7 +792,7 @@ type UpdateAttributeRequest struct { func (x *UpdateAttributeRequest) Reset() { *x = UpdateAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[13] + mi := &file_attributes_attributes_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -877,7 +805,7 @@ func (x *UpdateAttributeRequest) String() string { func (*UpdateAttributeRequest) ProtoMessage() {} func (x *UpdateAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[13] + mi := &file_attributes_attributes_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -890,7 +818,7 @@ func (x *UpdateAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeRequest.ProtoReflect.Descriptor instead. func (*UpdateAttributeRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{13} + return file_attributes_attributes_proto_rawDescGZIP(), []int{12} } func (x *UpdateAttributeRequest) GetId() string { @@ -918,7 +846,7 @@ type UpdateAttributeResponse struct { func (x *UpdateAttributeResponse) Reset() { *x = UpdateAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[14] + mi := &file_attributes_attributes_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -931,7 +859,7 @@ func (x *UpdateAttributeResponse) String() string { func (*UpdateAttributeResponse) ProtoMessage() {} func (x *UpdateAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[14] + mi := &file_attributes_attributes_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -944,7 +872,7 @@ func (x *UpdateAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeResponse.ProtoReflect.Descriptor instead. func (*UpdateAttributeResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{14} + return file_attributes_attributes_proto_rawDescGZIP(), []int{13} } func (x *UpdateAttributeResponse) GetAttribute() *Attribute { @@ -965,7 +893,7 @@ type DeleteAttributeRequest struct { func (x *DeleteAttributeRequest) Reset() { *x = DeleteAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[15] + mi := &file_attributes_attributes_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -978,7 +906,7 @@ func (x *DeleteAttributeRequest) String() string { func (*DeleteAttributeRequest) ProtoMessage() {} func (x *DeleteAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[15] + mi := &file_attributes_attributes_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -991,7 +919,7 @@ func (x *DeleteAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAttributeRequest.ProtoReflect.Descriptor instead. func (*DeleteAttributeRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{15} + return file_attributes_attributes_proto_rawDescGZIP(), []int{14} } func (x *DeleteAttributeRequest) GetId() string { @@ -1012,7 +940,7 @@ type DeleteAttributeResponse struct { func (x *DeleteAttributeResponse) Reset() { *x = DeleteAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[16] + mi := &file_attributes_attributes_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1025,7 +953,7 @@ func (x *DeleteAttributeResponse) String() string { func (*DeleteAttributeResponse) ProtoMessage() {} func (x *DeleteAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[16] + mi := &file_attributes_attributes_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1038,7 +966,7 @@ func (x *DeleteAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAttributeResponse.ProtoReflect.Descriptor instead. func (*DeleteAttributeResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{16} + return file_attributes_attributes_proto_rawDescGZIP(), []int{15} } func (x *DeleteAttributeResponse) GetAttribute() *Attribute { @@ -1062,7 +990,7 @@ type GetAttributeValueRequest struct { func (x *GetAttributeValueRequest) Reset() { *x = GetAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[17] + mi := &file_attributes_attributes_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1075,7 +1003,7 @@ func (x *GetAttributeValueRequest) String() string { func (*GetAttributeValueRequest) ProtoMessage() {} func (x *GetAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[17] + mi := &file_attributes_attributes_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1088,7 +1016,7 @@ func (x *GetAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeValueRequest.ProtoReflect.Descriptor instead. func (*GetAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{17} + return file_attributes_attributes_proto_rawDescGZIP(), []int{16} } func (x *GetAttributeValueRequest) GetId() string { @@ -1109,7 +1037,7 @@ type GetAttributeValueResponse struct { func (x *GetAttributeValueResponse) Reset() { *x = GetAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[18] + mi := &file_attributes_attributes_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1122,7 +1050,7 @@ func (x *GetAttributeValueResponse) String() string { func (*GetAttributeValueResponse) ProtoMessage() {} func (x *GetAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[18] + mi := &file_attributes_attributes_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1135,7 +1063,7 @@ func (x *GetAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeValueResponse.ProtoReflect.Descriptor instead. func (*GetAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{18} + return file_attributes_attributes_proto_rawDescGZIP(), []int{17} } func (x *GetAttributeValueResponse) GetValue() *Value { @@ -1156,7 +1084,7 @@ type ListAttributeValuesRequest struct { func (x *ListAttributeValuesRequest) Reset() { *x = ListAttributeValuesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[19] + mi := &file_attributes_attributes_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1169,7 +1097,7 @@ func (x *ListAttributeValuesRequest) String() string { func (*ListAttributeValuesRequest) ProtoMessage() {} func (x *ListAttributeValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[19] + mi := &file_attributes_attributes_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1182,7 +1110,7 @@ func (x *ListAttributeValuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributeValuesRequest.ProtoReflect.Descriptor instead. func (*ListAttributeValuesRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{19} + return file_attributes_attributes_proto_rawDescGZIP(), []int{18} } func (x *ListAttributeValuesRequest) GetAttributeId() string { @@ -1203,7 +1131,7 @@ type ListAttributeValuesResponse struct { func (x *ListAttributeValuesResponse) Reset() { *x = ListAttributeValuesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[20] + mi := &file_attributes_attributes_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1144,7 @@ func (x *ListAttributeValuesResponse) String() string { func (*ListAttributeValuesResponse) ProtoMessage() {} func (x *ListAttributeValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[20] + mi := &file_attributes_attributes_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1157,7 @@ func (x *ListAttributeValuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributeValuesResponse.ProtoReflect.Descriptor instead. func (*ListAttributeValuesResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{20} + return file_attributes_attributes_proto_rawDescGZIP(), []int{19} } func (x *ListAttributeValuesResponse) GetValues() []*Value { @@ -1244,14 +1172,14 @@ type CreateAttributeValueRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` - Value *ValueCreate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` + Value *ValueCreateUpdate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *CreateAttributeValueRequest) Reset() { *x = CreateAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[21] + mi := &file_attributes_attributes_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1264,7 +1192,7 @@ func (x *CreateAttributeValueRequest) String() string { func (*CreateAttributeValueRequest) ProtoMessage() {} func (x *CreateAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[21] + mi := &file_attributes_attributes_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1277,7 +1205,7 @@ func (x *CreateAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeValueRequest.ProtoReflect.Descriptor instead. func (*CreateAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{21} + return file_attributes_attributes_proto_rawDescGZIP(), []int{20} } func (x *CreateAttributeValueRequest) GetAttributeId() string { @@ -1287,7 +1215,7 @@ func (x *CreateAttributeValueRequest) GetAttributeId() string { return "" } -func (x *CreateAttributeValueRequest) GetValue() *ValueCreate { +func (x *CreateAttributeValueRequest) GetValue() *ValueCreateUpdate { if x != nil { return x.Value } @@ -1305,7 +1233,7 @@ type CreateAttributeValueResponse struct { func (x *CreateAttributeValueResponse) Reset() { *x = CreateAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[22] + mi := &file_attributes_attributes_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1318,7 +1246,7 @@ func (x *CreateAttributeValueResponse) String() string { func (*CreateAttributeValueResponse) ProtoMessage() {} func (x *CreateAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[22] + mi := &file_attributes_attributes_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1331,7 +1259,7 @@ func (x *CreateAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeValueResponse.ProtoReflect.Descriptor instead. func (*CreateAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{22} + return file_attributes_attributes_proto_rawDescGZIP(), []int{21} } func (x *CreateAttributeValueResponse) GetValue() *Value { @@ -1346,14 +1274,15 @@ type UpdateAttributeValueRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Value *ValueUpdate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Value *ValueCreateUpdate `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` } func (x *UpdateAttributeValueRequest) Reset() { *x = UpdateAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[23] + mi := &file_attributes_attributes_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1366,7 +1295,7 @@ func (x *UpdateAttributeValueRequest) String() string { func (*UpdateAttributeValueRequest) ProtoMessage() {} func (x *UpdateAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[23] + mi := &file_attributes_attributes_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1379,7 +1308,14 @@ func (x *UpdateAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeValueRequest.ProtoReflect.Descriptor instead. func (*UpdateAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{23} + return file_attributes_attributes_proto_rawDescGZIP(), []int{22} +} + +func (x *UpdateAttributeValueRequest) GetAttributeId() string { + if x != nil { + return x.AttributeId + } + return "" } func (x *UpdateAttributeValueRequest) GetId() string { @@ -1389,7 +1325,7 @@ func (x *UpdateAttributeValueRequest) GetId() string { return "" } -func (x *UpdateAttributeValueRequest) GetValue() *ValueUpdate { +func (x *UpdateAttributeValueRequest) GetValue() *ValueCreateUpdate { if x != nil { return x.Value } @@ -1407,7 +1343,7 @@ type UpdateAttributeValueResponse struct { func (x *UpdateAttributeValueResponse) Reset() { *x = UpdateAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[24] + mi := &file_attributes_attributes_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1420,7 +1356,7 @@ func (x *UpdateAttributeValueResponse) String() string { func (*UpdateAttributeValueResponse) ProtoMessage() {} func (x *UpdateAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[24] + mi := &file_attributes_attributes_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1433,7 +1369,7 @@ func (x *UpdateAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeValueResponse.ProtoReflect.Descriptor instead. func (*UpdateAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{24} + return file_attributes_attributes_proto_rawDescGZIP(), []int{23} } func (x *UpdateAttributeValueResponse) GetValue() *Value { @@ -1454,7 +1390,7 @@ type DeleteAttributeValueRequest struct { func (x *DeleteAttributeValueRequest) Reset() { *x = DeleteAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[25] + mi := &file_attributes_attributes_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1467,7 +1403,7 @@ func (x *DeleteAttributeValueRequest) String() string { func (*DeleteAttributeValueRequest) ProtoMessage() {} func (x *DeleteAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[25] + mi := &file_attributes_attributes_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1480,7 +1416,7 @@ func (x *DeleteAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAttributeValueRequest.ProtoReflect.Descriptor instead. func (*DeleteAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{25} + return file_attributes_attributes_proto_rawDescGZIP(), []int{24} } func (x *DeleteAttributeValueRequest) GetId() string { @@ -1501,7 +1437,7 @@ type DeleteAttributeValueResponse struct { func (x *DeleteAttributeValueResponse) Reset() { *x = DeleteAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_attributes_attributes_proto_msgTypes[26] + mi := &file_attributes_attributes_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1514,7 +1450,7 @@ func (x *DeleteAttributeValueResponse) String() string { func (*DeleteAttributeValueResponse) ProtoMessage() {} func (x *DeleteAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_attributes_attributes_proto_msgTypes[26] + mi := &file_attributes_attributes_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1527,7 +1463,7 @@ func (x *DeleteAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAttributeValueResponse.ProtoReflect.Descriptor instead. func (*DeleteAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_attributes_attributes_proto_rawDescGZIP(), []int{26} + return file_attributes_attributes_proto_rawDescGZIP(), []int{25} } func (x *DeleteAttributeValueResponse) GetValue() *Value { @@ -1565,7 +1501,7 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x88, 0x02, 0x0a, 0x15, 0x41, + 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, @@ -1579,248 +1515,244 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x72, 0x75, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, - 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, - 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x74, 0x0a, 0x1e, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, - 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x49, 0x64, 0x22, 0x67, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6b, 0x65, - 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x4f, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, - 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x22, 0x61, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x72, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x05, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x78, + 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x74, 0x0a, 0x1e, 0x44, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, + 0x14, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x65, 0x79, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x67, + 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x4f, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x22, 0x2d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x61, 0x0a, + 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x22, 0x4e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x22, 0x4e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x22, 0x79, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x22, 0x79, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x4e, 0x0a, 0x17, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, - 0x4e, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, - 0x30, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x30, 0x0a, 0x16, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4e, 0x0a, + 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x32, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x4e, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x64, 0x22, 0x44, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, + 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, + 0x22, 0x48, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x1b, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x1a, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x7f, - 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, - 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x47, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6c, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x35, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, - 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, - 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, - 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x1b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x35, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x1c, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x28, + 0x0a, 0x24, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x12, 0x26, 0x0a, - 0x22, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, - 0x43, 0x48, 0x59, 0x10, 0x03, 0x32, 0x81, 0x0a, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x23, 0x0a, + 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, + 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, + 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, + 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03, 0x32, 0x8e, 0x0a, 0x0a, 0x11, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x1f, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x7a, 0x0a, - 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x3a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x0b, 0x2f, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x0f, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, - 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x21, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x12, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x22, 0x0b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x7f, + 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x3a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x10, 0x2f, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, + 0x74, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, + 0x12, 0x19, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x14, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x19, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8c, 0x01, 0x0a, 0x14, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, - 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, - 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, - 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x21, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x14, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8c, 0x01, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, + 0x2a, 0x19, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x9b, 0x01, 0x0a, 0x0e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x0f, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, + 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, + 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1836,90 +1768,88 @@ func file_attributes_attributes_proto_rawDescGZIP() []byte { } var file_attributes_attributes_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_attributes_attributes_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_attributes_attributes_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_attributes_attributes_proto_goTypes = []interface{}{ (AttributeRuleTypeEnum)(0), // 0: attributes.AttributeRuleTypeEnum (*Attribute)(nil), // 1: attributes.Attribute (*AttributeCreateUpdate)(nil), // 2: attributes.AttributeCreateUpdate (*Value)(nil), // 3: attributes.Value - (*ValueCreate)(nil), // 4: attributes.ValueCreate - (*ValueUpdate)(nil), // 5: attributes.ValueUpdate - (*DefinitionKeyAccessServerGrant)(nil), // 6: attributes.DefinitionKeyAccessServerGrant - (*ValueKeyAccessServerGrant)(nil), // 7: attributes.ValueKeyAccessServerGrant - (*ListAttributesRequest)(nil), // 8: attributes.ListAttributesRequest - (*ListAttributesResponse)(nil), // 9: attributes.ListAttributesResponse - (*GetAttributeRequest)(nil), // 10: attributes.GetAttributeRequest - (*GetAttributeResponse)(nil), // 11: attributes.GetAttributeResponse - (*CreateAttributeRequest)(nil), // 12: attributes.CreateAttributeRequest - (*CreateAttributeResponse)(nil), // 13: attributes.CreateAttributeResponse - (*UpdateAttributeRequest)(nil), // 14: attributes.UpdateAttributeRequest - (*UpdateAttributeResponse)(nil), // 15: attributes.UpdateAttributeResponse - (*DeleteAttributeRequest)(nil), // 16: attributes.DeleteAttributeRequest - (*DeleteAttributeResponse)(nil), // 17: attributes.DeleteAttributeResponse - (*GetAttributeValueRequest)(nil), // 18: attributes.GetAttributeValueRequest - (*GetAttributeValueResponse)(nil), // 19: attributes.GetAttributeValueResponse - (*ListAttributeValuesRequest)(nil), // 20: attributes.ListAttributeValuesRequest - (*ListAttributeValuesResponse)(nil), // 21: attributes.ListAttributeValuesResponse - (*CreateAttributeValueRequest)(nil), // 22: attributes.CreateAttributeValueRequest - (*CreateAttributeValueResponse)(nil), // 23: attributes.CreateAttributeValueResponse - (*UpdateAttributeValueRequest)(nil), // 24: attributes.UpdateAttributeValueRequest - (*UpdateAttributeValueResponse)(nil), // 25: attributes.UpdateAttributeValueResponse - (*DeleteAttributeValueRequest)(nil), // 26: attributes.DeleteAttributeValueRequest - (*DeleteAttributeValueResponse)(nil), // 27: attributes.DeleteAttributeValueResponse - (*common.Metadata)(nil), // 28: common.Metadata - (*namespaces.Namespace)(nil), // 29: namespaces.Namespace - (*common.MetadataMutable)(nil), // 30: common.MetadataMutable + (*ValueCreateUpdate)(nil), // 4: attributes.ValueCreateUpdate + (*DefinitionKeyAccessServerGrant)(nil), // 5: attributes.DefinitionKeyAccessServerGrant + (*ValueKeyAccessServerGrant)(nil), // 6: attributes.ValueKeyAccessServerGrant + (*ListAttributesRequest)(nil), // 7: attributes.ListAttributesRequest + (*ListAttributesResponse)(nil), // 8: attributes.ListAttributesResponse + (*GetAttributeRequest)(nil), // 9: attributes.GetAttributeRequest + (*GetAttributeResponse)(nil), // 10: attributes.GetAttributeResponse + (*CreateAttributeRequest)(nil), // 11: attributes.CreateAttributeRequest + (*CreateAttributeResponse)(nil), // 12: attributes.CreateAttributeResponse + (*UpdateAttributeRequest)(nil), // 13: attributes.UpdateAttributeRequest + (*UpdateAttributeResponse)(nil), // 14: attributes.UpdateAttributeResponse + (*DeleteAttributeRequest)(nil), // 15: attributes.DeleteAttributeRequest + (*DeleteAttributeResponse)(nil), // 16: attributes.DeleteAttributeResponse + (*GetAttributeValueRequest)(nil), // 17: attributes.GetAttributeValueRequest + (*GetAttributeValueResponse)(nil), // 18: attributes.GetAttributeValueResponse + (*ListAttributeValuesRequest)(nil), // 19: attributes.ListAttributeValuesRequest + (*ListAttributeValuesResponse)(nil), // 20: attributes.ListAttributeValuesResponse + (*CreateAttributeValueRequest)(nil), // 21: attributes.CreateAttributeValueRequest + (*CreateAttributeValueResponse)(nil), // 22: attributes.CreateAttributeValueResponse + (*UpdateAttributeValueRequest)(nil), // 23: attributes.UpdateAttributeValueRequest + (*UpdateAttributeValueResponse)(nil), // 24: attributes.UpdateAttributeValueResponse + (*DeleteAttributeValueRequest)(nil), // 25: attributes.DeleteAttributeValueRequest + (*DeleteAttributeValueResponse)(nil), // 26: attributes.DeleteAttributeValueResponse + (*common.Metadata)(nil), // 27: common.Metadata + (*namespaces.Namespace)(nil), // 28: namespaces.Namespace + (*common.MetadataMutable)(nil), // 29: common.MetadataMutable } var file_attributes_attributes_proto_depIdxs = []int32{ - 28, // 0: attributes.Attribute.metadata:type_name -> common.Metadata - 29, // 1: attributes.Attribute.namespace:type_name -> namespaces.Namespace + 27, // 0: attributes.Attribute.metadata:type_name -> common.Metadata + 28, // 1: attributes.Attribute.namespace:type_name -> namespaces.Namespace 0, // 2: attributes.Attribute.rule:type_name -> attributes.AttributeRuleTypeEnum 3, // 3: attributes.Attribute.values:type_name -> attributes.Value - 30, // 4: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable + 29, // 4: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable 0, // 5: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum - 4, // 6: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreate - 28, // 7: attributes.Value.metadata:type_name -> common.Metadata - 30, // 8: attributes.ValueCreate.metadata:type_name -> common.MetadataMutable - 30, // 9: attributes.ValueUpdate.metadata:type_name -> common.MetadataMutable - 1, // 10: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute - 1, // 11: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 12: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 13: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 14: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 15: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute - 1, // 16: attributes.DeleteAttributeResponse.attribute:type_name -> attributes.Attribute - 3, // 17: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value - 3, // 18: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value - 4, // 19: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreate - 3, // 20: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value - 5, // 21: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueUpdate - 3, // 22: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value - 3, // 23: attributes.DeleteAttributeValueResponse.value:type_name -> attributes.Value - 8, // 24: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest - 20, // 25: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest - 10, // 26: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest - 12, // 27: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest - 14, // 28: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest - 16, // 29: attributes.AttributesService.DeleteAttribute:input_type -> attributes.DeleteAttributeRequest - 18, // 30: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest - 22, // 31: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest - 24, // 32: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest - 26, // 33: attributes.AttributesService.DeleteAttributeValue:input_type -> attributes.DeleteAttributeValueRequest - 9, // 34: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse - 21, // 35: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse - 11, // 36: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse - 13, // 37: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse - 15, // 38: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse - 17, // 39: attributes.AttributesService.DeleteAttribute:output_type -> attributes.DeleteAttributeResponse - 19, // 40: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse - 23, // 41: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse - 25, // 42: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse - 27, // 43: attributes.AttributesService.DeleteAttributeValue:output_type -> attributes.DeleteAttributeValueResponse - 34, // [34:44] is the sub-list for method output_type - 24, // [24:34] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 4, // 6: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate + 27, // 7: attributes.Value.metadata:type_name -> common.Metadata + 29, // 8: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable + 1, // 9: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute + 1, // 10: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 11: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 12: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 13: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 14: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute + 1, // 15: attributes.DeleteAttributeResponse.attribute:type_name -> attributes.Attribute + 3, // 16: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value + 3, // 17: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value + 4, // 18: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 19: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value + 4, // 20: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 21: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value + 3, // 22: attributes.DeleteAttributeValueResponse.value:type_name -> attributes.Value + 7, // 23: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest + 19, // 24: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest + 9, // 25: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest + 11, // 26: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest + 13, // 27: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest + 15, // 28: attributes.AttributesService.DeleteAttribute:input_type -> attributes.DeleteAttributeRequest + 17, // 29: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest + 21, // 30: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest + 23, // 31: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest + 25, // 32: attributes.AttributesService.DeleteAttributeValue:input_type -> attributes.DeleteAttributeValueRequest + 8, // 33: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse + 20, // 34: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse + 10, // 35: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse + 12, // 36: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse + 14, // 37: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse + 16, // 38: attributes.AttributesService.DeleteAttribute:output_type -> attributes.DeleteAttributeResponse + 18, // 39: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse + 22, // 40: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse + 24, // 41: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse + 26, // 42: attributes.AttributesService.DeleteAttributeValue:output_type -> attributes.DeleteAttributeValueResponse + 33, // [33:43] is the sub-list for method output_type + 23, // [23:33] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name } func init() { file_attributes_attributes_proto_init() } @@ -1965,7 +1895,7 @@ func file_attributes_attributes_proto_init() { } } file_attributes_attributes_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueCreate); i { + switch v := v.(*ValueCreateUpdate); i { case 0: return &v.state case 1: @@ -1977,18 +1907,6 @@ func file_attributes_attributes_proto_init() { } } file_attributes_attributes_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_attributes_attributes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefinitionKeyAccessServerGrant); i { case 0: return &v.state @@ -2000,7 +1918,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValueKeyAccessServerGrant); i { case 0: return &v.state @@ -2012,7 +1930,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributesRequest); i { case 0: return &v.state @@ -2024,7 +1942,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributesResponse); i { case 0: return &v.state @@ -2036,7 +1954,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeRequest); i { case 0: return &v.state @@ -2048,7 +1966,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeResponse); i { case 0: return &v.state @@ -2060,7 +1978,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeRequest); i { case 0: return &v.state @@ -2072,7 +1990,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeResponse); i { case 0: return &v.state @@ -2084,7 +2002,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeRequest); i { case 0: return &v.state @@ -2096,7 +2014,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeResponse); i { case 0: return &v.state @@ -2108,7 +2026,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAttributeRequest); i { case 0: return &v.state @@ -2120,7 +2038,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAttributeResponse); i { case 0: return &v.state @@ -2132,7 +2050,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeValueRequest); i { case 0: return &v.state @@ -2144,7 +2062,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeValueResponse); i { case 0: return &v.state @@ -2156,7 +2074,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributeValuesRequest); i { case 0: return &v.state @@ -2168,7 +2086,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributeValuesResponse); i { case 0: return &v.state @@ -2180,7 +2098,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeValueRequest); i { case 0: return &v.state @@ -2192,7 +2110,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeValueResponse); i { case 0: return &v.state @@ -2204,7 +2122,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeValueRequest); i { case 0: return &v.state @@ -2216,7 +2134,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeValueResponse); i { case 0: return &v.state @@ -2228,7 +2146,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAttributeValueRequest); i { case 0: return &v.state @@ -2240,7 +2158,7 @@ func file_attributes_attributes_proto_init() { return nil } } - file_attributes_attributes_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_attributes_attributes_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAttributeValueResponse); i { case 0: return &v.state @@ -2259,7 +2177,7 @@ func file_attributes_attributes_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_attributes_attributes_proto_rawDesc, NumEnums: 1, - NumMessages: 27, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/sdk/attributes/attributes.pb.gw.go b/sdk/attributes/attributes.pb.gw.go index 075fd66321..715d39eeb5 100644 --- a/sdk/attributes/attributes.pb.gw.go +++ b/sdk/attributes/attributes.pb.gw.go @@ -376,6 +376,16 @@ func request_AttributesService_UpdateAttributeValue_0(ctx context.Context, marsh _ = err ) + val, ok = pathParams["attribute_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attribute_id") + } + + protoReq.AttributeId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attribute_id", err) + } + val, ok = pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -410,6 +420,16 @@ func local_request_AttributesService_UpdateAttributeValue_0(ctx context.Context, _ = err ) + val, ok = pathParams["attribute_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attribute_id") + } + + protoReq.AttributeId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attribute_id", err) + } + val, ok = pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -641,7 +661,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/{attribute_id}/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -862,7 +882,7 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/{attribute_id}/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -916,7 +936,7 @@ var ( pattern_AttributesService_CreateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"attributes", "attribute_id", "values"}, "")) - pattern_AttributesService_UpdateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "_", "values", "id"}, "")) + pattern_AttributesService_UpdateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "attribute_id", "values", "id"}, "")) pattern_AttributesService_DeleteAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "_", "values", "id"}, "")) ) diff --git a/services/attributes/attributes.go b/services/attributes/attributes.go index 6aa256c581..5d1a25ea95 100644 --- a/services/attributes/attributes.go +++ b/services/attributes/attributes.go @@ -110,7 +110,7 @@ func (s *AttributesService) DeleteAttribute(ctx context.Context, /// func (s *AttributesService) CreateAttributeValue(ctx context.Context, req *attributes.CreateAttributeValueRequest) (*attributes.CreateAttributeValueResponse, error) { - item, err := s.dbClient.CreateAttributeValue(ctx, req.Value) + item, err := s.dbClient.CreateAttributeValue(ctx, req.AttributeId, req.Value) if err != nil { slog.Error(services.ErrCreatingResource, slog.String("error", err.Error())) return nil, status.Error(codes.Internal, services.ErrCreatingResource)