diff --git a/docs/grpc/index.html b/docs/grpc/index.html
index bd2df75e25..7196f2eae8 100644
--- a/docs/grpc/index.html
+++ b/docs/grpc/index.html
@@ -1000,6 +1000,50 @@
Table of Contents
MGetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry
+
+ MGetEntitleableAttributesByFqnsRequest
+
+
+
+ MGetEntitleableAttributesByFqnsResponse
+
+
+
+ MGetEntitleableAttributesByFqnsResponse.DefinitionsEntry
+
+
+
+ MGetEntitleableAttributesByFqnsResponse.EntitleableAttribute
+
+
+
+ MGetEntitleableAttributesByFqnsResponse.EntitleableDefinition
+
+
+
+ MGetEntitleableAttributesByFqnsResponse.EntitleableValue
+
+
+
+ MGetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry
+
+
+
+ MGetKeyMappingsByFqnsRequest
+
+
+
+ MGetKeyMappingsByFqnsResponse
+
+
+
+ MGetKeyMappingsByFqnsResponse.AttributeKeyMapping
+
+
+
+ MGetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry
+
+
MListAttributeValuesRequest
@@ -9085,6 +9129,340 @@ 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 parent definitions (deduped, each with its
rule) and, per requested value, the value identity and the subject mappings
needed to resolve entitlements. Hierarchy definitions additionally carry their
ordered values with subject mappings, for hierarchy rule propagation. It does
not return KAS keys, grants, resource mappings, obligations, or metadata.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | fqns |
+ string |
+ repeated |
+ Required
+Fully Qualified Names of attribute values (i.e. https://<namespace>/attr/<attribute_name>/value/<value_name>), normalized to lower case. |
+
+
+
+
+
+
+
+
+
+ GetEntitleableAttributesByFqnsResponse
+
+
+
+
+
+
+
+
+
+ GetEntitleableAttributesByFqnsResponse.DefinitionsEntry
+
+
+
+
+
+
+
+
+
+ GetEntitleableAttributesByFqnsResponse.EntitleableAttribute
+
+
+
+
+
+
+
+
+
+ GetEntitleableAttributesByFqnsResponse.EntitleableDefinition
+ An attribute definition referenced by one or more requested value FQNs,
returned once regardless of how many of its values were requested.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | rule |
+ policy.AttributeRuleTypeEnum |
+ |
+ the attribute rule, which drives rule logic during decisioning |
+
+
+
+ | values |
+ GetEntitleableAttributesByFqnsResponse.EntitleableValue |
+ repeated |
+ the definition's values in order, each with its subject mappings. Populated
+ONLY for hierarchy definitions (whose decisioning needs sibling values and
+their mappings to propagate entitlement up the chain). Empty for any_of /
+all_of, where the requested per-value entries below carry what's needed. |
+
+
+
+
+
+
+
+
+
+ GetEntitleableAttributesByFqnsResponse.EntitleableValue
+ An attribute value plus the subject mappings that entitle it.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | fqn |
+ string |
+ |
+ the attribute value FQN |
+
+
+
+ | value_id |
+ string |
+ |
+ identity of the attribute value |
+
+
+
+ | subject_mappings |
+ policy.SubjectMapping |
+ repeated |
+ subject mappings used to resolve entitlements for this value |
+
+
+
+
+
+
+
+
+
+ GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | fqns |
+ string |
+ repeated |
+ Required
+Fully Qualified Names of attribute values (i.e. https://<namespace>/attr/<attribute_name>/value/<value_name>), normalized to lower case. |
+
+
+
+
+
+
+
+
+
+ GetKeyMappingsByFqnsResponse
+
+
+
+
+
+
+
+
+
+ GetKeyMappingsByFqnsResponse.AttributeKeyMapping
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | rule |
+ policy.AttributeRuleTypeEnum |
+ |
+ the attribute rule, which governs how splits combine (any_of / all_of / hierarchy) |
+
+
+
+ | keys |
+ policy.SimpleKasKey |
+ repeated |
+ effective KAS keys resolved for this value (value > definition > namespace
+precedence). Legacy grants are not used by this API; values configured only
+with grants and no kas_keys return an empty key set. |
+
+
+
+
+
+
+
+
+
+ GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry
+
+
+
+
+
+
+
+
+
ListAttributeValuesRequest
@@ -9703,6 +10081,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 |
@@ -9887,6 +10282,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 cd7e0c748b..aa33dde0a5 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:
@@ -2141,6 +2218,194 @@ 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 parent definitions (deduped, each with its
+ rule) and, per requested value, the value identity and the subject mappings
+ needed to resolve entitlements. Hierarchy definitions additionally carry their
+ ordered values with subject mappings, for hierarchy rule propagation. It does
+ not return KAS keys, grants, resource mappings, obligations, or metadata.
+ policy.attributes.GetEntitleableAttributesByFqnsResponse:
+ type: object
+ properties:
+ definitions:
+ type: object
+ title: definitions
+ additionalProperties:
+ title: value
+ $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition'
+ description: map of definition FQN to its definition, returned once each (deduped)
+ fqnEntitleableAttributes:
+ type: object
+ title: fqn_entitleable_attributes
+ additionalProperties:
+ title: value
+ $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute'
+ description: map of requested value FQN to its value and parent definition reference, for O(1) lookup
+ title: GetEntitleableAttributesByFqnsResponse
+ additionalProperties: false
+ policy.attributes.GetEntitleableAttributesByFqnsResponse.DefinitionsEntry:
+ type: object
+ properties:
+ key:
+ type: string
+ title: key
+ value:
+ title: value
+ $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition'
+ title: DefinitionsEntry
+ additionalProperties: false
+ policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute:
+ type: object
+ properties:
+ definitionFqn:
+ type: string
+ title: definition_fqn
+ description: the FQN of the parent definition, a key into `definitions`
+ value:
+ title: value
+ description: the requested attribute value plus its subject mappings
+ $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue'
+ title: EntitleableAttribute
+ additionalProperties: false
+ policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition:
+ type: object
+ properties:
+ rule:
+ title: rule
+ description: the attribute rule, which drives rule logic during decisioning
+ $ref: '#/components/schemas/policy.AttributeRuleTypeEnum'
+ values:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue'
+ title: values
+ description: |-
+ the definition's values in order, each with its subject mappings. Populated
+ ONLY for hierarchy definitions (whose decisioning needs sibling values and
+ their mappings to propagate entitlement up the chain). Empty for any_of /
+ all_of, where the requested per-value entries below carry what's needed.
+ title: EntitleableDefinition
+ additionalProperties: false
+ description: |-
+ An attribute definition referenced by one or more requested value FQNs,
+ returned once regardless of how many of its values were requested.
+ policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue:
+ type: object
+ properties:
+ fqn:
+ type: string
+ title: fqn
+ description: the attribute value FQN
+ valueId:
+ type: string
+ title: value_id
+ description: identity of the attribute value
+ subjectMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SubjectMapping'
+ title: subject_mappings
+ description: subject mappings used to resolve entitlements for this value
+ title: EntitleableValue
+ additionalProperties: false
+ description: An attribute value plus the subject mappings that entitle it.
+ 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 value FQN to its key mapping information, for O(1) lookup
+ title: GetKeyMappingsByFqnsResponse
+ additionalProperties: false
+ policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping:
+ type: object
+ properties:
+ 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). Legacy grants are not used by this API; values configured only
+ with grants and no kas_keys return an empty key set.
+ 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..0b1f9a031d 100644
--- a/protocol/go/policy/attributes/attributes.pb.go
+++ b/protocol/go/policy/attributes/attributes.pb.go
@@ -1773,6 +1773,224 @@ 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 value FQN to its 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 parent definitions (deduped, each with its
+// rule) and, per requested value, the value identity and the subject mappings
+// needed to resolve entitlements. Hierarchy definitions additionally carry their
+// ordered values with subject mappings, for hierarchy rule propagation. 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 definition FQN to its definition, returned once each (deduped)
+ Definitions map[string]*GetEntitleableAttributesByFqnsResponse_EntitleableDefinition `protobuf:"bytes,1,rep,name=definitions,proto3" json:"definitions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // map of requested value FQN to its value and parent definition reference, for O(1) lookup
+ FqnEntitleableAttributes map[string]*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute `protobuf:"bytes,2,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) GetDefinitions() map[string]*GetEntitleableAttributesByFqnsResponse_EntitleableDefinition {
+ if x != nil {
+ return x.Definitions
+ }
+ return nil
+}
+
+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 +2006,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 +2019,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 +2032,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 +2054,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 +2067,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 +2080,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 +2105,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 +2118,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 +2131,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 +2153,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 +2166,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 +2179,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 +2204,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 +2217,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 +2230,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 +2252,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 +2265,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 +2278,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 +2303,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 +2316,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 +2329,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 +2351,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 +2364,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 +2377,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 +2399,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 +2412,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 +2425,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 +2447,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 +2460,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 +2473,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 +2495,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 +2508,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 +2521,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 +2543,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 +2556,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 +2569,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 +2591,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)
}
@@ -2383,10 +2601,202 @@ func (x *AssignPublicKeyToValueRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AssignPublicKeyToValueRequest) ProtoMessage() {}
+func (*AssignPublicKeyToValueRequest) ProtoMessage() {}
+
+func (x *AssignPublicKeyToValueRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[44]
+ 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 AssignPublicKeyToValueRequest.ProtoReflect.Descriptor instead.
+func (*AssignPublicKeyToValueRequest) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *AssignPublicKeyToValueRequest) GetValueKey() *ValueKey {
+ if x != nil {
+ return x.ValueKey
+ }
+ return nil
+}
+
+type AssignPublicKeyToValueResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ ValueKey *ValueKey `protobuf:"bytes,1,opt,name=value_key,json=valueKey,proto3" json:"value_key,omitempty"`
+}
+
+func (x *AssignPublicKeyToValueResponse) Reset() {
+ *x = AssignPublicKeyToValueResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[45]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AssignPublicKeyToValueResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AssignPublicKeyToValueResponse) ProtoMessage() {}
+
+func (x *AssignPublicKeyToValueResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[45]
+ 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 AssignPublicKeyToValueResponse.ProtoReflect.Descriptor instead.
+func (*AssignPublicKeyToValueResponse) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *AssignPublicKeyToValueResponse) GetValueKey() *ValueKey {
+ if x != nil {
+ return x.ValueKey
+ }
+ return nil
+}
+
+type RemovePublicKeyFromValueRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ ValueKey *ValueKey `protobuf:"bytes,1,opt,name=value_key,json=valueKey,proto3" json:"value_key,omitempty"`
+}
+
+func (x *RemovePublicKeyFromValueRequest) Reset() {
+ *x = RemovePublicKeyFromValueRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[46]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RemovePublicKeyFromValueRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RemovePublicKeyFromValueRequest) ProtoMessage() {}
+
+func (x *RemovePublicKeyFromValueRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[46]
+ 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 RemovePublicKeyFromValueRequest.ProtoReflect.Descriptor instead.
+func (*RemovePublicKeyFromValueRequest) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *RemovePublicKeyFromValueRequest) GetValueKey() *ValueKey {
+ if x != nil {
+ return x.ValueKey
+ }
+ return nil
+}
+
+type RemovePublicKeyFromValueResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ ValueKey *ValueKey `protobuf:"bytes,1,opt,name=value_key,json=valueKey,proto3" json:"value_key,omitempty"`
+}
+
+func (x *RemovePublicKeyFromValueResponse) Reset() {
+ *x = RemovePublicKeyFromValueResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[47]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RemovePublicKeyFromValueResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RemovePublicKeyFromValueResponse) ProtoMessage() {}
+
+func (x *RemovePublicKeyFromValueResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[47]
+ 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 RemovePublicKeyFromValueResponse.ProtoReflect.Descriptor instead.
+func (*RemovePublicKeyFromValueResponse) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *RemovePublicKeyFromValueResponse) GetValueKey() *ValueKey {
+ if x != nil {
+ return x.ValueKey
+ }
+ return nil
+}
+
+type GetAttributeValuesByFqnsResponse_AttributeAndValue struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Attribute *policy.Attribute `protobuf:"bytes,1,opt,name=attribute,proto3" json:"attribute,omitempty"`
+ Value *policy.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) Reset() {
+ *x = GetAttributeValuesByFqnsResponse_AttributeAndValue{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[48]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoMessage() {}
-func (x *AssignPublicKeyToValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_attributes_attributes_proto_msgTypes[40]
+func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[48]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2397,44 +2807,55 @@ func (x *AssignPublicKeyToValueRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AssignPublicKeyToValueRequest.ProtoReflect.Descriptor instead.
-func (*AssignPublicKeyToValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{40}
+// Deprecated: Use GetAttributeValuesByFqnsResponse_AttributeAndValue.ProtoReflect.Descriptor instead.
+func (*GetAttributeValuesByFqnsResponse_AttributeAndValue) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{27, 0}
}
-func (x *AssignPublicKeyToValueRequest) GetValueKey() *ValueKey {
+func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) GetAttribute() *policy.Attribute {
if x != nil {
- return x.ValueKey
+ return x.Attribute
}
return nil
}
-type AssignPublicKeyToValueResponse struct {
+func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) GetValue() *policy.Value {
+ if x != nil {
+ return x.Value
+ }
+ return nil
+}
+
+type GetKeyMappingsByFqnsResponse_AttributeKeyMapping struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Required
- ValueKey *ValueKey `protobuf:"bytes,1,opt,name=value_key,json=valueKey,proto3" json:"value_key,omitempty"`
+ // the attribute rule, which governs how splits combine (any_of / all_of / hierarchy)
+ Rule policy.AttributeRuleTypeEnum `protobuf:"varint,1,opt,name=rule,proto3,enum=policy.AttributeRuleTypeEnum" json:"rule,omitempty"`
+ // effective KAS keys resolved for this value (value > definition > namespace
+ // precedence). Legacy grants are not used by this API; values configured only
+ // with grants and no kas_keys return an empty key set.
+ Keys []*policy.SimpleKasKey `protobuf:"bytes,2,rep,name=keys,proto3" json:"keys,omitempty"`
}
-func (x *AssignPublicKeyToValueResponse) Reset() {
- *x = AssignPublicKeyToValueResponse{}
+func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) Reset() {
+ *x = GetKeyMappingsByFqnsResponse_AttributeKeyMapping{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_attributes_attributes_proto_msgTypes[41]
+ mi := &file_policy_attributes_attributes_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AssignPublicKeyToValueResponse) String() string {
+func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AssignPublicKeyToValueResponse) ProtoMessage() {}
+func (*GetKeyMappingsByFqnsResponse_AttributeKeyMapping) ProtoMessage() {}
-func (x *AssignPublicKeyToValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_attributes_attributes_proto_msgTypes[41]
+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 {
@@ -2445,44 +2866,56 @@ func (x *AssignPublicKeyToValueResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AssignPublicKeyToValueResponse.ProtoReflect.Descriptor instead.
-func (*AssignPublicKeyToValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{41}
+// 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 *AssignPublicKeyToValueResponse) GetValueKey() *ValueKey {
+func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) GetRule() policy.AttributeRuleTypeEnum {
if x != nil {
- return x.ValueKey
+ return x.Rule
+ }
+ return policy.AttributeRuleTypeEnum(0)
+}
+
+func (x *GetKeyMappingsByFqnsResponse_AttributeKeyMapping) GetKeys() []*policy.SimpleKasKey {
+ if x != nil {
+ return x.Keys
}
return nil
}
-type RemovePublicKeyFromValueRequest struct {
+// An attribute value plus the subject mappings that entitle it.
+type GetEntitleableAttributesByFqnsResponse_EntitleableValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Required
- ValueKey *ValueKey `protobuf:"bytes,1,opt,name=value_key,json=valueKey,proto3" json:"value_key,omitempty"`
+ // the attribute value FQN
+ Fqn string `protobuf:"bytes,1,opt,name=fqn,proto3" json:"fqn,omitempty"`
+ // identity of the attribute value
+ ValueId string `protobuf:"bytes,2,opt,name=value_id,json=valueId,proto3" json:"value_id,omitempty"`
+ // subject mappings used to resolve entitlements for this value
+ SubjectMappings []*policy.SubjectMapping `protobuf:"bytes,3,rep,name=subject_mappings,json=subjectMappings,proto3" json:"subject_mappings,omitempty"`
}
-func (x *RemovePublicKeyFromValueRequest) Reset() {
- *x = RemovePublicKeyFromValueRequest{}
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableValue) Reset() {
+ *x = GetEntitleableAttributesByFqnsResponse_EntitleableValue{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_attributes_attributes_proto_msgTypes[42]
+ mi := &file_policy_attributes_attributes_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RemovePublicKeyFromValueRequest) String() string {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RemovePublicKeyFromValueRequest) ProtoMessage() {}
+func (*GetEntitleableAttributesByFqnsResponse_EntitleableValue) ProtoMessage() {}
-func (x *RemovePublicKeyFromValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_attributes_attributes_proto_msgTypes[42]
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableValue) 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 {
@@ -2493,44 +2926,65 @@ func (x *RemovePublicKeyFromValueRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RemovePublicKeyFromValueRequest.ProtoReflect.Descriptor instead.
-func (*RemovePublicKeyFromValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{42}
+// Deprecated: Use GetEntitleableAttributesByFqnsResponse_EntitleableValue.ProtoReflect.Descriptor instead.
+func (*GetEntitleableAttributesByFqnsResponse_EntitleableValue) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31, 0}
}
-func (x *RemovePublicKeyFromValueRequest) GetValueKey() *ValueKey {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableValue) GetFqn() string {
if x != nil {
- return x.ValueKey
+ return x.Fqn
+ }
+ return ""
+}
+
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableValue) GetValueId() string {
+ if x != nil {
+ return x.ValueId
+ }
+ return ""
+}
+
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableValue) GetSubjectMappings() []*policy.SubjectMapping {
+ if x != nil {
+ return x.SubjectMappings
}
return nil
}
-type RemovePublicKeyFromValueResponse struct {
+// An attribute definition referenced by one or more requested value FQNs,
+// returned once regardless of how many of its values were requested.
+type GetEntitleableAttributesByFqnsResponse_EntitleableDefinition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Required
- ValueKey *ValueKey `protobuf:"bytes,1,opt,name=value_key,json=valueKey,proto3" json:"value_key,omitempty"`
+ // the attribute rule, which drives rule logic during decisioning
+ Rule policy.AttributeRuleTypeEnum `protobuf:"varint,1,opt,name=rule,proto3,enum=policy.AttributeRuleTypeEnum" json:"rule,omitempty"`
+ // the definition's values in order, each with its subject mappings. Populated
+ // ONLY for hierarchy definitions (whose decisioning needs sibling values and
+ // their mappings to propagate entitlement up the chain). Empty for any_of /
+ // all_of, where the requested per-value entries below carry what's needed.
+ Values []*GetEntitleableAttributesByFqnsResponse_EntitleableValue `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
}
-func (x *RemovePublicKeyFromValueResponse) Reset() {
- *x = RemovePublicKeyFromValueResponse{}
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) Reset() {
+ *x = GetEntitleableAttributesByFqnsResponse_EntitleableDefinition{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_attributes_attributes_proto_msgTypes[43]
+ mi := &file_policy_attributes_attributes_proto_msgTypes[53]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RemovePublicKeyFromValueResponse) String() string {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RemovePublicKeyFromValueResponse) ProtoMessage() {}
+func (*GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) ProtoMessage() {}
-func (x *RemovePublicKeyFromValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_attributes_attributes_proto_msgTypes[43]
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[53]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2541,44 +2995,53 @@ func (x *RemovePublicKeyFromValueResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RemovePublicKeyFromValueResponse.ProtoReflect.Descriptor instead.
-func (*RemovePublicKeyFromValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{43}
+// Deprecated: Use GetEntitleableAttributesByFqnsResponse_EntitleableDefinition.ProtoReflect.Descriptor instead.
+func (*GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31, 1}
}
-func (x *RemovePublicKeyFromValueResponse) GetValueKey() *ValueKey {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) GetRule() policy.AttributeRuleTypeEnum {
if x != nil {
- return x.ValueKey
+ return x.Rule
+ }
+ return policy.AttributeRuleTypeEnum(0)
+}
+
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableDefinition) GetValues() []*GetEntitleableAttributesByFqnsResponse_EntitleableValue {
+ if x != nil {
+ return x.Values
}
return nil
}
-type GetAttributeValuesByFqnsResponse_AttributeAndValue struct {
+type GetEntitleableAttributesByFqnsResponse_EntitleableAttribute struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Attribute *policy.Attribute `protobuf:"bytes,1,opt,name=attribute,proto3" json:"attribute,omitempty"`
- Value *policy.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ // the FQN of the parent definition, a key into `definitions`
+ DefinitionFqn string `protobuf:"bytes,1,opt,name=definition_fqn,json=definitionFqn,proto3" json:"definition_fqn,omitempty"`
+ // the requested attribute value plus its subject mappings
+ Value *GetEntitleableAttributesByFqnsResponse_EntitleableValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
-func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) Reset() {
- *x = GetAttributeValuesByFqnsResponse_AttributeAndValue{}
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) Reset() {
+ *x = GetEntitleableAttributesByFqnsResponse_EntitleableAttribute{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_attributes_attributes_proto_msgTypes[44]
+ mi := &file_policy_attributes_attributes_proto_msgTypes[54]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) String() string {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoMessage() {}
+func (*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) ProtoMessage() {}
-func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoReflect() protoreflect.Message {
- mi := &file_policy_attributes_attributes_proto_msgTypes[44]
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_attributes_attributes_proto_msgTypes[54]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2589,19 +3052,19 @@ func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) ProtoReflect() prot
return mi.MessageOf(x)
}
-// Deprecated: Use GetAttributeValuesByFqnsResponse_AttributeAndValue.ProtoReflect.Descriptor instead.
-func (*GetAttributeValuesByFqnsResponse_AttributeAndValue) Descriptor() ([]byte, []int) {
- return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{27, 0}
+// Deprecated: Use GetEntitleableAttributesByFqnsResponse_EntitleableAttribute.ProtoReflect.Descriptor instead.
+func (*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) Descriptor() ([]byte, []int) {
+ return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31, 2}
}
-func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) GetAttribute() *policy.Attribute {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetDefinitionFqn() string {
if x != nil {
- return x.Attribute
+ return x.DefinitionFqn
}
- return nil
+ return ""
}
-func (x *GetAttributeValuesByFqnsResponse_AttributeAndValue) GetValue() *policy.Value {
+func (x *GetEntitleableAttributesByFqnsResponse_EntitleableAttribute) GetValue() *GetEntitleableAttributesByFqnsResponse_EntitleableValue {
if x != nil {
return x.Value
}
@@ -2952,6 +3415,107 @@ 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, 0x8a, 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, 0x72, 0x0a, 0x13, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18,
+ 0x01, 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, 0x02, 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, 0xb6, 0x08, 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, 0x6c, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 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, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 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,
+ 0x02, 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, 0x82, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a,
+ 0x03, 0x66, 0x71, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12,
+ 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x10, 0x73, 0x75,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03,
+ 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, 0xae, 0x01,
+ 0x0a, 0x15, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18,
+ 0x01, 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, 0x62, 0x0a, 0x06, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 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, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x9f,
+ 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74,
+ 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x71, 0x6e, 0x12, 0x60,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 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, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x1a, 0x8f, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x65, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 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, 0x44, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 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 +3653,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 +3684,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 +3858,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, 57)
var file_policy_attributes_attributes_proto_goTypes = []interface{}{
(SortAttributesType)(0), // 0: policy.attributes.SortAttributesType
(*AttributeKeyAccessServer)(nil), // 1: policy.attributes.AttributeKeyAccessServer
@@ -3307,136 +3889,165 @@ 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_EntitleableValue)(nil), // 53: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue
+ (*GetEntitleableAttributesByFqnsResponse_EntitleableDefinition)(nil), // 54: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition
+ (*GetEntitleableAttributesByFqnsResponse_EntitleableAttribute)(nil), // 55: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute
+ nil, // 56: policy.attributes.GetEntitleableAttributesByFqnsResponse.DefinitionsEntry
+ nil, // 57: policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry
+ (policy.SortDirection)(0), // 58: policy.SortDirection
+ (common.ActiveStateEnum)(0), // 59: common.ActiveStateEnum
+ (*policy.PageRequest)(nil), // 60: policy.PageRequest
+ (*policy.Search)(nil), // 61: policy.Search
+ (*policy.Attribute)(nil), // 62: policy.Attribute
+ (*policy.PageResponse)(nil), // 63: policy.PageResponse
+ (policy.AttributeRuleTypeEnum)(0), // 64: policy.AttributeRuleTypeEnum
+ (*wrapperspb.BoolValue)(nil), // 65: google.protobuf.BoolValue
+ (*common.MetadataMutable)(nil), // 66: common.MetadataMutable
+ (common.MetadataUpdateEnum)(0), // 67: common.MetadataUpdateEnum
+ (*policy.Value)(nil), // 68: policy.Value
+ (*common.IdFqnIdentifier)(nil), // 69: common.IdFqnIdentifier
+ (*common.IdNameIdentifier)(nil), // 70: common.IdNameIdentifier
+ (*policy.RequestContext)(nil), // 71: policy.RequestContext
+ (*policy.SimpleKasKey)(nil), // 72: policy.SimpleKasKey
+ (*policy.SubjectMapping)(nil), // 73: 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
+ 58, // 1: policy.attributes.AttributesSort.direction:type_name -> policy.SortDirection
+ 59, // 2: policy.attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum
+ 60, // 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
+ 61, // 5: policy.attributes.ListAttributesRequest.search:type_name -> policy.Search
+ 62, // 6: policy.attributes.ListAttributesResponse.attributes:type_name -> policy.Attribute
+ 63, // 7: policy.attributes.ListAttributesResponse.pagination:type_name -> policy.PageResponse
+ 62, // 8: policy.attributes.GetAttributeResponse.attribute:type_name -> policy.Attribute
+ 64, // 9: policy.attributes.CreateAttributeRequest.rule:type_name -> policy.AttributeRuleTypeEnum
+ 65, // 10: policy.attributes.CreateAttributeRequest.allow_traversal:type_name -> google.protobuf.BoolValue
+ 66, // 11: policy.attributes.CreateAttributeRequest.metadata:type_name -> common.MetadataMutable
+ 62, // 12: policy.attributes.CreateAttributeResponse.attribute:type_name -> policy.Attribute
+ 66, // 13: policy.attributes.UpdateAttributeRequest.metadata:type_name -> common.MetadataMutable
+ 67, // 14: policy.attributes.UpdateAttributeRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 62, // 15: policy.attributes.UpdateAttributeResponse.attribute:type_name -> policy.Attribute
+ 62, // 16: policy.attributes.DeactivateAttributeResponse.attribute:type_name -> policy.Attribute
+ 68, // 17: policy.attributes.GetAttributeValueResponse.value:type_name -> policy.Value
+ 59, // 18: policy.attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum
+ 60, // 19: policy.attributes.ListAttributeValuesRequest.pagination:type_name -> policy.PageRequest
+ 68, // 20: policy.attributes.ListAttributeValuesResponse.values:type_name -> policy.Value
+ 63, // 21: policy.attributes.ListAttributeValuesResponse.pagination:type_name -> policy.PageResponse
+ 69, // 22: policy.attributes.AttributeValueObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier
+ 70, // 23: policy.attributes.AttributeValueObligationTriggerRequest.action:type_name -> common.IdNameIdentifier
+ 71, // 24: policy.attributes.AttributeValueObligationTriggerRequest.context:type_name -> policy.RequestContext
+ 66, // 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
+ 66, // 27: policy.attributes.CreateAttributeValueRequest.metadata:type_name -> common.MetadataMutable
+ 68, // 28: policy.attributes.CreateAttributeValueResponse.value:type_name -> policy.Value
+ 66, // 29: policy.attributes.UpdateAttributeValueRequest.metadata:type_name -> common.MetadataMutable
+ 67, // 30: policy.attributes.UpdateAttributeValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 68, // 31: policy.attributes.UpdateAttributeValueResponse.value:type_name -> policy.Value
+ 68, // 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
+ 56, // 35: policy.attributes.GetEntitleableAttributesByFqnsResponse.definitions:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.DefinitionsEntry
+ 57, // 36: policy.attributes.GetEntitleableAttributesByFqnsResponse.fqn_entitleable_attributes:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry
+ 1, // 37: policy.attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer
+ 1, // 38: policy.attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer
+ 1, // 39: policy.attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer
+ 1, // 40: policy.attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer
+ 2, // 41: policy.attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer
+ 2, // 42: policy.attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer
+ 2, // 43: policy.attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer
+ 2, // 44: policy.attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer
+ 3, // 45: policy.attributes.AssignPublicKeyToAttributeRequest.attribute_key:type_name -> policy.attributes.AttributeKey
+ 3, // 46: policy.attributes.AssignPublicKeyToAttributeResponse.attribute_key:type_name -> policy.attributes.AttributeKey
+ 3, // 47: policy.attributes.RemovePublicKeyFromAttributeRequest.attribute_key:type_name -> policy.attributes.AttributeKey
+ 3, // 48: policy.attributes.RemovePublicKeyFromAttributeResponse.attribute_key:type_name -> policy.attributes.AttributeKey
+ 4, // 49: policy.attributes.AssignPublicKeyToValueRequest.value_key:type_name -> policy.attributes.ValueKey
+ 4, // 50: policy.attributes.AssignPublicKeyToValueResponse.value_key:type_name -> policy.attributes.ValueKey
+ 4, // 51: policy.attributes.RemovePublicKeyFromValueRequest.value_key:type_name -> policy.attributes.ValueKey
+ 4, // 52: policy.attributes.RemovePublicKeyFromValueResponse.value_key:type_name -> policy.attributes.ValueKey
+ 62, // 53: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue.attribute:type_name -> policy.Attribute
+ 68, // 54: policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue.value:type_name -> policy.Value
+ 49, // 55: policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntry.value:type_name -> policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValue
+ 64, // 56: policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping.rule:type_name -> policy.AttributeRuleTypeEnum
+ 72, // 57: policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping.keys:type_name -> policy.SimpleKasKey
+ 51, // 58: policy.attributes.GetKeyMappingsByFqnsResponse.FqnKeyMappingsEntry.value:type_name -> policy.attributes.GetKeyMappingsByFqnsResponse.AttributeKeyMapping
+ 73, // 59: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue.subject_mappings:type_name -> policy.SubjectMapping
+ 64, // 60: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition.rule:type_name -> policy.AttributeRuleTypeEnum
+ 53, // 61: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition.values:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue
+ 53, // 62: policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute.value:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableValue
+ 54, // 63: policy.attributes.GetEntitleableAttributesByFqnsResponse.DefinitionsEntry.value:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableDefinition
+ 55, // 64: policy.attributes.GetEntitleableAttributesByFqnsResponse.FqnEntitleableAttributesEntry.value:type_name -> policy.attributes.GetEntitleableAttributesByFqnsResponse.EntitleableAttribute
+ 6, // 65: policy.attributes.AttributesService.ListAttributes:input_type -> policy.attributes.ListAttributesRequest
+ 18, // 66: policy.attributes.AttributesService.ListAttributeValues:input_type -> policy.attributes.ListAttributeValuesRequest
+ 8, // 67: policy.attributes.AttributesService.GetAttribute:input_type -> policy.attributes.GetAttributeRequest
+ 27, // 68: policy.attributes.AttributesService.GetAttributeValuesByFqns:input_type -> policy.attributes.GetAttributeValuesByFqnsRequest
+ 29, // 69: policy.attributes.AttributesService.GetKeyMappingsByFqns:input_type -> policy.attributes.GetKeyMappingsByFqnsRequest
+ 31, // 70: policy.attributes.AttributesService.GetEntitleableAttributesByFqns:input_type -> policy.attributes.GetEntitleableAttributesByFqnsRequest
+ 10, // 71: policy.attributes.AttributesService.CreateAttribute:input_type -> policy.attributes.CreateAttributeRequest
+ 12, // 72: policy.attributes.AttributesService.UpdateAttribute:input_type -> policy.attributes.UpdateAttributeRequest
+ 14, // 73: policy.attributes.AttributesService.DeactivateAttribute:input_type -> policy.attributes.DeactivateAttributeRequest
+ 16, // 74: policy.attributes.AttributesService.GetAttributeValue:input_type -> policy.attributes.GetAttributeValueRequest
+ 21, // 75: policy.attributes.AttributesService.CreateAttributeValue:input_type -> policy.attributes.CreateAttributeValueRequest
+ 23, // 76: policy.attributes.AttributesService.UpdateAttributeValue:input_type -> policy.attributes.UpdateAttributeValueRequest
+ 25, // 77: policy.attributes.AttributesService.DeactivateAttributeValue:input_type -> policy.attributes.DeactivateAttributeValueRequest
+ 33, // 78: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> policy.attributes.AssignKeyAccessServerToAttributeRequest
+ 35, // 79: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> policy.attributes.RemoveKeyAccessServerFromAttributeRequest
+ 37, // 80: policy.attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> policy.attributes.AssignKeyAccessServerToValueRequest
+ 39, // 81: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> policy.attributes.RemoveKeyAccessServerFromValueRequest
+ 41, // 82: policy.attributes.AttributesService.AssignPublicKeyToAttribute:input_type -> policy.attributes.AssignPublicKeyToAttributeRequest
+ 43, // 83: policy.attributes.AttributesService.RemovePublicKeyFromAttribute:input_type -> policy.attributes.RemovePublicKeyFromAttributeRequest
+ 45, // 84: policy.attributes.AttributesService.AssignPublicKeyToValue:input_type -> policy.attributes.AssignPublicKeyToValueRequest
+ 47, // 85: policy.attributes.AttributesService.RemovePublicKeyFromValue:input_type -> policy.attributes.RemovePublicKeyFromValueRequest
+ 7, // 86: policy.attributes.AttributesService.ListAttributes:output_type -> policy.attributes.ListAttributesResponse
+ 19, // 87: policy.attributes.AttributesService.ListAttributeValues:output_type -> policy.attributes.ListAttributeValuesResponse
+ 9, // 88: policy.attributes.AttributesService.GetAttribute:output_type -> policy.attributes.GetAttributeResponse
+ 28, // 89: policy.attributes.AttributesService.GetAttributeValuesByFqns:output_type -> policy.attributes.GetAttributeValuesByFqnsResponse
+ 30, // 90: policy.attributes.AttributesService.GetKeyMappingsByFqns:output_type -> policy.attributes.GetKeyMappingsByFqnsResponse
+ 32, // 91: policy.attributes.AttributesService.GetEntitleableAttributesByFqns:output_type -> policy.attributes.GetEntitleableAttributesByFqnsResponse
+ 11, // 92: policy.attributes.AttributesService.CreateAttribute:output_type -> policy.attributes.CreateAttributeResponse
+ 13, // 93: policy.attributes.AttributesService.UpdateAttribute:output_type -> policy.attributes.UpdateAttributeResponse
+ 15, // 94: policy.attributes.AttributesService.DeactivateAttribute:output_type -> policy.attributes.DeactivateAttributeResponse
+ 17, // 95: policy.attributes.AttributesService.GetAttributeValue:output_type -> policy.attributes.GetAttributeValueResponse
+ 22, // 96: policy.attributes.AttributesService.CreateAttributeValue:output_type -> policy.attributes.CreateAttributeValueResponse
+ 24, // 97: policy.attributes.AttributesService.UpdateAttributeValue:output_type -> policy.attributes.UpdateAttributeValueResponse
+ 26, // 98: policy.attributes.AttributesService.DeactivateAttributeValue:output_type -> policy.attributes.DeactivateAttributeValueResponse
+ 34, // 99: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> policy.attributes.AssignKeyAccessServerToAttributeResponse
+ 36, // 100: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> policy.attributes.RemoveKeyAccessServerFromAttributeResponse
+ 38, // 101: policy.attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> policy.attributes.AssignKeyAccessServerToValueResponse
+ 40, // 102: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> policy.attributes.RemoveKeyAccessServerFromValueResponse
+ 42, // 103: policy.attributes.AttributesService.AssignPublicKeyToAttribute:output_type -> policy.attributes.AssignPublicKeyToAttributeResponse
+ 44, // 104: policy.attributes.AttributesService.RemovePublicKeyFromAttribute:output_type -> policy.attributes.RemovePublicKeyFromAttributeResponse
+ 46, // 105: policy.attributes.AttributesService.AssignPublicKeyToValue:output_type -> policy.attributes.AssignPublicKeyToValueResponse
+ 48, // 106: policy.attributes.AttributesService.RemovePublicKeyFromValue:output_type -> policy.attributes.RemovePublicKeyFromValueResponse
+ 86, // [86:107] is the sub-list for method output_type
+ 65, // [65:86] is the sub-list for method input_type
+ 65, // [65:65] is the sub-list for extension type_name
+ 65, // [65:65] is the sub-list for extension extendee
+ 0, // [0:65] is the sub-list for field type_name
}
func init() { file_policy_attributes_attributes_proto_init() }
@@ -3782,7 +4393,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 +4405,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 +4417,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 +4429,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 +4441,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 +4453,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 +4465,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 +4477,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 +4489,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 +4501,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 +4513,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 +4525,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 +4537,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 +4549,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 +4561,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 +4573,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 +4585,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 +4644,54 @@ 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_EntitleableValue); 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[53].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetEntitleableAttributesByFqnsResponse_EntitleableDefinition); 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[54].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 +4707,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: 57,
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/sdk/sdkconnect/attributes.go b/sdk/sdkconnect/attributes.go
index 080ef4df83..8878278b32 100644
--- a/sdk/sdkconnect/attributes.go
+++ b/sdk/sdkconnect/attributes.go
@@ -21,6 +21,8 @@ type AttributesServiceClient interface {
ListAttributeValues(ctx context.Context, req *attributes.ListAttributeValuesRequest) (*attributes.ListAttributeValuesResponse, error)
GetAttribute(ctx context.Context, req *attributes.GetAttributeRequest) (*attributes.GetAttributeResponse, error)
GetAttributeValuesByFqns(ctx context.Context, req *attributes.GetAttributeValuesByFqnsRequest) (*attributes.GetAttributeValuesByFqnsResponse, error)
+ GetKeyMappingsByFqns(ctx context.Context, req *attributes.GetKeyMappingsByFqnsRequest) (*attributes.GetKeyMappingsByFqnsResponse, error)
+ GetEntitleableAttributesByFqns(ctx context.Context, req *attributes.GetEntitleableAttributesByFqnsRequest) (*attributes.GetEntitleableAttributesByFqnsResponse, error)
CreateAttribute(ctx context.Context, req *attributes.CreateAttributeRequest) (*attributes.CreateAttributeResponse, error)
UpdateAttribute(ctx context.Context, req *attributes.UpdateAttributeRequest) (*attributes.UpdateAttributeResponse, error)
DeactivateAttribute(ctx context.Context, req *attributes.DeactivateAttributeRequest) (*attributes.DeactivateAttributeResponse, error)
@@ -74,6 +76,24 @@ func (w *AttributesServiceClientConnectWrapper) GetAttributeValuesByFqns(ctx con
return res.Msg, err
}
+func (w *AttributesServiceClientConnectWrapper) GetKeyMappingsByFqns(ctx context.Context, req *attributes.GetKeyMappingsByFqnsRequest) (*attributes.GetKeyMappingsByFqnsResponse, error) {
+ // Wrap Connect RPC client request
+ res, err := w.AttributesServiceClient.GetKeyMappingsByFqns(ctx, connect.NewRequest(req))
+ if res == nil {
+ return nil, err
+ }
+ return res.Msg, err
+}
+
+func (w *AttributesServiceClientConnectWrapper) GetEntitleableAttributesByFqns(ctx context.Context, req *attributes.GetEntitleableAttributesByFqnsRequest) (*attributes.GetEntitleableAttributesByFqnsResponse, error) {
+ // Wrap Connect RPC client request
+ res, err := w.AttributesServiceClient.GetEntitleableAttributesByFqns(ctx, connect.NewRequest(req))
+ if res == nil {
+ return nil, err
+ }
+ return res.Msg, err
+}
+
func (w *AttributesServiceClientConnectWrapper) CreateAttribute(ctx context.Context, req *attributes.CreateAttributeRequest) (*attributes.CreateAttributeResponse, error) {
// Wrap Connect RPC client request
res, err := w.AttributesServiceClient.CreateAttribute(ctx, connect.NewRequest(req))
diff --git a/service/authorization/authorization_test_structures.go b/service/authorization/authorization_test_structures.go
index de0d1127cf..6eeb7b6ae2 100644
--- a/service/authorization/authorization_test_structures.go
+++ b/service/authorization/authorization_test_structures.go
@@ -39,6 +39,14 @@ func (*myAttributesClient) GetAttributeValuesByFqns(_ context.Context, _ *attr.G
return &getAttributesByValueFqnsResponse, errGetAttributesByValueFqns
}
+func (*myAttributesClient) GetKeyMappingsByFqns(_ context.Context, _ *attr.GetKeyMappingsByFqnsRequest) (*attr.GetKeyMappingsByFqnsResponse, error) {
+ return &attr.GetKeyMappingsByFqnsResponse{}, nil
+}
+
+func (*myAttributesClient) GetEntitleableAttributesByFqns(_ context.Context, _ *attr.GetEntitleableAttributesByFqnsRequest) (*attr.GetEntitleableAttributesByFqnsResponse, error) {
+ return &attr.GetEntitleableAttributesByFqnsResponse{}, nil
+}
+
func (*myAttributesClient) ListAttributeValues(_ context.Context, _ *attr.ListAttributeValuesRequest) (*attr.ListAttributeValuesResponse, error) {
return &attr.ListAttributeValuesResponse{}, nil
}
@@ -265,6 +273,14 @@ func (*paginatedMockAttributesClient) GetAttributeValuesByFqns(_ context.Context
return &attr.GetAttributeValuesByFqnsResponse{}, nil
}
+func (*paginatedMockAttributesClient) GetKeyMappingsByFqns(_ context.Context, _ *attr.GetKeyMappingsByFqnsRequest) (*attr.GetKeyMappingsByFqnsResponse, error) {
+ return &attr.GetKeyMappingsByFqnsResponse{}, nil
+}
+
+func (*paginatedMockAttributesClient) GetEntitleableAttributesByFqns(_ context.Context, _ *attr.GetEntitleableAttributesByFqnsRequest) (*attr.GetEntitleableAttributesByFqnsResponse, error) {
+ return &attr.GetEntitleableAttributesByFqnsResponse{}, nil
+}
+
func (*paginatedMockAttributesClient) ListAttributeValues(_ context.Context, _ *attr.ListAttributeValuesRequest) (*attr.ListAttributeValuesResponse, error) {
return &attr.ListAttributeValuesResponse{}, nil
}
diff --git a/service/policy/attributes/attributes.go b/service/policy/attributes/attributes.go
index 04e18bf54a..45e4dec7b5 100644
--- a/service/policy/attributes/attributes.go
+++ b/service/policy/attributes/attributes.go
@@ -172,6 +172,18 @@ func (s *AttributesService) GetAttributeValuesByFqns(ctx context.Context,
return connect.NewResponse(rsp), nil
}
+func (s *AttributesService) GetKeyMappingsByFqns(_ context.Context, _ *connect.Request[attributes.GetKeyMappingsByFqnsRequest]) (*connect.Response[attributes.GetKeyMappingsByFqnsResponse], error) {
+ // Server implementation lands in the follow-up service PR; the proto and
+ // generated code are released first.
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("GetKeyMappingsByFqns is not yet implemented"))
+}
+
+func (s *AttributesService) GetEntitleableAttributesByFqns(_ context.Context, _ *connect.Request[attributes.GetEntitleableAttributesByFqnsRequest]) (*connect.Response[attributes.GetEntitleableAttributesByFqnsResponse], error) {
+ // Server implementation lands in the follow-up service PR; the proto and
+ // generated code are released first.
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("GetEntitleableAttributesByFqns is not yet implemented"))
+}
+
func (s *AttributesService) UpdateAttribute(ctx context.Context,
req *connect.Request[attributes.UpdateAttributeRequest],
) (*connect.Response[attributes.UpdateAttributeResponse], error) {
diff --git a/service/policy/attributes/attributes.proto b/service/policy/attributes/attributes.proto
index a965901486..93bf042b39 100644
--- a/service/policy/attributes/attributes.proto
+++ b/service/policy/attributes/attributes.proto
@@ -340,6 +340,87 @@ 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 rule, which governs how splits combine (any_of / all_of / hierarchy)
+ AttributeRuleTypeEnum rule = 1;
+ // effective KAS keys resolved for this value (value > definition > namespace
+ // precedence). Legacy grants are not used by this API; values configured only
+ // with grants and no kas_keys return an empty key set.
+ repeated policy.SimpleKasKey keys = 2;
+ }
+ // map of value FQN to its 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 parent definitions (deduped, each with its
+ rule) and, per requested value, the value identity and the subject mappings
+ needed to resolve entitlements. Hierarchy definitions additionally carry their
+ ordered values with subject mappings, for hierarchy rule propagation. 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 {
+ // An attribute value plus the subject mappings that entitle it.
+ message EntitleableValue {
+ // the attribute value FQN
+ string fqn = 1;
+ // identity of the attribute value
+ string value_id = 2;
+ // subject mappings used to resolve entitlements for this value
+ repeated policy.SubjectMapping subject_mappings = 3;
+ }
+ // An attribute definition referenced by one or more requested value FQNs,
+ // returned once regardless of how many of its values were requested.
+ message EntitleableDefinition {
+ // the attribute rule, which drives rule logic during decisioning
+ AttributeRuleTypeEnum rule = 1;
+ // the definition's values in order, each with its subject mappings. Populated
+ // ONLY for hierarchy definitions (whose decisioning needs sibling values and
+ // their mappings to propagate entitlement up the chain). Empty for any_of /
+ // all_of, where the requested per-value entries below carry what's needed.
+ repeated EntitleableValue values = 2;
+ }
+ message EntitleableAttribute {
+ // the FQN of the parent definition, a key into `definitions`
+ string definition_fqn = 1;
+ // the requested attribute value plus its subject mappings
+ EntitleableValue value = 2;
+ }
+ // map of definition FQN to its definition, returned once each (deduped)
+ map definitions = 1;
+ // map of requested value FQN to its value and parent definition reference, for O(1) lookup
+ map fqn_entitleable_attributes = 2;
+}
+
/*
Assign Key Access Server (KAS Grant) to Attribute and Value
*/
@@ -460,6 +541,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) {}