diff --git a/docs/grpc/index.html b/docs/grpc/index.html index c3c252a786..97d74dc88e 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -984,6 +984,38 @@

Table of Contents

MGetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry +
  • + MGetEntitleableAttributesByFqnsRequest +
  • + +
  • + MGetEntitleableAttributesByFqnsResponse +
  • + +
  • + MGetEntitleableAttributesByFqnsResponse.EntitleableAttribute +
  • + +
  • + MGetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry +
  • + +
  • + MGetKeyMappingsByFqnsRequest +
  • + +
  • + MGetKeyMappingsByFqnsResponse +
  • + +
  • + MGetKeyMappingsByFqnsResponse.AttributeKeyMapping +
  • + +
  • + MGetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry +
  • +
  • MListAttributeValuesRequest
  • @@ -8775,6 +8807,264 @@

    GetEntitleableAttributesByFqnsRequest

    +

    Entitleable Attributes By FQNs (server-side decisioning path)

    Narrow read API for Auth Service / Access PDP entitlement resolution. Given

    attribute value FQNs, returns the attribute rule, the value identity, the

    ordered definition value FQNs (for hierarchy rule logic), and the subject

    mappings needed to resolve entitlements. It does not return KAS keys, grants,

    resource mappings, obligations, or metadata.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fqnsstringrepeated

    Required +Fully Qualified Names of attribute values (i.e. https://<namespace>/attr/<attribute_name>/value/<value_name>), normalized to lower case.

    + + + + + +

    GetEntitleableAttributesByFqnsResponse

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fqn_entitleable_attributesGetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntryrepeated

    map of FQNs to their entitleable attribute information, for O(1) lookup

    + + + + + +

    GetEntitleableAttributesByFqnsResponse.EntitleableAttribute

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fqnstring

    the attribute value FQN this entry is for

    attribute_fqnstring

    the parent attribute definition FQN

    rulepolicy.AttributeRuleTypeEnum

    the attribute rule, which drives rule logic during decisioning

    value_idstring

    identity of the attribute value

    definition_value_fqnsstringrepeated

    the definition's value FQNs in order, used for hierarchy rule expansion

    subject_mappingspolicy.SubjectMappingrepeated

    subject mappings used to resolve entitlements for this value

    + + + + + +

    GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueGetEntitleableAttributesByFqnsResponse.EntitleableAttribute

    + + + + + +

    GetKeyMappingsByFqnsRequest

    +

    Key Mappings By FQNs (client-side key split path)

    Narrow read API for the client-side encrypt flow. Given attribute value FQNs,

    returns only the information needed to build key splits: the governing

    attribute rule and the effective KAS keys resolved server-side. It does not

    return subject mappings, resource mappings, obligations, sibling values, or

    metadata. Prefer this over GetAttributeValuesByFqns when building splits.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fqnsstringrepeated

    Required +Fully Qualified Names of attribute values (i.e. https://<namespace>/attr/<attribute_name>/value/<value_name>), normalized to lower case.

    + + + + + +

    GetKeyMappingsByFqnsResponse

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fqn_key_mappingsGetKeyMappingsByFqnsResponse.FqnKeyMappingsEntryrepeated

    map of FQNs to their key mapping information, for O(1) lookup

    + + + + + +

    GetKeyMappingsByFqnsResponse.AttributeKeyMapping

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fqnstring

    the attribute value FQN this mapping is for

    rulepolicy.AttributeRuleTypeEnum

    the attribute rule, which governs how splits combine (any_of / all_of / hierarchy)

    keyspolicy.SimpleKasKeyrepeated

    effective KAS keys resolved for this value (value > definition > namespace +precedence, key mappings preferred over legacy grants); may be empty

    + + + + + +

    GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueGetKeyMappingsByFqnsResponse.AttributeKeyMapping

    + + + + +

    ListAttributeValuesRequest

    @@ -9393,6 +9683,23 @@

    AttributesService

    + + GetKeyMappingsByFqns + GetKeyMappingsByFqnsRequest + GetKeyMappingsByFqnsResponse +

    Returns only key-mapping information (rule and effective KAS keys) for the +requested attribute value FQNs, for client-side key split construction.

    + + + + GetEntitleableAttributesByFqns + GetEntitleableAttributesByFqnsRequest + GetEntitleableAttributesByFqnsResponse +

    Returns only entitlement-relevant information (rule, value identity, ordered +definition values, and subject mappings) for the requested attribute value +FQNs, for server-side decisioning / entitlement resolution.

    + + CreateAttribute CreateAttributeRequest @@ -9577,6 +9884,16 @@

    Methods with idempotency_level option

    NO_SIDE_EFFECTS

    + + GetKeyMappingsByFqns +

    NO_SIDE_EFFECTS

    + + + + GetEntitleableAttributesByFqns +

    NO_SIDE_EFFECTS

    + + GetAttributeValue

    NO_SIDE_EFFECTS

    diff --git a/docs/openapi/policy/attributes/attributes.openapi.yaml b/docs/openapi/policy/attributes/attributes.openapi.yaml index cbdde67a8c..b43abb3013 100644 --- a/docs/openapi/policy/attributes/attributes.openapi.yaml +++ b/docs/openapi/policy/attributes/attributes.openapi.yaml @@ -150,6 +150,83 @@ paths: application/json: schema: $ref: '#/components/schemas/policy.attributes.GetAttributeValuesByFqnsResponse' + /policy.attributes.AttributesService/GetKeyMappingsByFqns: + post: + tags: + - policy.attributes.AttributesService + summary: GetKeyMappingsByFqns + description: |- + Returns only key-mapping information (rule and effective KAS keys) for the + requested attribute value FQNs, for client-side key split construction. + operationId: policy.attributes.AttributesService.GetKeyMappingsByFqns + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/policy.attributes.GetKeyMappingsByFqnsRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/policy.attributes.GetKeyMappingsByFqnsResponse' + /policy.attributes.AttributesService/GetEntitleableAttributesByFqns: + post: + tags: + - policy.attributes.AttributesService + summary: GetEntitleableAttributesByFqns + description: |- + Returns only entitlement-relevant information (rule, value identity, ordered + definition values, and subject mappings) for the requested attribute value + FQNs, for server-side decisioning / entitlement resolution. + operationId: policy.attributes.AttributesService.GetEntitleableAttributesByFqns + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse' /policy.attributes.AttributesService/CreateAttribute: post: tags: @@ -2102,6 +2179,156 @@ components: $ref: '#/components/schemas/policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue' title: FqnAttributeValuesEntry additionalProperties: false + policy.attributes.GetEntitleableAttributesByFqnsRequest: + type: object + properties: + fqns: + type: array + items: + type: string + maxItems: 250 + minItems: 1 + title: fqns + maxItems: 250 + minItems: 1 + description: |- + Required + Fully Qualified Names of attribute values (i.e. https:///attr//value/), normalized to lower case. + title: GetEntitleableAttributesByFqnsRequest + additionalProperties: false + description: |- + Entitleable Attributes By FQNs (server-side decisioning path) + + Narrow read API for Auth Service / Access PDP entitlement resolution. Given + attribute value FQNs, returns the attribute rule, the value identity, the + ordered definition value FQNs (for hierarchy rule logic), and the subject + mappings needed to resolve entitlements. It does not return KAS keys, grants, + resource mappings, obligations, or metadata. + policy.attributes.GetEntitleableAttributesByFqnsResponse: + type: object + properties: + fqnEntitleableAttributes: + type: object + title: fqn_entitleable_attributes + additionalProperties: + title: value + $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute' + description: map of FQNs to their entitleable attribute information, for O(1) lookup + title: GetEntitleableAttributesByFqnsResponse + additionalProperties: false + policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute: + type: object + properties: + fqn: + type: string + title: fqn + description: the attribute value FQN this entry is for + attributeFqn: + type: string + title: attribute_fqn + description: the parent attribute definition FQN + rule: + title: rule + description: the attribute rule, which drives rule logic during decisioning + $ref: '#/components/schemas/policy.AttributeRuleTypeEnum' + valueId: + type: string + title: value_id + description: identity of the attribute value + definitionValueFqns: + type: array + items: + type: string + title: definition_value_fqns + description: the definition's value FQNs in order, used for hierarchy rule expansion + subjectMappings: + type: array + items: + $ref: '#/components/schemas/policy.SubjectMapping' + title: subject_mappings + description: subject mappings used to resolve entitlements for this value + title: EntitleableAttribute + additionalProperties: false + policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry: + type: object + properties: + key: + type: string + title: key + value: + title: value + $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute' + title: FqnEntitleableAttributesEntry + additionalProperties: false + policy.attributes.GetKeyMappingsByFqnsRequest: + type: object + properties: + fqns: + type: array + items: + type: string + maxItems: 250 + minItems: 1 + title: fqns + maxItems: 250 + minItems: 1 + description: |- + Required + Fully Qualified Names of attribute values (i.e. https:///attr//value/), normalized to lower case. + title: GetKeyMappingsByFqnsRequest + additionalProperties: false + description: |- + Key Mappings By FQNs (client-side key split path) + + Narrow read API for the client-side encrypt flow. Given attribute value FQNs, + returns only the information needed to build key splits: the governing + attribute rule and the effective KAS keys resolved server-side. It does not + return subject mappings, resource mappings, obligations, sibling values, or + metadata. Prefer this over GetAttributeValuesByFqns when building splits. + policy.attributes.GetKeyMappingsByFqnsResponse: + type: object + properties: + fqnKeyMappings: + type: object + title: fqn_key_mappings + additionalProperties: + title: value + $ref: '#/components/schemas/policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping' + description: map of FQNs to their key mapping information, for O(1) lookup + title: GetKeyMappingsByFqnsResponse + additionalProperties: false + policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping: + type: object + properties: + fqn: + type: string + title: fqn + description: the attribute value FQN this mapping is for + rule: + title: rule + description: the attribute rule, which governs how splits combine (any_of / all_of / hierarchy) + $ref: '#/components/schemas/policy.AttributeRuleTypeEnum' + keys: + type: array + items: + $ref: '#/components/schemas/policy.SimpleKasKey' + title: keys + description: |- + effective KAS keys resolved for this value (value > definition > namespace + precedence, key mappings preferred over legacy grants); may be empty + title: AttributeKeyMapping + additionalProperties: false + policy.attributes.GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry: + type: object + properties: + key: + type: string + title: key + value: + title: value + $ref: '#/components/schemas/policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping' + title: FqnKeyMappingsEntry + additionalProperties: false policy.attributes.ListAttributeValuesRequest: type: object properties: diff --git a/protocol/go/policy/attributes/attributes.pb.go b/protocol/go/policy/attributes/attributes.pb.go index 23da96ca11..84960e6a51 100644 --- a/protocol/go/policy/attributes/attributes.pb.go +++ b/protocol/go/policy/attributes/attributes.pb.go @@ -1773,6 +1773,214 @@ func (x *GetAttributeValuesByFqnsResponse) GetFqnAttributeValues() map[string]*G return nil } +// Key Mappings By FQNs (client-side key split path) +// +// Narrow read API for the client-side encrypt flow. Given attribute value FQNs, +// returns only the information needed to build key splits: the governing +// attribute rule and the effective KAS keys resolved server-side. It does not +// return subject mappings, resource mappings, obligations, sibling values, or +// metadata. Prefer this over GetAttributeValuesByFqns when building splits. +type GetKeyMappingsByFqnsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required + // Fully Qualified Names of attribute values (i.e. https:///attr//value/), normalized to lower case. + Fqns []string `protobuf:"bytes,1,rep,name=fqns,proto3" json:"fqns,omitempty"` +} + +func (x *GetKeyMappingsByFqnsRequest) Reset() { + *x = GetKeyMappingsByFqnsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_attributes_attributes_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetKeyMappingsByFqnsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetKeyMappingsByFqnsRequest) ProtoMessage() {} + +func (x *GetKeyMappingsByFqnsRequest) ProtoReflect() protoreflect.Message { + mi := &file_policy_attributes_attributes_proto_msgTypes[28] + 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 GetKeyMappingsByFqnsRequest.ProtoReflect.Descriptor instead. +func (*GetKeyMappingsByFqnsRequest) Descriptor() ([]byte, []int) { + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{28} +} + +func (x *GetKeyMappingsByFqnsRequest) GetFqns() []string { + if x != nil { + return x.Fqns + } + return nil +} + +type GetKeyMappingsByFqnsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // map of FQNs to their key mapping information, for O(1) lookup + FqnKeyMappings map[string]*GetKeyMappingsByFqnsResponse_AttributeKeyMapping `protobuf:"bytes,1,rep,name=fqn_key_mappings,json=fqnKeyMappings,proto3" json:"fqn_key_mappings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GetKeyMappingsByFqnsResponse) Reset() { + *x = GetKeyMappingsByFqnsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_attributes_attributes_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetKeyMappingsByFqnsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetKeyMappingsByFqnsResponse) ProtoMessage() {} + +func (x *GetKeyMappingsByFqnsResponse) ProtoReflect() protoreflect.Message { + mi := &file_policy_attributes_attributes_proto_msgTypes[29] + 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 GetKeyMappingsByFqnsResponse.ProtoReflect.Descriptor instead. +func (*GetKeyMappingsByFqnsResponse) Descriptor() ([]byte, []int) { + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{29} +} + +func (x *GetKeyMappingsByFqnsResponse) GetFqnKeyMappings() map[string]*GetKeyMappingsByFqnsResponse_AttributeKeyMapping { + if x != nil { + return x.FqnKeyMappings + } + return nil +} + +// Entitleable Attributes By FQNs (server-side decisioning path) +// +// Narrow read API for Auth Service / Access PDP entitlement resolution. Given +// attribute value FQNs, returns the attribute rule, the value identity, the +// ordered definition value FQNs (for hierarchy rule logic), and the subject +// mappings needed to resolve entitlements. It does not return KAS keys, grants, +// resource mappings, obligations, or metadata. +type GetEntitleableAttributesByFqnsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required + // Fully Qualified Names of attribute values (i.e. https:///attr//value/), normalized to lower case. + Fqns []string `protobuf:"bytes,1,rep,name=fqns,proto3" json:"fqns,omitempty"` +} + +func (x *GetEntitleableAttributesByFqnsRequest) Reset() { + *x = GetEntitleableAttributesByFqnsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_attributes_attributes_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEntitleableAttributesByFqnsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEntitleableAttributesByFqnsRequest) ProtoMessage() {} + +func (x *GetEntitleableAttributesByFqnsRequest) ProtoReflect() protoreflect.Message { + mi := &file_policy_attributes_attributes_proto_msgTypes[30] + 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 GetEntitleableAttributesByFqnsRequest.ProtoReflect.Descriptor instead. +func (*GetEntitleableAttributesByFqnsRequest) Descriptor() ([]byte, []int) { + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{30} +} + +func (x *GetEntitleableAttributesByFqnsRequest) GetFqns() []string { + if x != nil { + return x.Fqns + } + return nil +} + +type GetEntitleableAttributesByFqnsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // map of FQNs to their entitleable attribute information, for O(1) lookup + FqnEntitleableAttributes map[string]*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute `protobuf:"bytes,1,rep,name=fqn_entitleable_attributes,json=fqnEntitleableAttributes,proto3" json:"fqn_entitleable_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GetEntitleableAttributesByFqnsResponse) Reset() { + *x = GetEntitleableAttributesByFqnsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_attributes_attributes_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEntitleableAttributesByFqnsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEntitleableAttributesByFqnsResponse) ProtoMessage() {} + +func (x *GetEntitleableAttributesByFqnsResponse) ProtoReflect() protoreflect.Message { + mi := &file_policy_attributes_attributes_proto_msgTypes[31] + 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 GetEntitleableAttributesByFqnsResponse.ProtoReflect.Descriptor instead. +func (*GetEntitleableAttributesByFqnsResponse) Descriptor() ([]byte, []int) { + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31} +} + +func (x *GetEntitleableAttributesByFqnsResponse) GetFqnEntitleableAttributes() map[string]*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute { + if x != nil { + return x.FqnEntitleableAttributes + } + return nil +} + // Deprecated: utilize AssignPublicKeyToAttributeRequest // // Deprecated: Marked as deprecated in policy/attributes/attributes.proto. @@ -1788,7 +1996,7 @@ type AssignKeyAccessServerToAttributeRequest struct { func (x *AssignKeyAccessServerToAttributeRequest) Reset() { *x = AssignKeyAccessServerToAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[28] + mi := &file_policy_attributes_attributes_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1801,7 +2009,7 @@ func (x *AssignKeyAccessServerToAttributeRequest) String() string { func (*AssignKeyAccessServerToAttributeRequest) ProtoMessage() {} func (x *AssignKeyAccessServerToAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[28] + mi := &file_policy_attributes_attributes_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1814,7 +2022,7 @@ func (x *AssignKeyAccessServerToAttributeRequest) ProtoReflect() protoreflect.Me // Deprecated: Use AssignKeyAccessServerToAttributeRequest.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{28} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{32} } func (x *AssignKeyAccessServerToAttributeRequest) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1836,7 +2044,7 @@ type AssignKeyAccessServerToAttributeResponse struct { func (x *AssignKeyAccessServerToAttributeResponse) Reset() { *x = AssignKeyAccessServerToAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[29] + mi := &file_policy_attributes_attributes_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1849,7 +2057,7 @@ func (x *AssignKeyAccessServerToAttributeResponse) String() string { func (*AssignKeyAccessServerToAttributeResponse) ProtoMessage() {} func (x *AssignKeyAccessServerToAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[29] + mi := &file_policy_attributes_attributes_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1862,7 +2070,7 @@ func (x *AssignKeyAccessServerToAttributeResponse) ProtoReflect() protoreflect.M // Deprecated: Use AssignKeyAccessServerToAttributeResponse.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{29} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{33} } func (x *AssignKeyAccessServerToAttributeResponse) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1887,7 +2095,7 @@ type RemoveKeyAccessServerFromAttributeRequest struct { func (x *RemoveKeyAccessServerFromAttributeRequest) Reset() { *x = RemoveKeyAccessServerFromAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[30] + mi := &file_policy_attributes_attributes_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1900,7 +2108,7 @@ func (x *RemoveKeyAccessServerFromAttributeRequest) String() string { func (*RemoveKeyAccessServerFromAttributeRequest) ProtoMessage() {} func (x *RemoveKeyAccessServerFromAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[30] + mi := &file_policy_attributes_attributes_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1913,7 +2121,7 @@ func (x *RemoveKeyAccessServerFromAttributeRequest) ProtoReflect() protoreflect. // Deprecated: Use RemoveKeyAccessServerFromAttributeRequest.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{30} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{34} } func (x *RemoveKeyAccessServerFromAttributeRequest) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1935,7 +2143,7 @@ type RemoveKeyAccessServerFromAttributeResponse struct { func (x *RemoveKeyAccessServerFromAttributeResponse) Reset() { *x = RemoveKeyAccessServerFromAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[31] + mi := &file_policy_attributes_attributes_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1948,7 +2156,7 @@ func (x *RemoveKeyAccessServerFromAttributeResponse) String() string { func (*RemoveKeyAccessServerFromAttributeResponse) ProtoMessage() {} func (x *RemoveKeyAccessServerFromAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[31] + mi := &file_policy_attributes_attributes_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1961,7 +2169,7 @@ func (x *RemoveKeyAccessServerFromAttributeResponse) ProtoReflect() protoreflect // Deprecated: Use RemoveKeyAccessServerFromAttributeResponse.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{35} } func (x *RemoveKeyAccessServerFromAttributeResponse) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1986,7 +2194,7 @@ type AssignKeyAccessServerToValueRequest struct { func (x *AssignKeyAccessServerToValueRequest) Reset() { *x = AssignKeyAccessServerToValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[32] + mi := &file_policy_attributes_attributes_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1999,7 +2207,7 @@ func (x *AssignKeyAccessServerToValueRequest) String() string { func (*AssignKeyAccessServerToValueRequest) ProtoMessage() {} func (x *AssignKeyAccessServerToValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[32] + mi := &file_policy_attributes_attributes_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2012,7 +2220,7 @@ func (x *AssignKeyAccessServerToValueRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use AssignKeyAccessServerToValueRequest.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{32} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{36} } func (x *AssignKeyAccessServerToValueRequest) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -2034,7 +2242,7 @@ type AssignKeyAccessServerToValueResponse struct { func (x *AssignKeyAccessServerToValueResponse) Reset() { *x = AssignKeyAccessServerToValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[33] + mi := &file_policy_attributes_attributes_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2047,7 +2255,7 @@ func (x *AssignKeyAccessServerToValueResponse) String() string { func (*AssignKeyAccessServerToValueResponse) ProtoMessage() {} func (x *AssignKeyAccessServerToValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[33] + mi := &file_policy_attributes_attributes_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2060,7 +2268,7 @@ func (x *AssignKeyAccessServerToValueResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use AssignKeyAccessServerToValueResponse.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{33} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{37} } func (x *AssignKeyAccessServerToValueResponse) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -2085,7 +2293,7 @@ type RemoveKeyAccessServerFromValueRequest struct { func (x *RemoveKeyAccessServerFromValueRequest) Reset() { *x = RemoveKeyAccessServerFromValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[34] + mi := &file_policy_attributes_attributes_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2098,7 +2306,7 @@ func (x *RemoveKeyAccessServerFromValueRequest) String() string { func (*RemoveKeyAccessServerFromValueRequest) ProtoMessage() {} func (x *RemoveKeyAccessServerFromValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[34] + mi := &file_policy_attributes_attributes_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2111,7 +2319,7 @@ func (x *RemoveKeyAccessServerFromValueRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use RemoveKeyAccessServerFromValueRequest.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{34} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{38} } func (x *RemoveKeyAccessServerFromValueRequest) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -2133,7 +2341,7 @@ type RemoveKeyAccessServerFromValueResponse struct { func (x *RemoveKeyAccessServerFromValueResponse) Reset() { *x = RemoveKeyAccessServerFromValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[35] + mi := &file_policy_attributes_attributes_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2146,7 +2354,7 @@ func (x *RemoveKeyAccessServerFromValueResponse) String() string { func (*RemoveKeyAccessServerFromValueResponse) ProtoMessage() {} func (x *RemoveKeyAccessServerFromValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[35] + mi := &file_policy_attributes_attributes_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2159,7 +2367,7 @@ func (x *RemoveKeyAccessServerFromValueResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use RemoveKeyAccessServerFromValueResponse.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{35} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{39} } func (x *RemoveKeyAccessServerFromValueResponse) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -2181,7 +2389,7 @@ type AssignPublicKeyToAttributeRequest struct { func (x *AssignPublicKeyToAttributeRequest) Reset() { *x = AssignPublicKeyToAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[36] + mi := &file_policy_attributes_attributes_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2194,7 +2402,7 @@ func (x *AssignPublicKeyToAttributeRequest) String() string { func (*AssignPublicKeyToAttributeRequest) ProtoMessage() {} func (x *AssignPublicKeyToAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[36] + mi := &file_policy_attributes_attributes_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2207,7 +2415,7 @@ func (x *AssignPublicKeyToAttributeRequest) ProtoReflect() protoreflect.Message // Deprecated: Use AssignPublicKeyToAttributeRequest.ProtoReflect.Descriptor instead. func (*AssignPublicKeyToAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{36} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{40} } func (x *AssignPublicKeyToAttributeRequest) GetAttributeKey() *AttributeKey { @@ -2229,7 +2437,7 @@ type AssignPublicKeyToAttributeResponse struct { func (x *AssignPublicKeyToAttributeResponse) Reset() { *x = AssignPublicKeyToAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[37] + mi := &file_policy_attributes_attributes_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2242,7 +2450,7 @@ func (x *AssignPublicKeyToAttributeResponse) String() string { func (*AssignPublicKeyToAttributeResponse) ProtoMessage() {} func (x *AssignPublicKeyToAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[37] + mi := &file_policy_attributes_attributes_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2255,7 +2463,7 @@ func (x *AssignPublicKeyToAttributeResponse) ProtoReflect() protoreflect.Message // Deprecated: Use AssignPublicKeyToAttributeResponse.ProtoReflect.Descriptor instead. func (*AssignPublicKeyToAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{37} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{41} } func (x *AssignPublicKeyToAttributeResponse) GetAttributeKey() *AttributeKey { @@ -2277,7 +2485,7 @@ type RemovePublicKeyFromAttributeRequest struct { func (x *RemovePublicKeyFromAttributeRequest) Reset() { *x = RemovePublicKeyFromAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[38] + mi := &file_policy_attributes_attributes_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2290,7 +2498,7 @@ func (x *RemovePublicKeyFromAttributeRequest) String() string { func (*RemovePublicKeyFromAttributeRequest) ProtoMessage() {} func (x *RemovePublicKeyFromAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[38] + mi := &file_policy_attributes_attributes_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2303,7 +2511,7 @@ func (x *RemovePublicKeyFromAttributeRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use RemovePublicKeyFromAttributeRequest.ProtoReflect.Descriptor instead. func (*RemovePublicKeyFromAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{38} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{42} } func (x *RemovePublicKeyFromAttributeRequest) GetAttributeKey() *AttributeKey { @@ -2325,7 +2533,7 @@ type RemovePublicKeyFromAttributeResponse struct { func (x *RemovePublicKeyFromAttributeResponse) Reset() { *x = RemovePublicKeyFromAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[39] + mi := &file_policy_attributes_attributes_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2338,7 +2546,7 @@ func (x *RemovePublicKeyFromAttributeResponse) String() string { func (*RemovePublicKeyFromAttributeResponse) ProtoMessage() {} func (x *RemovePublicKeyFromAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[39] + mi := &file_policy_attributes_attributes_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2351,7 +2559,7 @@ func (x *RemovePublicKeyFromAttributeResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use RemovePublicKeyFromAttributeResponse.ProtoReflect.Descriptor instead. func (*RemovePublicKeyFromAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{39} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{43} } func (x *RemovePublicKeyFromAttributeResponse) GetAttributeKey() *AttributeKey { @@ -2373,7 +2581,7 @@ type AssignPublicKeyToValueRequest struct { func (x *AssignPublicKeyToValueRequest) Reset() { *x = AssignPublicKeyToValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[40] + mi := &file_policy_attributes_attributes_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2386,7 +2594,7 @@ func (x *AssignPublicKeyToValueRequest) String() string { func (*AssignPublicKeyToValueRequest) ProtoMessage() {} func (x *AssignPublicKeyToValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[40] + mi := &file_policy_attributes_attributes_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2399,7 +2607,7 @@ func (x *AssignPublicKeyToValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignPublicKeyToValueRequest.ProtoReflect.Descriptor instead. func (*AssignPublicKeyToValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{40} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{44} } func (x *AssignPublicKeyToValueRequest) GetValueKey() *ValueKey { @@ -2421,7 +2629,7 @@ type AssignPublicKeyToValueResponse struct { func (x *AssignPublicKeyToValueResponse) Reset() { *x = AssignPublicKeyToValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[41] + mi := &file_policy_attributes_attributes_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2434,7 +2642,7 @@ func (x *AssignPublicKeyToValueResponse) String() string { func (*AssignPublicKeyToValueResponse) ProtoMessage() {} func (x *AssignPublicKeyToValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[41] + mi := &file_policy_attributes_attributes_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2447,7 +2655,7 @@ func (x *AssignPublicKeyToValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignPublicKeyToValueResponse.ProtoReflect.Descriptor instead. func (*AssignPublicKeyToValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{41} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{45} } func (x *AssignPublicKeyToValueResponse) GetValueKey() *ValueKey { @@ -2469,7 +2677,7 @@ type RemovePublicKeyFromValueRequest struct { func (x *RemovePublicKeyFromValueRequest) Reset() { *x = RemovePublicKeyFromValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[42] + mi := &file_policy_attributes_attributes_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2482,7 +2690,7 @@ func (x *RemovePublicKeyFromValueRequest) String() string { func (*RemovePublicKeyFromValueRequest) ProtoMessage() {} func (x *RemovePublicKeyFromValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[42] + mi := &file_policy_attributes_attributes_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2495,7 +2703,7 @@ func (x *RemovePublicKeyFromValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemovePublicKeyFromValueRequest.ProtoReflect.Descriptor instead. func (*RemovePublicKeyFromValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{42} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{46} } func (x *RemovePublicKeyFromValueRequest) GetValueKey() *ValueKey { @@ -2517,7 +2725,7 @@ type RemovePublicKeyFromValueResponse struct { func (x *RemovePublicKeyFromValueResponse) Reset() { *x = RemovePublicKeyFromValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[43] + mi := &file_policy_attributes_attributes_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2530,7 +2738,7 @@ func (x *RemovePublicKeyFromValueResponse) String() string { func (*RemovePublicKeyFromValueResponse) ProtoMessage() {} func (x *RemovePublicKeyFromValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[43] + mi := &file_policy_attributes_attributes_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2543,7 +2751,7 @@ func (x *RemovePublicKeyFromValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemovePublicKeyFromValueResponse.ProtoReflect.Descriptor instead. func (*RemovePublicKeyFromValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{43} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{47} } func (x *RemovePublicKeyFromValueResponse) GetValueKey() *ValueKey { @@ -2565,7 +2773,7 @@ type GetAttributeValuesByFqnsResponse_AttributeAndValue struct { func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) Reset() { *x = GetAttributeValuesByFqnsResponse_AttributeAndValue{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[44] + mi := &file_policy_attributes_attributes_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2578,7 +2786,7 @@ func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) String() string { func (*GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoMessage() {} func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[44] + mi := &file_policy_attributes_attributes_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2608,6 +2816,166 @@ func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) GetValue() *policy. return nil } +type GetKeyMappingsByFqnsResponse_AttributeKeyMapping struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // the attribute value FQN this mapping is for + Fqn string `protobuf:"bytes,1,opt,name=fqn,proto3" json:"fqn,omitempty"` + // the attribute rule, which governs how splits combine (any_of / all_of / hierarchy) + Rule policy.AttributeRuleTypeEnum `protobuf:"varint,2,opt,name=rule,proto3,enum=policy.AttributeRuleTypeEnum" json:"rule,omitempty"` + // effective KAS keys resolved for this value (value > definition > namespace + // precedence, key mappings preferred over legacy grants); may be empty + Keys []*policy.SimpleKasKey `protobuf:"bytes,3,rep,name=keys,proto3" json:"keys,omitempty"` +} + +func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) Reset() { + *x = GetKeyMappingsByFqnsResponse_AttributeKeyMapping{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_attributes_attributes_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetKeyMappingsByFqnsResponse_AttributeKeyMapping) ProtoMessage() {} + +func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) ProtoReflect() protoreflect.Message { + mi := &file_policy_attributes_attributes_proto_msgTypes[50] + 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 GetKeyMappingsByFqnsResponse_AttributeKeyMapping.ProtoReflect.Descriptor instead. +func (*GetKeyMappingsByFqnsResponse_AttributeKeyMapping) Descriptor() ([]byte, []int) { + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{29, 0} +} + +func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) GetFqn() string { + if x != nil { + return x.Fqn + } + return "" +} + +func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) GetRule() policy.AttributeRuleTypeEnum { + if x != nil { + return x.Rule + } + return policy.AttributeRuleTypeEnum(0) +} + +func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) GetKeys() []*policy.SimpleKasKey { + if x != nil { + return x.Keys + } + return nil +} + +type GetEntitleableAttributesByFqnsResponse_EntitleableAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // the attribute value FQN this entry is for + Fqn string `protobuf:"bytes,1,opt,name=fqn,proto3" json:"fqn,omitempty"` + // the parent attribute definition FQN + AttributeFqn string `protobuf:"bytes,2,opt,name=attribute_fqn,json=attributeFqn,proto3" json:"attribute_fqn,omitempty"` + // the attribute rule, which drives rule logic during decisioning + Rule policy.AttributeRuleTypeEnum `protobuf:"varint,3,opt,name=rule,proto3,enum=policy.AttributeRuleTypeEnum" json:"rule,omitempty"` + // identity of the attribute value + ValueId string `protobuf:"bytes,4,opt,name=value_id,json=valueId,proto3" json:"value_id,omitempty"` + // the definition's value FQNs in order, used for hierarchy rule expansion + DefinitionValueFqns []string `protobuf:"bytes,5,rep,name=definition_value_fqns,json=definitionValueFqns,proto3" json:"definition_value_fqns,omitempty"` + // subject mappings used to resolve entitlements for this value + SubjectMappings []*policy.SubjectMapping `protobuf:"bytes,6,rep,name=subject_mappings,json=subjectMappings,proto3" json:"subject_mappings,omitempty"` +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) Reset() { + *x = GetEntitleableAttributesByFqnsResponse_EntitleableAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_attributes_attributes_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) ProtoMessage() {} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) ProtoReflect() protoreflect.Message { + mi := &file_policy_attributes_attributes_proto_msgTypes[52] + 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 GetEntitleableAttributesByFqnsResponse_EntitleableAttribute.ProtoReflect.Descriptor instead. +func (*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) Descriptor() ([]byte, []int) { + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31, 0} +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetFqn() string { + if x != nil { + return x.Fqn + } + return "" +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetAttributeFqn() string { + if x != nil { + return x.AttributeFqn + } + return "" +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetRule() policy.AttributeRuleTypeEnum { + if x != nil { + return x.Rule + } + return policy.AttributeRuleTypeEnum(0) +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetValueId() string { + if x != nil { + return x.ValueId + } + return "" +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetDefinitionValueFqns() []string { + if x != nil { + return x.DefinitionValueFqns + } + return nil +} + +func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetSubjectMappings() []*policy.SubjectMapping { + if x != nil { + return x.SubjectMappings + } + return nil +} + var File_policy_attributes_attributes_proto protoreflect.FileDescriptor var file_policy_attributes_attributes_proto_rawDesc = []byte{ @@ -2952,6 +3320,80 @@ var file_policy_attributes_attributes_proto_rawDesc = []byte{ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x3e, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0b, 0xba, + 0x48, 0x08, 0x92, 0x01, 0x05, 0x08, 0x01, 0x10, 0xfa, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e, 0x73, + 0x22, 0x9d, 0x03, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x6d, 0x0a, 0x10, 0x66, 0x71, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x79, + 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, 0x6e, + 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0e, 0x66, 0x71, 0x6e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, + 0x1a, 0x84, 0x01, 0x0a, 0x13, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x75, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x0a, + 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4b, 0x61, 0x73, 0x4b, 0x65, + 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x86, 0x01, 0x0a, 0x13, 0x46, 0x71, 0x6e, 0x4b, + 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x59, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x48, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x66, 0x71, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0b, 0xba, 0x48, 0x08, 0x92, 0x01, 0x05, 0x08, + 0x01, 0x10, 0xfa, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x22, 0xf3, 0x04, 0x0a, 0x26, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x66, 0x71, 0x6e, 0x5f, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x18, 0x66, 0x71, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x92, 0x02, + 0x0a, 0x14, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x46, 0x71, 0x6e, 0x12, 0x31, 0x0a, + 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x66, 0x71, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x12, + 0x41, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x1a, 0x9b, 0x01, 0x0a, 0x1d, 0x46, 0x71, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x64, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x01, 0x0a, 0x27, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6a, 0x0a, 0x1b, @@ -3089,7 +3531,7 @@ var file_policy_attributes_attributes_proto_rawDesc = []byte{ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x32, 0xdc, 0x13, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x32, 0xf7, 0x15, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, @@ -3120,147 +3562,165 @@ var file_policy_attributes_attributes_proto_rawDesc = []byte{ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 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, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4b, 0x65, + 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x12, + 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x9a, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, + 0x79, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x00, 0x12, 0x6a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x00, 0x12, 0x6a, + 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x00, 0x12, - 0x76, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x2e, 0x70, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 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, 0x03, 0x90, 0x02, 0x01, 0x12, 0x79, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 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, 0x00, 0x12, 0x76, 0x0a, 0x13, 0x44, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x73, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 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, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x00, 0x12, 0x79, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x03, 0x90, 0x02, 0x01, 0x12, 0x79, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 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, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 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, 0x00, 0x12, 0x85, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 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, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 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, 0x00, 0x12, 0xa0, 0x01, 0x0a, 0x20, 0x41, + 0x22, 0x00, 0x12, 0x79, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 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, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 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, 0x00, 0x12, 0x85, 0x01, + 0x0a, 0x18, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, + 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 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, 0x33, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 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, 0x00, 0x12, 0xa0, 0x01, 0x0a, 0x20, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, + 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3a, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x3a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, - 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0xa6, 0x01, - 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, - 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, - 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x1c, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, - 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x9a, 0x01, - 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x38, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x1a, 0x41, + 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0xa6, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, + 0x01, 0x12, 0x94, 0x01, 0x0a, 0x1c, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x36, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x9a, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, + 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x1a, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x6d, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x16, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x85, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, - 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x37, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x16, - 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, - 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x85, 0x01, - 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, - 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xc8, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 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, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, - 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, - 0x50, 0x41, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x5c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x1d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x42, 0xc8, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x39, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, + 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x41, 0x58, 0xaa, 0x02, + 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0xca, 0x02, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, + 0x3a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -3276,7 +3736,7 @@ func file_policy_attributes_attributes_proto_rawDescGZIP() []byte { } var file_policy_attributes_attributes_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_policy_attributes_attributes_proto_msgTypes = make([]protoimpl.MessageInfo, 46) +var file_policy_attributes_attributes_proto_msgTypes = make([]protoimpl.MessageInfo, 54) var file_policy_attributes_attributes_proto_goTypes = []interface{}{ (SortAttributesType)(0), // 0: policy.attributes.SortAttributesType (*AttributeKeyAccessServer)(nil), // 1: policy.attributes.AttributeKeyAccessServer @@ -3307,136 +3767,158 @@ var file_policy_attributes_attributes_proto_goTypes = []interface{}{ (*DeactivateAttributeValueResponse)(nil), // 26: policy.attributes.DeactivateAttributeValueResponse (*GetAttributeValuesByFqnsRequest)(nil), // 27: policy.attributes.GetAttributeValuesByFqnsRequest (*GetAttributeValuesByFqnsResponse)(nil), // 28: policy.attributes.GetAttributeValuesByFqnsResponse - (*AssignKeyAccessServerToAttributeRequest)(nil), // 29: policy.attributes.AssignKeyAccessServerToAttributeRequest - (*AssignKeyAccessServerToAttributeResponse)(nil), // 30: policy.attributes.AssignKeyAccessServerToAttributeResponse - (*RemoveKeyAccessServerFromAttributeRequest)(nil), // 31: policy.attributes.RemoveKeyAccessServerFromAttributeRequest - (*RemoveKeyAccessServerFromAttributeResponse)(nil), // 32: policy.attributes.RemoveKeyAccessServerFromAttributeResponse - (*AssignKeyAccessServerToValueRequest)(nil), // 33: policy.attributes.AssignKeyAccessServerToValueRequest - (*AssignKeyAccessServerToValueResponse)(nil), // 34: policy.attributes.AssignKeyAccessServerToValueResponse - (*RemoveKeyAccessServerFromValueRequest)(nil), // 35: policy.attributes.RemoveKeyAccessServerFromValueRequest - (*RemoveKeyAccessServerFromValueResponse)(nil), // 36: policy.attributes.RemoveKeyAccessServerFromValueResponse - (*AssignPublicKeyToAttributeRequest)(nil), // 37: policy.attributes.AssignPublicKeyToAttributeRequest - (*AssignPublicKeyToAttributeResponse)(nil), // 38: policy.attributes.AssignPublicKeyToAttributeResponse - (*RemovePublicKeyFromAttributeRequest)(nil), // 39: policy.attributes.RemovePublicKeyFromAttributeRequest - (*RemovePublicKeyFromAttributeResponse)(nil), // 40: policy.attributes.RemovePublicKeyFromAttributeResponse - (*AssignPublicKeyToValueRequest)(nil), // 41: policy.attributes.AssignPublicKeyToValueRequest - (*AssignPublicKeyToValueResponse)(nil), // 42: policy.attributes.AssignPublicKeyToValueResponse - (*RemovePublicKeyFromValueRequest)(nil), // 43: policy.attributes.RemovePublicKeyFromValueRequest - (*RemovePublicKeyFromValueResponse)(nil), // 44: policy.attributes.RemovePublicKeyFromValueResponse - (*GetAttributeValuesByFqnsResponse_AttributeAndValue)(nil), // 45: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue - nil, // 46: policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry - (policy.SortDirection)(0), // 47: policy.SortDirection - (common.ActiveStateEnum)(0), // 48: common.ActiveStateEnum - (*policy.PageRequest)(nil), // 49: policy.PageRequest - (*policy.Search)(nil), // 50: policy.Search - (*policy.Attribute)(nil), // 51: policy.Attribute - (*policy.PageResponse)(nil), // 52: policy.PageResponse - (policy.AttributeRuleTypeEnum)(0), // 53: policy.AttributeRuleTypeEnum - (*wrapperspb.BoolValue)(nil), // 54: google.protobuf.BoolValue - (*common.MetadataMutable)(nil), // 55: common.MetadataMutable - (common.MetadataUpdateEnum)(0), // 56: common.MetadataUpdateEnum - (*policy.Value)(nil), // 57: policy.Value - (*common.IdFqnIdentifier)(nil), // 58: common.IdFqnIdentifier - (*common.IdNameIdentifier)(nil), // 59: common.IdNameIdentifier - (*policy.RequestContext)(nil), // 60: policy.RequestContext + (*GetKeyMappingsByFqnsRequest)(nil), // 29: policy.attributes.GetKeyMappingsByFqnsRequest + (*GetKeyMappingsByFqnsResponse)(nil), // 30: policy.attributes.GetKeyMappingsByFqnsResponse + (*GetEntitleableAttributesByFqnsRequest)(nil), // 31: policy.attributes.GetEntitleableAttributesByFqnsRequest + (*GetEntitleableAttributesByFqnsResponse)(nil), // 32: policy.attributes.GetEntitleableAttributesByFqnsResponse + (*AssignKeyAccessServerToAttributeRequest)(nil), // 33: policy.attributes.AssignKeyAccessServerToAttributeRequest + (*AssignKeyAccessServerToAttributeResponse)(nil), // 34: policy.attributes.AssignKeyAccessServerToAttributeResponse + (*RemoveKeyAccessServerFromAttributeRequest)(nil), // 35: policy.attributes.RemoveKeyAccessServerFromAttributeRequest + (*RemoveKeyAccessServerFromAttributeResponse)(nil), // 36: policy.attributes.RemoveKeyAccessServerFromAttributeResponse + (*AssignKeyAccessServerToValueRequest)(nil), // 37: policy.attributes.AssignKeyAccessServerToValueRequest + (*AssignKeyAccessServerToValueResponse)(nil), // 38: policy.attributes.AssignKeyAccessServerToValueResponse + (*RemoveKeyAccessServerFromValueRequest)(nil), // 39: policy.attributes.RemoveKeyAccessServerFromValueRequest + (*RemoveKeyAccessServerFromValueResponse)(nil), // 40: policy.attributes.RemoveKeyAccessServerFromValueResponse + (*AssignPublicKeyToAttributeRequest)(nil), // 41: policy.attributes.AssignPublicKeyToAttributeRequest + (*AssignPublicKeyToAttributeResponse)(nil), // 42: policy.attributes.AssignPublicKeyToAttributeResponse + (*RemovePublicKeyFromAttributeRequest)(nil), // 43: policy.attributes.RemovePublicKeyFromAttributeRequest + (*RemovePublicKeyFromAttributeResponse)(nil), // 44: policy.attributes.RemovePublicKeyFromAttributeResponse + (*AssignPublicKeyToValueRequest)(nil), // 45: policy.attributes.AssignPublicKeyToValueRequest + (*AssignPublicKeyToValueResponse)(nil), // 46: policy.attributes.AssignPublicKeyToValueResponse + (*RemovePublicKeyFromValueRequest)(nil), // 47: policy.attributes.RemovePublicKeyFromValueRequest + (*RemovePublicKeyFromValueResponse)(nil), // 48: policy.attributes.RemovePublicKeyFromValueResponse + (*GetAttributeValuesByFqnsResponse_AttributeAndValue)(nil), // 49: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue + nil, // 50: policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry + (*GetKeyMappingsByFqnsResponse_AttributeKeyMapping)(nil), // 51: policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping + nil, // 52: policy.attributes.GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry + (*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute)(nil), // 53: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute + nil, // 54: policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry + (policy.SortDirection)(0), // 55: policy.SortDirection + (common.ActiveStateEnum)(0), // 56: common.ActiveStateEnum + (*policy.PageRequest)(nil), // 57: policy.PageRequest + (*policy.Search)(nil), // 58: policy.Search + (*policy.Attribute)(nil), // 59: policy.Attribute + (*policy.PageResponse)(nil), // 60: policy.PageResponse + (policy.AttributeRuleTypeEnum)(0), // 61: policy.AttributeRuleTypeEnum + (*wrapperspb.BoolValue)(nil), // 62: google.protobuf.BoolValue + (*common.MetadataMutable)(nil), // 63: common.MetadataMutable + (common.MetadataUpdateEnum)(0), // 64: common.MetadataUpdateEnum + (*policy.Value)(nil), // 65: policy.Value + (*common.IdFqnIdentifier)(nil), // 66: common.IdFqnIdentifier + (*common.IdNameIdentifier)(nil), // 67: common.IdNameIdentifier + (*policy.RequestContext)(nil), // 68: policy.RequestContext + (*policy.SimpleKasKey)(nil), // 69: policy.SimpleKasKey + (*policy.SubjectMapping)(nil), // 70: policy.SubjectMapping } var file_policy_attributes_attributes_proto_depIdxs = []int32{ 0, // 0: policy.attributes.AttributesSort.field:type_name -> policy.attributes.SortAttributesType - 47, // 1: policy.attributes.AttributesSort.direction:type_name -> policy.SortDirection - 48, // 2: policy.attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum - 49, // 3: policy.attributes.ListAttributesRequest.pagination:type_name -> policy.PageRequest + 55, // 1: policy.attributes.AttributesSort.direction:type_name -> policy.SortDirection + 56, // 2: policy.attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum + 57, // 3: policy.attributes.ListAttributesRequest.pagination:type_name -> policy.PageRequest 5, // 4: policy.attributes.ListAttributesRequest.sort:type_name -> policy.attributes.AttributesSort - 50, // 5: policy.attributes.ListAttributesRequest.search:type_name -> policy.Search - 51, // 6: policy.attributes.ListAttributesResponse.attributes:type_name -> policy.Attribute - 52, // 7: policy.attributes.ListAttributesResponse.pagination:type_name -> policy.PageResponse - 51, // 8: policy.attributes.GetAttributeResponse.attribute:type_name -> policy.Attribute - 53, // 9: policy.attributes.CreateAttributeRequest.rule:type_name -> policy.AttributeRuleTypeEnum - 54, // 10: policy.attributes.CreateAttributeRequest.allow_traversal:type_name -> google.protobuf.BoolValue - 55, // 11: policy.attributes.CreateAttributeRequest.metadata:type_name -> common.MetadataMutable - 51, // 12: policy.attributes.CreateAttributeResponse.attribute:type_name -> policy.Attribute - 55, // 13: policy.attributes.UpdateAttributeRequest.metadata:type_name -> common.MetadataMutable - 56, // 14: policy.attributes.UpdateAttributeRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum - 51, // 15: policy.attributes.UpdateAttributeResponse.attribute:type_name -> policy.Attribute - 51, // 16: policy.attributes.DeactivateAttributeResponse.attribute:type_name -> policy.Attribute - 57, // 17: policy.attributes.GetAttributeValueResponse.value:type_name -> policy.Value - 48, // 18: policy.attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum - 49, // 19: policy.attributes.ListAttributeValuesRequest.pagination:type_name -> policy.PageRequest - 57, // 20: policy.attributes.ListAttributeValuesResponse.values:type_name -> policy.Value - 52, // 21: policy.attributes.ListAttributeValuesResponse.pagination:type_name -> policy.PageResponse - 58, // 22: policy.attributes.AttributeValueObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier - 59, // 23: policy.attributes.AttributeValueObligationTriggerRequest.action:type_name -> common.IdNameIdentifier - 60, // 24: policy.attributes.AttributeValueObligationTriggerRequest.context:type_name -> policy.RequestContext - 55, // 25: policy.attributes.AttributeValueObligationTriggerRequest.metadata:type_name -> common.MetadataMutable + 58, // 5: policy.attributes.ListAttributesRequest.search:type_name -> policy.Search + 59, // 6: policy.attributes.ListAttributesResponse.attributes:type_name -> policy.Attribute + 60, // 7: policy.attributes.ListAttributesResponse.pagination:type_name -> policy.PageResponse + 59, // 8: policy.attributes.GetAttributeResponse.attribute:type_name -> policy.Attribute + 61, // 9: policy.attributes.CreateAttributeRequest.rule:type_name -> policy.AttributeRuleTypeEnum + 62, // 10: policy.attributes.CreateAttributeRequest.allow_traversal:type_name -> google.protobuf.BoolValue + 63, // 11: policy.attributes.CreateAttributeRequest.metadata:type_name -> common.MetadataMutable + 59, // 12: policy.attributes.CreateAttributeResponse.attribute:type_name -> policy.Attribute + 63, // 13: policy.attributes.UpdateAttributeRequest.metadata:type_name -> common.MetadataMutable + 64, // 14: policy.attributes.UpdateAttributeRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum + 59, // 15: policy.attributes.UpdateAttributeResponse.attribute:type_name -> policy.Attribute + 59, // 16: policy.attributes.DeactivateAttributeResponse.attribute:type_name -> policy.Attribute + 65, // 17: policy.attributes.GetAttributeValueResponse.value:type_name -> policy.Value + 56, // 18: policy.attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum + 57, // 19: policy.attributes.ListAttributeValuesRequest.pagination:type_name -> policy.PageRequest + 65, // 20: policy.attributes.ListAttributeValuesResponse.values:type_name -> policy.Value + 60, // 21: policy.attributes.ListAttributeValuesResponse.pagination:type_name -> policy.PageResponse + 66, // 22: policy.attributes.AttributeValueObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier + 67, // 23: policy.attributes.AttributeValueObligationTriggerRequest.action:type_name -> common.IdNameIdentifier + 68, // 24: policy.attributes.AttributeValueObligationTriggerRequest.context:type_name -> policy.RequestContext + 63, // 25: policy.attributes.AttributeValueObligationTriggerRequest.metadata:type_name -> common.MetadataMutable 20, // 26: policy.attributes.CreateAttributeValueRequest.obligation_triggers:type_name -> policy.attributes.AttributeValueObligationTriggerRequest - 55, // 27: policy.attributes.CreateAttributeValueRequest.metadata:type_name -> common.MetadataMutable - 57, // 28: policy.attributes.CreateAttributeValueResponse.value:type_name -> policy.Value - 55, // 29: policy.attributes.UpdateAttributeValueRequest.metadata:type_name -> common.MetadataMutable - 56, // 30: policy.attributes.UpdateAttributeValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum - 57, // 31: policy.attributes.UpdateAttributeValueResponse.value:type_name -> policy.Value - 57, // 32: policy.attributes.DeactivateAttributeValueResponse.value:type_name -> policy.Value - 46, // 33: policy.attributes.GetAttributeValuesByFqnsResponse.fqn_attribute_values:type_name -> policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry - 1, // 34: policy.attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 1, // 35: policy.attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 1, // 36: policy.attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 1, // 37: policy.attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 2, // 38: policy.attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 2, // 39: policy.attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 2, // 40: policy.attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 2, // 41: policy.attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 3, // 42: policy.attributes.AssignPublicKeyToAttributeRequest.attribute_key:type_name -> policy.attributes.AttributeKey - 3, // 43: policy.attributes.AssignPublicKeyToAttributeResponse.attribute_key:type_name -> policy.attributes.AttributeKey - 3, // 44: policy.attributes.RemovePublicKeyFromAttributeRequest.attribute_key:type_name -> policy.attributes.AttributeKey - 3, // 45: policy.attributes.RemovePublicKeyFromAttributeResponse.attribute_key:type_name -> policy.attributes.AttributeKey - 4, // 46: policy.attributes.AssignPublicKeyToValueRequest.value_key:type_name -> policy.attributes.ValueKey - 4, // 47: policy.attributes.AssignPublicKeyToValueResponse.value_key:type_name -> policy.attributes.ValueKey - 4, // 48: policy.attributes.RemovePublicKeyFromValueRequest.value_key:type_name -> policy.attributes.ValueKey - 4, // 49: policy.attributes.RemovePublicKeyFromValueResponse.value_key:type_name -> policy.attributes.ValueKey - 51, // 50: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue.attribute:type_name -> policy.Attribute - 57, // 51: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue.value:type_name -> policy.Value - 45, // 52: policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry.value:type_name -> policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue - 6, // 53: policy.attributes.AttributesService.ListAttributes:input_type -> policy.attributes.ListAttributesRequest - 18, // 54: policy.attributes.AttributesService.ListAttributeValues:input_type -> policy.attributes.ListAttributeValuesRequest - 8, // 55: policy.attributes.AttributesService.GetAttribute:input_type -> policy.attributes.GetAttributeRequest - 27, // 56: policy.attributes.AttributesService.GetAttributeValuesByFqns:input_type -> policy.attributes.GetAttributeValuesByFqnsRequest - 10, // 57: policy.attributes.AttributesService.CreateAttribute:input_type -> policy.attributes.CreateAttributeRequest - 12, // 58: policy.attributes.AttributesService.UpdateAttribute:input_type -> policy.attributes.UpdateAttributeRequest - 14, // 59: policy.attributes.AttributesService.DeactivateAttribute:input_type -> policy.attributes.DeactivateAttributeRequest - 16, // 60: policy.attributes.AttributesService.GetAttributeValue:input_type -> policy.attributes.GetAttributeValueRequest - 21, // 61: policy.attributes.AttributesService.CreateAttributeValue:input_type -> policy.attributes.CreateAttributeValueRequest - 23, // 62: policy.attributes.AttributesService.UpdateAttributeValue:input_type -> policy.attributes.UpdateAttributeValueRequest - 25, // 63: policy.attributes.AttributesService.DeactivateAttributeValue:input_type -> policy.attributes.DeactivateAttributeValueRequest - 29, // 64: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> policy.attributes.AssignKeyAccessServerToAttributeRequest - 31, // 65: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> policy.attributes.RemoveKeyAccessServerFromAttributeRequest - 33, // 66: policy.attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> policy.attributes.AssignKeyAccessServerToValueRequest - 35, // 67: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> policy.attributes.RemoveKeyAccessServerFromValueRequest - 37, // 68: policy.attributes.AttributesService.AssignPublicKeyToAttribute:input_type -> policy.attributes.AssignPublicKeyToAttributeRequest - 39, // 69: policy.attributes.AttributesService.RemovePublicKeyFromAttribute:input_type -> policy.attributes.RemovePublicKeyFromAttributeRequest - 41, // 70: policy.attributes.AttributesService.AssignPublicKeyToValue:input_type -> policy.attributes.AssignPublicKeyToValueRequest - 43, // 71: policy.attributes.AttributesService.RemovePublicKeyFromValue:input_type -> policy.attributes.RemovePublicKeyFromValueRequest - 7, // 72: policy.attributes.AttributesService.ListAttributes:output_type -> policy.attributes.ListAttributesResponse - 19, // 73: policy.attributes.AttributesService.ListAttributeValues:output_type -> policy.attributes.ListAttributeValuesResponse - 9, // 74: policy.attributes.AttributesService.GetAttribute:output_type -> policy.attributes.GetAttributeResponse - 28, // 75: policy.attributes.AttributesService.GetAttributeValuesByFqns:output_type -> policy.attributes.GetAttributeValuesByFqnsResponse - 11, // 76: policy.attributes.AttributesService.CreateAttribute:output_type -> policy.attributes.CreateAttributeResponse - 13, // 77: policy.attributes.AttributesService.UpdateAttribute:output_type -> policy.attributes.UpdateAttributeResponse - 15, // 78: policy.attributes.AttributesService.DeactivateAttribute:output_type -> policy.attributes.DeactivateAttributeResponse - 17, // 79: policy.attributes.AttributesService.GetAttributeValue:output_type -> policy.attributes.GetAttributeValueResponse - 22, // 80: policy.attributes.AttributesService.CreateAttributeValue:output_type -> policy.attributes.CreateAttributeValueResponse - 24, // 81: policy.attributes.AttributesService.UpdateAttributeValue:output_type -> policy.attributes.UpdateAttributeValueResponse - 26, // 82: policy.attributes.AttributesService.DeactivateAttributeValue:output_type -> policy.attributes.DeactivateAttributeValueResponse - 30, // 83: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> policy.attributes.AssignKeyAccessServerToAttributeResponse - 32, // 84: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> policy.attributes.RemoveKeyAccessServerFromAttributeResponse - 34, // 85: policy.attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> policy.attributes.AssignKeyAccessServerToValueResponse - 36, // 86: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> policy.attributes.RemoveKeyAccessServerFromValueResponse - 38, // 87: policy.attributes.AttributesService.AssignPublicKeyToAttribute:output_type -> policy.attributes.AssignPublicKeyToAttributeResponse - 40, // 88: policy.attributes.AttributesService.RemovePublicKeyFromAttribute:output_type -> policy.attributes.RemovePublicKeyFromAttributeResponse - 42, // 89: policy.attributes.AttributesService.AssignPublicKeyToValue:output_type -> policy.attributes.AssignPublicKeyToValueResponse - 44, // 90: policy.attributes.AttributesService.RemovePublicKeyFromValue:output_type -> policy.attributes.RemovePublicKeyFromValueResponse - 72, // [72:91] is the sub-list for method output_type - 53, // [53:72] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 63, // 27: policy.attributes.CreateAttributeValueRequest.metadata:type_name -> common.MetadataMutable + 65, // 28: policy.attributes.CreateAttributeValueResponse.value:type_name -> policy.Value + 63, // 29: policy.attributes.UpdateAttributeValueRequest.metadata:type_name -> common.MetadataMutable + 64, // 30: policy.attributes.UpdateAttributeValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum + 65, // 31: policy.attributes.UpdateAttributeValueResponse.value:type_name -> policy.Value + 65, // 32: policy.attributes.DeactivateAttributeValueResponse.value:type_name -> policy.Value + 50, // 33: policy.attributes.GetAttributeValuesByFqnsResponse.fqn_attribute_values:type_name -> policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry + 52, // 34: policy.attributes.GetKeyMappingsByFqnsResponse.fqn_key_mappings:type_name -> policy.attributes.GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry + 54, // 35: policy.attributes.GetEntitleableAttributesByFqnsResponse.fqn_entitleable_attributes:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry + 1, // 36: policy.attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 1, // 37: policy.attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 1, // 38: policy.attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 1, // 39: policy.attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 2, // 40: policy.attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 2, // 41: policy.attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 2, // 42: policy.attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 2, // 43: policy.attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 3, // 44: policy.attributes.AssignPublicKeyToAttributeRequest.attribute_key:type_name -> policy.attributes.AttributeKey + 3, // 45: policy.attributes.AssignPublicKeyToAttributeResponse.attribute_key:type_name -> policy.attributes.AttributeKey + 3, // 46: policy.attributes.RemovePublicKeyFromAttributeRequest.attribute_key:type_name -> policy.attributes.AttributeKey + 3, // 47: policy.attributes.RemovePublicKeyFromAttributeResponse.attribute_key:type_name -> policy.attributes.AttributeKey + 4, // 48: policy.attributes.AssignPublicKeyToValueRequest.value_key:type_name -> policy.attributes.ValueKey + 4, // 49: policy.attributes.AssignPublicKeyToValueResponse.value_key:type_name -> policy.attributes.ValueKey + 4, // 50: policy.attributes.RemovePublicKeyFromValueRequest.value_key:type_name -> policy.attributes.ValueKey + 4, // 51: policy.attributes.RemovePublicKeyFromValueResponse.value_key:type_name -> policy.attributes.ValueKey + 59, // 52: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue.attribute:type_name -> policy.Attribute + 65, // 53: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue.value:type_name -> policy.Value + 49, // 54: policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry.value:type_name -> policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue + 61, // 55: policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping.rule:type_name -> policy.AttributeRuleTypeEnum + 69, // 56: policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping.keys:type_name -> policy.SimpleKasKey + 51, // 57: policy.attributes.GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry.value:type_name -> policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping + 61, // 58: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute.rule:type_name -> policy.AttributeRuleTypeEnum + 70, // 59: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute.subject_mappings:type_name -> policy.SubjectMapping + 53, // 60: policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry.value:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute + 6, // 61: policy.attributes.AttributesService.ListAttributes:input_type -> policy.attributes.ListAttributesRequest + 18, // 62: policy.attributes.AttributesService.ListAttributeValues:input_type -> policy.attributes.ListAttributeValuesRequest + 8, // 63: policy.attributes.AttributesService.GetAttribute:input_type -> policy.attributes.GetAttributeRequest + 27, // 64: policy.attributes.AttributesService.GetAttributeValuesByFqns:input_type -> policy.attributes.GetAttributeValuesByFqnsRequest + 29, // 65: policy.attributes.AttributesService.GetKeyMappingsByFqns:input_type -> policy.attributes.GetKeyMappingsByFqnsRequest + 31, // 66: policy.attributes.AttributesService.GetEntitleableAttributesByFqns:input_type -> policy.attributes.GetEntitleableAttributesByFqnsRequest + 10, // 67: policy.attributes.AttributesService.CreateAttribute:input_type -> policy.attributes.CreateAttributeRequest + 12, // 68: policy.attributes.AttributesService.UpdateAttribute:input_type -> policy.attributes.UpdateAttributeRequest + 14, // 69: policy.attributes.AttributesService.DeactivateAttribute:input_type -> policy.attributes.DeactivateAttributeRequest + 16, // 70: policy.attributes.AttributesService.GetAttributeValue:input_type -> policy.attributes.GetAttributeValueRequest + 21, // 71: policy.attributes.AttributesService.CreateAttributeValue:input_type -> policy.attributes.CreateAttributeValueRequest + 23, // 72: policy.attributes.AttributesService.UpdateAttributeValue:input_type -> policy.attributes.UpdateAttributeValueRequest + 25, // 73: policy.attributes.AttributesService.DeactivateAttributeValue:input_type -> policy.attributes.DeactivateAttributeValueRequest + 33, // 74: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> policy.attributes.AssignKeyAccessServerToAttributeRequest + 35, // 75: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> policy.attributes.RemoveKeyAccessServerFromAttributeRequest + 37, // 76: policy.attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> policy.attributes.AssignKeyAccessServerToValueRequest + 39, // 77: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> policy.attributes.RemoveKeyAccessServerFromValueRequest + 41, // 78: policy.attributes.AttributesService.AssignPublicKeyToAttribute:input_type -> policy.attributes.AssignPublicKeyToAttributeRequest + 43, // 79: policy.attributes.AttributesService.RemovePublicKeyFromAttribute:input_type -> policy.attributes.RemovePublicKeyFromAttributeRequest + 45, // 80: policy.attributes.AttributesService.AssignPublicKeyToValue:input_type -> policy.attributes.AssignPublicKeyToValueRequest + 47, // 81: policy.attributes.AttributesService.RemovePublicKeyFromValue:input_type -> policy.attributes.RemovePublicKeyFromValueRequest + 7, // 82: policy.attributes.AttributesService.ListAttributes:output_type -> policy.attributes.ListAttributesResponse + 19, // 83: policy.attributes.AttributesService.ListAttributeValues:output_type -> policy.attributes.ListAttributeValuesResponse + 9, // 84: policy.attributes.AttributesService.GetAttribute:output_type -> policy.attributes.GetAttributeResponse + 28, // 85: policy.attributes.AttributesService.GetAttributeValuesByFqns:output_type -> policy.attributes.GetAttributeValuesByFqnsResponse + 30, // 86: policy.attributes.AttributesService.GetKeyMappingsByFqns:output_type -> policy.attributes.GetKeyMappingsByFqnsResponse + 32, // 87: policy.attributes.AttributesService.GetEntitleableAttributesByFqns:output_type -> policy.attributes.GetEntitleableAttributesByFqnsResponse + 11, // 88: policy.attributes.AttributesService.CreateAttribute:output_type -> policy.attributes.CreateAttributeResponse + 13, // 89: policy.attributes.AttributesService.UpdateAttribute:output_type -> policy.attributes.UpdateAttributeResponse + 15, // 90: policy.attributes.AttributesService.DeactivateAttribute:output_type -> policy.attributes.DeactivateAttributeResponse + 17, // 91: policy.attributes.AttributesService.GetAttributeValue:output_type -> policy.attributes.GetAttributeValueResponse + 22, // 92: policy.attributes.AttributesService.CreateAttributeValue:output_type -> policy.attributes.CreateAttributeValueResponse + 24, // 93: policy.attributes.AttributesService.UpdateAttributeValue:output_type -> policy.attributes.UpdateAttributeValueResponse + 26, // 94: policy.attributes.AttributesService.DeactivateAttributeValue:output_type -> policy.attributes.DeactivateAttributeValueResponse + 34, // 95: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> policy.attributes.AssignKeyAccessServerToAttributeResponse + 36, // 96: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> policy.attributes.RemoveKeyAccessServerFromAttributeResponse + 38, // 97: policy.attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> policy.attributes.AssignKeyAccessServerToValueResponse + 40, // 98: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> policy.attributes.RemoveKeyAccessServerFromValueResponse + 42, // 99: policy.attributes.AttributesService.AssignPublicKeyToAttribute:output_type -> policy.attributes.AssignPublicKeyToAttributeResponse + 44, // 100: policy.attributes.AttributesService.RemovePublicKeyFromAttribute:output_type -> policy.attributes.RemovePublicKeyFromAttributeResponse + 46, // 101: policy.attributes.AttributesService.AssignPublicKeyToValue:output_type -> policy.attributes.AssignPublicKeyToValueResponse + 48, // 102: policy.attributes.AttributesService.RemovePublicKeyFromValue:output_type -> policy.attributes.RemovePublicKeyFromValueResponse + 82, // [82:103] is the sub-list for method output_type + 61, // [61:82] is the sub-list for method input_type + 61, // [61:61] is the sub-list for extension type_name + 61, // [61:61] is the sub-list for extension extendee + 0, // [0:61] is the sub-list for field type_name } func init() { file_policy_attributes_attributes_proto_init() } @@ -3782,7 +4264,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignKeyAccessServerToAttributeRequest); i { + switch v := v.(*GetKeyMappingsByFqnsRequest); i { case 0: return &v.state case 1: @@ -3794,7 +4276,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignKeyAccessServerToAttributeResponse); i { + switch v := v.(*GetKeyMappingsByFqnsResponse); i { case 0: return &v.state case 1: @@ -3806,7 +4288,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveKeyAccessServerFromAttributeRequest); i { + switch v := v.(*GetEntitleableAttributesByFqnsRequest); i { case 0: return &v.state case 1: @@ -3818,7 +4300,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveKeyAccessServerFromAttributeResponse); i { + switch v := v.(*GetEntitleableAttributesByFqnsResponse); i { case 0: return &v.state case 1: @@ -3830,7 +4312,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignKeyAccessServerToValueRequest); i { + switch v := v.(*AssignKeyAccessServerToAttributeRequest); i { case 0: return &v.state case 1: @@ -3842,7 +4324,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignKeyAccessServerToValueResponse); i { + switch v := v.(*AssignKeyAccessServerToAttributeResponse); i { case 0: return &v.state case 1: @@ -3854,7 +4336,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveKeyAccessServerFromValueRequest); i { + switch v := v.(*RemoveKeyAccessServerFromAttributeRequest); i { case 0: return &v.state case 1: @@ -3866,7 +4348,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveKeyAccessServerFromValueResponse); i { + switch v := v.(*RemoveKeyAccessServerFromAttributeResponse); i { case 0: return &v.state case 1: @@ -3878,7 +4360,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignPublicKeyToAttributeRequest); i { + switch v := v.(*AssignKeyAccessServerToValueRequest); i { case 0: return &v.state case 1: @@ -3890,7 +4372,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignPublicKeyToAttributeResponse); i { + switch v := v.(*AssignKeyAccessServerToValueResponse); i { case 0: return &v.state case 1: @@ -3902,7 +4384,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemovePublicKeyFromAttributeRequest); i { + switch v := v.(*RemoveKeyAccessServerFromValueRequest); i { case 0: return &v.state case 1: @@ -3914,7 +4396,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemovePublicKeyFromAttributeResponse); i { + switch v := v.(*RemoveKeyAccessServerFromValueResponse); i { case 0: return &v.state case 1: @@ -3926,7 +4408,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignPublicKeyToValueRequest); i { + switch v := v.(*AssignPublicKeyToAttributeRequest); i { case 0: return &v.state case 1: @@ -3938,7 +4420,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AssignPublicKeyToValueResponse); i { + switch v := v.(*AssignPublicKeyToAttributeResponse); i { case 0: return &v.state case 1: @@ -3950,7 +4432,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemovePublicKeyFromValueRequest); i { + switch v := v.(*RemovePublicKeyFromAttributeRequest); i { case 0: return &v.state case 1: @@ -3962,7 +4444,7 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemovePublicKeyFromValueResponse); i { + switch v := v.(*RemovePublicKeyFromAttributeResponse); i { case 0: return &v.state case 1: @@ -3974,6 +4456,54 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AssignPublicKeyToValueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_attributes_attributes_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AssignPublicKeyToValueResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_attributes_attributes_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemovePublicKeyFromValueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_attributes_attributes_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemovePublicKeyFromValueResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_attributes_attributes_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeValuesByFqnsResponse_AttributeAndValue); i { case 0: return &v.state @@ -3985,6 +4515,30 @@ func file_policy_attributes_attributes_proto_init() { return nil } } + file_policy_attributes_attributes_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetKeyMappingsByFqnsResponse_AttributeKeyMapping); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_attributes_attributes_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_policy_attributes_attributes_proto_msgTypes[7].OneofWrappers = []interface{}{ (*GetAttributeRequest_AttributeId)(nil), @@ -4000,7 +4554,7 @@ func file_policy_attributes_attributes_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_policy_attributes_attributes_proto_rawDesc, NumEnums: 1, - NumMessages: 46, + NumMessages: 54, NumExtensions: 0, NumServices: 1, }, diff --git a/protocol/go/policy/attributes/attributes_grpc.pb.go b/protocol/go/policy/attributes/attributes_grpc.pb.go index 62bf01e409..ba8e6c3c5e 100644 --- a/protocol/go/policy/attributes/attributes_grpc.pb.go +++ b/protocol/go/policy/attributes/attributes_grpc.pb.go @@ -23,6 +23,8 @@ const ( AttributesService_ListAttributeValues_FullMethodName = "/policy.attributes.AttributesService/ListAttributeValues" AttributesService_GetAttribute_FullMethodName = "/policy.attributes.AttributesService/GetAttribute" AttributesService_GetAttributeValuesByFqns_FullMethodName = "/policy.attributes.AttributesService/GetAttributeValuesByFqns" + AttributesService_GetKeyMappingsByFqns_FullMethodName = "/policy.attributes.AttributesService/GetKeyMappingsByFqns" + AttributesService_GetEntitleableAttributesByFqns_FullMethodName = "/policy.attributes.AttributesService/GetEntitleableAttributesByFqns" AttributesService_CreateAttribute_FullMethodName = "/policy.attributes.AttributesService/CreateAttribute" AttributesService_UpdateAttribute_FullMethodName = "/policy.attributes.AttributesService/UpdateAttribute" AttributesService_DeactivateAttribute_FullMethodName = "/policy.attributes.AttributesService/DeactivateAttribute" @@ -54,6 +56,13 @@ type AttributesServiceClient interface { ListAttributeValues(ctx context.Context, in *ListAttributeValuesRequest, opts ...grpc.CallOption) (*ListAttributeValuesResponse, error) GetAttribute(ctx context.Context, in *GetAttributeRequest, opts ...grpc.CallOption) (*GetAttributeResponse, error) GetAttributeValuesByFqns(ctx context.Context, in *GetAttributeValuesByFqnsRequest, opts ...grpc.CallOption) (*GetAttributeValuesByFqnsResponse, error) + // Returns only key-mapping information (rule and effective KAS keys) for the + // requested attribute value FQNs, for client-side key split construction. + GetKeyMappingsByFqns(ctx context.Context, in *GetKeyMappingsByFqnsRequest, opts ...grpc.CallOption) (*GetKeyMappingsByFqnsResponse, error) + // Returns only entitlement-relevant information (rule, value identity, ordered + // definition values, and subject mappings) for the requested attribute value + // FQNs, for server-side decisioning / entitlement resolution. + GetEntitleableAttributesByFqns(ctx context.Context, in *GetEntitleableAttributesByFqnsRequest, opts ...grpc.CallOption) (*GetEntitleableAttributesByFqnsResponse, error) CreateAttribute(ctx context.Context, in *CreateAttributeRequest, opts ...grpc.CallOption) (*CreateAttributeResponse, error) UpdateAttribute(ctx context.Context, in *UpdateAttributeRequest, opts ...grpc.CallOption) (*UpdateAttributeResponse, error) DeactivateAttribute(ctx context.Context, in *DeactivateAttributeRequest, opts ...grpc.CallOption) (*DeactivateAttributeResponse, error) @@ -127,6 +136,24 @@ func (c *attributesServiceClient) GetAttributeValuesByFqns(ctx context.Context, return out, nil } +func (c *attributesServiceClient) GetKeyMappingsByFqns(ctx context.Context, in *GetKeyMappingsByFqnsRequest, opts ...grpc.CallOption) (*GetKeyMappingsByFqnsResponse, error) { + out := new(GetKeyMappingsByFqnsResponse) + err := c.cc.Invoke(ctx, AttributesService_GetKeyMappingsByFqns_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *attributesServiceClient) GetEntitleableAttributesByFqns(ctx context.Context, in *GetEntitleableAttributesByFqnsRequest, opts ...grpc.CallOption) (*GetEntitleableAttributesByFqnsResponse, error) { + out := new(GetEntitleableAttributesByFqnsResponse) + err := c.cc.Invoke(ctx, AttributesService_GetEntitleableAttributesByFqns_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *attributesServiceClient) CreateAttribute(ctx context.Context, in *CreateAttributeRequest, opts ...grpc.CallOption) (*CreateAttributeResponse, error) { out := new(CreateAttributeResponse) err := c.cc.Invoke(ctx, AttributesService_CreateAttribute_FullMethodName, in, out, opts...) @@ -280,6 +307,13 @@ type AttributesServiceServer interface { ListAttributeValues(context.Context, *ListAttributeValuesRequest) (*ListAttributeValuesResponse, error) GetAttribute(context.Context, *GetAttributeRequest) (*GetAttributeResponse, error) GetAttributeValuesByFqns(context.Context, *GetAttributeValuesByFqnsRequest) (*GetAttributeValuesByFqnsResponse, error) + // Returns only key-mapping information (rule and effective KAS keys) for the + // requested attribute value FQNs, for client-side key split construction. + GetKeyMappingsByFqns(context.Context, *GetKeyMappingsByFqnsRequest) (*GetKeyMappingsByFqnsResponse, error) + // Returns only entitlement-relevant information (rule, value identity, ordered + // definition values, and subject mappings) for the requested attribute value + // FQNs, for server-side decisioning / entitlement resolution. + GetEntitleableAttributesByFqns(context.Context, *GetEntitleableAttributesByFqnsRequest) (*GetEntitleableAttributesByFqnsResponse, error) CreateAttribute(context.Context, *CreateAttributeRequest) (*CreateAttributeResponse, error) UpdateAttribute(context.Context, *UpdateAttributeRequest) (*UpdateAttributeResponse, error) DeactivateAttribute(context.Context, *DeactivateAttributeRequest) (*DeactivateAttributeResponse, error) @@ -325,6 +359,12 @@ func (UnimplementedAttributesServiceServer) GetAttribute(context.Context, *GetAt func (UnimplementedAttributesServiceServer) GetAttributeValuesByFqns(context.Context, *GetAttributeValuesByFqnsRequest) (*GetAttributeValuesByFqnsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAttributeValuesByFqns not implemented") } +func (UnimplementedAttributesServiceServer) GetKeyMappingsByFqns(context.Context, *GetKeyMappingsByFqnsRequest) (*GetKeyMappingsByFqnsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetKeyMappingsByFqns not implemented") +} +func (UnimplementedAttributesServiceServer) GetEntitleableAttributesByFqns(context.Context, *GetEntitleableAttributesByFqnsRequest) (*GetEntitleableAttributesByFqnsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetEntitleableAttributesByFqns not implemented") +} func (UnimplementedAttributesServiceServer) CreateAttribute(context.Context, *CreateAttributeRequest) (*CreateAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateAttribute not implemented") } @@ -455,6 +495,42 @@ func _AttributesService_GetAttributeValuesByFqns_Handler(srv interface{}, ctx co return interceptor(ctx, in, info, handler) } +func _AttributesService_GetKeyMappingsByFqns_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetKeyMappingsByFqnsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AttributesServiceServer).GetKeyMappingsByFqns(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AttributesService_GetKeyMappingsByFqns_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AttributesServiceServer).GetKeyMappingsByFqns(ctx, req.(*GetKeyMappingsByFqnsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AttributesService_GetEntitleableAttributesByFqns_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEntitleableAttributesByFqnsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AttributesServiceServer).GetEntitleableAttributesByFqns(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AttributesService_GetEntitleableAttributesByFqns_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AttributesServiceServer).GetEntitleableAttributesByFqns(ctx, req.(*GetEntitleableAttributesByFqnsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AttributesService_CreateAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateAttributeRequest) if err := dec(in); err != nil { @@ -748,6 +824,14 @@ var AttributesService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetAttributeValuesByFqns", Handler: _AttributesService_GetAttributeValuesByFqns_Handler, }, + { + MethodName: "GetKeyMappingsByFqns", + Handler: _AttributesService_GetKeyMappingsByFqns_Handler, + }, + { + MethodName: "GetEntitleableAttributesByFqns", + Handler: _AttributesService_GetEntitleableAttributesByFqns_Handler, + }, { MethodName: "CreateAttribute", Handler: _AttributesService_CreateAttribute_Handler, diff --git a/protocol/go/policy/attributes/attributesconnect/attributes.connect.go b/protocol/go/policy/attributes/attributesconnect/attributes.connect.go index ac88811568..fbac9369c0 100644 --- a/protocol/go/policy/attributes/attributesconnect/attributes.connect.go +++ b/protocol/go/policy/attributes/attributesconnect/attributes.connect.go @@ -45,6 +45,12 @@ const ( // AttributesServiceGetAttributeValuesByFqnsProcedure is the fully-qualified name of the // AttributesService's GetAttributeValuesByFqns RPC. AttributesServiceGetAttributeValuesByFqnsProcedure = "/policy.attributes.AttributesService/GetAttributeValuesByFqns" + // AttributesServiceGetKeyMappingsByFqnsProcedure is the fully-qualified name of the + // AttributesService's GetKeyMappingsByFqns RPC. + AttributesServiceGetKeyMappingsByFqnsProcedure = "/policy.attributes.AttributesService/GetKeyMappingsByFqns" + // AttributesServiceGetEntitleableAttributesByFqnsProcedure is the fully-qualified name of the + // AttributesService's GetEntitleableAttributesByFqns RPC. + AttributesServiceGetEntitleableAttributesByFqnsProcedure = "/policy.attributes.AttributesService/GetEntitleableAttributesByFqns" // AttributesServiceCreateAttributeProcedure is the fully-qualified name of the AttributesService's // CreateAttribute RPC. AttributesServiceCreateAttributeProcedure = "/policy.attributes.AttributesService/CreateAttribute" @@ -105,6 +111,13 @@ type AttributesServiceClient interface { ListAttributeValues(context.Context, *connect.Request[attributes.ListAttributeValuesRequest]) (*connect.Response[attributes.ListAttributeValuesResponse], error) GetAttribute(context.Context, *connect.Request[attributes.GetAttributeRequest]) (*connect.Response[attributes.GetAttributeResponse], error) GetAttributeValuesByFqns(context.Context, *connect.Request[attributes.GetAttributeValuesByFqnsRequest]) (*connect.Response[attributes.GetAttributeValuesByFqnsResponse], error) + // Returns only key-mapping information (rule and effective KAS keys) for the + // requested attribute value FQNs, for client-side key split construction. + GetKeyMappingsByFqns(context.Context, *connect.Request[attributes.GetKeyMappingsByFqnsRequest]) (*connect.Response[attributes.GetKeyMappingsByFqnsResponse], error) + // Returns only entitlement-relevant information (rule, value identity, ordered + // definition values, and subject mappings) for the requested attribute value + // FQNs, for server-side decisioning / entitlement resolution. + GetEntitleableAttributesByFqns(context.Context, *connect.Request[attributes.GetEntitleableAttributesByFqnsRequest]) (*connect.Response[attributes.GetEntitleableAttributesByFqnsResponse], error) CreateAttribute(context.Context, *connect.Request[attributes.CreateAttributeRequest]) (*connect.Response[attributes.CreateAttributeResponse], error) UpdateAttribute(context.Context, *connect.Request[attributes.UpdateAttributeRequest]) (*connect.Response[attributes.UpdateAttributeResponse], error) DeactivateAttribute(context.Context, *connect.Request[attributes.DeactivateAttributeRequest]) (*connect.Response[attributes.DeactivateAttributeResponse], error) @@ -176,6 +189,20 @@ func NewAttributesServiceClient(httpClient connect.HTTPClient, baseURL string, o connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), + getKeyMappingsByFqns: connect.NewClient[attributes.GetKeyMappingsByFqnsRequest, attributes.GetKeyMappingsByFqnsResponse]( + httpClient, + baseURL+AttributesServiceGetKeyMappingsByFqnsProcedure, + connect.WithSchema(attributesServiceMethods.ByName("GetKeyMappingsByFqns")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), + getEntitleableAttributesByFqns: connect.NewClient[attributes.GetEntitleableAttributesByFqnsRequest, attributes.GetEntitleableAttributesByFqnsResponse]( + httpClient, + baseURL+AttributesServiceGetEntitleableAttributesByFqnsProcedure, + connect.WithSchema(attributesServiceMethods.ByName("GetEntitleableAttributesByFqns")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), createAttribute: connect.NewClient[attributes.CreateAttributeRequest, attributes.CreateAttributeResponse]( httpClient, baseURL+AttributesServiceCreateAttributeProcedure, @@ -276,6 +303,8 @@ type attributesServiceClient struct { listAttributeValues *connect.Client[attributes.ListAttributeValuesRequest, attributes.ListAttributeValuesResponse] getAttribute *connect.Client[attributes.GetAttributeRequest, attributes.GetAttributeResponse] getAttributeValuesByFqns *connect.Client[attributes.GetAttributeValuesByFqnsRequest, attributes.GetAttributeValuesByFqnsResponse] + getKeyMappingsByFqns *connect.Client[attributes.GetKeyMappingsByFqnsRequest, attributes.GetKeyMappingsByFqnsResponse] + getEntitleableAttributesByFqns *connect.Client[attributes.GetEntitleableAttributesByFqnsRequest, attributes.GetEntitleableAttributesByFqnsResponse] createAttribute *connect.Client[attributes.CreateAttributeRequest, attributes.CreateAttributeResponse] updateAttribute *connect.Client[attributes.UpdateAttributeRequest, attributes.UpdateAttributeResponse] deactivateAttribute *connect.Client[attributes.DeactivateAttributeRequest, attributes.DeactivateAttributeResponse] @@ -315,6 +344,17 @@ func (c *attributesServiceClient) GetAttributeValuesByFqns(ctx context.Context, return c.getAttributeValuesByFqns.CallUnary(ctx, req) } +// GetKeyMappingsByFqns calls policy.attributes.AttributesService.GetKeyMappingsByFqns. +func (c *attributesServiceClient) GetKeyMappingsByFqns(ctx context.Context, req *connect.Request[attributes.GetKeyMappingsByFqnsRequest]) (*connect.Response[attributes.GetKeyMappingsByFqnsResponse], error) { + return c.getKeyMappingsByFqns.CallUnary(ctx, req) +} + +// GetEntitleableAttributesByFqns calls +// policy.attributes.AttributesService.GetEntitleableAttributesByFqns. +func (c *attributesServiceClient) GetEntitleableAttributesByFqns(ctx context.Context, req *connect.Request[attributes.GetEntitleableAttributesByFqnsRequest]) (*connect.Response[attributes.GetEntitleableAttributesByFqnsResponse], error) { + return c.getEntitleableAttributesByFqns.CallUnary(ctx, req) +} + // CreateAttribute calls policy.attributes.AttributesService.CreateAttribute. func (c *attributesServiceClient) CreateAttribute(ctx context.Context, req *connect.Request[attributes.CreateAttributeRequest]) (*connect.Response[attributes.CreateAttributeResponse], error) { return c.createAttribute.CallUnary(ctx, req) @@ -416,6 +456,13 @@ type AttributesServiceHandler interface { ListAttributeValues(context.Context, *connect.Request[attributes.ListAttributeValuesRequest]) (*connect.Response[attributes.ListAttributeValuesResponse], error) GetAttribute(context.Context, *connect.Request[attributes.GetAttributeRequest]) (*connect.Response[attributes.GetAttributeResponse], error) GetAttributeValuesByFqns(context.Context, *connect.Request[attributes.GetAttributeValuesByFqnsRequest]) (*connect.Response[attributes.GetAttributeValuesByFqnsResponse], error) + // Returns only key-mapping information (rule and effective KAS keys) for the + // requested attribute value FQNs, for client-side key split construction. + GetKeyMappingsByFqns(context.Context, *connect.Request[attributes.GetKeyMappingsByFqnsRequest]) (*connect.Response[attributes.GetKeyMappingsByFqnsResponse], error) + // Returns only entitlement-relevant information (rule, value identity, ordered + // definition values, and subject mappings) for the requested attribute value + // FQNs, for server-side decisioning / entitlement resolution. + GetEntitleableAttributesByFqns(context.Context, *connect.Request[attributes.GetEntitleableAttributesByFqnsRequest]) (*connect.Response[attributes.GetEntitleableAttributesByFqnsResponse], error) CreateAttribute(context.Context, *connect.Request[attributes.CreateAttributeRequest]) (*connect.Response[attributes.CreateAttributeResponse], error) UpdateAttribute(context.Context, *connect.Request[attributes.UpdateAttributeRequest]) (*connect.Response[attributes.UpdateAttributeResponse], error) DeactivateAttribute(context.Context, *connect.Request[attributes.DeactivateAttributeRequest]) (*connect.Response[attributes.DeactivateAttributeResponse], error) @@ -483,6 +530,20 @@ func NewAttributesServiceHandler(svc AttributesServiceHandler, opts ...connect.H connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) + attributesServiceGetKeyMappingsByFqnsHandler := connect.NewUnaryHandler( + AttributesServiceGetKeyMappingsByFqnsProcedure, + svc.GetKeyMappingsByFqns, + connect.WithSchema(attributesServiceMethods.ByName("GetKeyMappingsByFqns")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) + attributesServiceGetEntitleableAttributesByFqnsHandler := connect.NewUnaryHandler( + AttributesServiceGetEntitleableAttributesByFqnsProcedure, + svc.GetEntitleableAttributesByFqns, + connect.WithSchema(attributesServiceMethods.ByName("GetEntitleableAttributesByFqns")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) attributesServiceCreateAttributeHandler := connect.NewUnaryHandler( AttributesServiceCreateAttributeProcedure, svc.CreateAttribute, @@ -584,6 +645,10 @@ func NewAttributesServiceHandler(svc AttributesServiceHandler, opts ...connect.H attributesServiceGetAttributeHandler.ServeHTTP(w, r) case AttributesServiceGetAttributeValuesByFqnsProcedure: attributesServiceGetAttributeValuesByFqnsHandler.ServeHTTP(w, r) + case AttributesServiceGetKeyMappingsByFqnsProcedure: + attributesServiceGetKeyMappingsByFqnsHandler.ServeHTTP(w, r) + case AttributesServiceGetEntitleableAttributesByFqnsProcedure: + attributesServiceGetEntitleableAttributesByFqnsHandler.ServeHTTP(w, r) case AttributesServiceCreateAttributeProcedure: attributesServiceCreateAttributeHandler.ServeHTTP(w, r) case AttributesServiceUpdateAttributeProcedure: @@ -639,6 +704,14 @@ func (UnimplementedAttributesServiceHandler) GetAttributeValuesByFqns(context.Co return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.attributes.AttributesService.GetAttributeValuesByFqns is not implemented")) } +func (UnimplementedAttributesServiceHandler) GetKeyMappingsByFqns(context.Context, *connect.Request[attributes.GetKeyMappingsByFqnsRequest]) (*connect.Response[attributes.GetKeyMappingsByFqnsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.attributes.AttributesService.GetKeyMappingsByFqns is not implemented")) +} + +func (UnimplementedAttributesServiceHandler) GetEntitleableAttributesByFqns(context.Context, *connect.Request[attributes.GetEntitleableAttributesByFqnsRequest]) (*connect.Response[attributes.GetEntitleableAttributesByFqnsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.attributes.AttributesService.GetEntitleableAttributesByFqns is not implemented")) +} + func (UnimplementedAttributesServiceHandler) CreateAttribute(context.Context, *connect.Request[attributes.CreateAttributeRequest]) (*connect.Response[attributes.CreateAttributeResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.attributes.AttributesService.CreateAttribute is not implemented")) } diff --git a/service/policy/attributes/attributes.go b/service/policy/attributes/attributes.go index 04e18bf54a..c843522acd 100644 --- a/service/policy/attributes/attributes.go +++ b/service/policy/attributes/attributes.go @@ -23,6 +23,10 @@ import ( var ErrDeprecatedListAttributeValues = errors.New("deprecated: ListAttributeValues has been removed. Use GetAttribute instead") type AttributesService struct { //nolint:revive // AttributesService is a valid name for this struct + // Embed the generated Unimplemented handler so RPCs whose handlers are added + // in follow-up changes (GetKeyMappingsByFqns, GetEntitleableAttributesByFqns) + // satisfy the interface and return CodeUnimplemented until implemented. + attributesconnect.UnimplementedAttributesServiceHandler dbClient policydb.PolicyDBClient logger *logger.Logger config *policyconfig.Config diff --git a/service/policy/attributes/attributes.proto b/service/policy/attributes/attributes.proto index a965901486..71d72259a0 100644 --- a/service/policy/attributes/attributes.proto +++ b/service/policy/attributes/attributes.proto @@ -340,6 +340,73 @@ message GetAttributeValuesByFqnsResponse { map fqn_attribute_values = 1; } +/* + Key Mappings By FQNs (client-side key split path) + + Narrow read API for the client-side encrypt flow. Given attribute value FQNs, + returns only the information needed to build key splits: the governing + attribute rule and the effective KAS keys resolved server-side. It does not + return subject mappings, resource mappings, obligations, sibling values, or + metadata. Prefer this over GetAttributeValuesByFqns when building splits. +*/ +message GetKeyMappingsByFqnsRequest { + // Required + // Fully Qualified Names of attribute values (i.e. https:///attr//value/), normalized to lower case. + repeated string fqns = 1 [(buf.validate.field).repeated = { + min_items: 1 + max_items: 250 + }]; +} +message GetKeyMappingsByFqnsResponse { + message AttributeKeyMapping { + // the attribute value FQN this mapping is for + string fqn = 1; + // the attribute rule, which governs how splits combine (any_of / all_of / hierarchy) + AttributeRuleTypeEnum rule = 2; + // effective KAS keys resolved for this value (value > definition > namespace + // precedence, key mappings preferred over legacy grants); may be empty + repeated policy.SimpleKasKey keys = 3; + } + // map of FQNs to their key mapping information, for O(1) lookup + map fqn_key_mappings = 1; +} + +/* + Entitleable Attributes By FQNs (server-side decisioning path) + + Narrow read API for Auth Service / Access PDP entitlement resolution. Given + attribute value FQNs, returns the attribute rule, the value identity, the + ordered definition value FQNs (for hierarchy rule logic), and the subject + mappings needed to resolve entitlements. It does not return KAS keys, grants, + resource mappings, obligations, or metadata. +*/ +message GetEntitleableAttributesByFqnsRequest { + // Required + // Fully Qualified Names of attribute values (i.e. https:///attr//value/), normalized to lower case. + repeated string fqns = 1 [(buf.validate.field).repeated = { + min_items: 1 + max_items: 250 + }]; +} +message GetEntitleableAttributesByFqnsResponse { + message EntitleableAttribute { + // the attribute value FQN this entry is for + string fqn = 1; + // the parent attribute definition FQN + string attribute_fqn = 2; + // the attribute rule, which drives rule logic during decisioning + AttributeRuleTypeEnum rule = 3; + // identity of the attribute value + string value_id = 4; + // the definition's value FQNs in order, used for hierarchy rule expansion + repeated string definition_value_fqns = 5; + // subject mappings used to resolve entitlements for this value + repeated policy.SubjectMapping subject_mappings = 6; + } + // map of FQNs to their entitleable attribute information, for O(1) lookup + map fqn_entitleable_attributes = 1; +} + /* Assign Key Access Server (KAS Grant) to Attribute and Value */ @@ -460,6 +527,17 @@ service AttributesService { rpc GetAttributeValuesByFqns(GetAttributeValuesByFqnsRequest) returns (GetAttributeValuesByFqnsResponse) { option idempotency_level = NO_SIDE_EFFECTS; } + // Returns only key-mapping information (rule and effective KAS keys) for the + // requested attribute value FQNs, for client-side key split construction. + rpc GetKeyMappingsByFqns(GetKeyMappingsByFqnsRequest) returns (GetKeyMappingsByFqnsResponse) { + option idempotency_level = NO_SIDE_EFFECTS; + } + // Returns only entitlement-relevant information (rule, value identity, ordered + // definition values, and subject mappings) for the requested attribute value + // FQNs, for server-side decisioning / entitlement resolution. + rpc GetEntitleableAttributesByFqns(GetEntitleableAttributesByFqnsRequest) returns (GetEntitleableAttributesByFqnsResponse) { + option idempotency_level = NO_SIDE_EFFECTS; + } rpc CreateAttribute(CreateAttributeRequest) returns (CreateAttributeResponse) {}