+ | metadata |
+ common.MetadataMutable |
+ |
+ Optional
+Common metadata
-
-
-
- | Field | Type | Label | Description |
-
-
+Mutable metadata for the key
+
- | namespace_key |
- NamespaceKey |
+ metadata_update_behavior |
+ common.MetadataUpdateEnum |
|
- |
+ The behavior for updating the metadata |
@@ -12776,8 +13417,8 @@ RemovePublicKeyFr
- RemovePublicKeyFromNamespaceResponse
-
+ UpdateKeyResponse
+ Response to an UpdateKeyRequest, containing the updated asymmetric key
@@ -12787,10 +13428,10 @@ RemovePublicKeyF
- | namespace_key |
- NamespaceKey |
+ kas_key |
+ policy.KasKey |
|
- |
+ The updated kas key |
@@ -12800,7 +13441,7 @@ RemovePublicKeyF
- UpdateNamespaceRequest
+ UpdatePublicKeyRequest
@@ -12821,7 +13462,8 @@ UpdateNamespaceRequest
metadata |
common.MetadataMutable |
|
- Optional |
+ Optional
+Common metadata |
@@ -12838,7 +13480,7 @@ UpdateNamespaceRequest
- UpdateNamespaceResponse
+ UpdatePublicKeyResponse
@@ -12849,8 +13491,8 @@ UpdateNamespaceResponse
- | namespace |
- policy.Namespace |
+ key |
+ policy.Key |
|
|
@@ -12864,7 +13506,7 @@ UpdateNamespaceResponse
- SortNamespacesType
+ SortKasKeysType
@@ -12873,31 +13515,66 @@ SortNamespacesType
- | SORT_NAMESPACES_TYPE_UNSPECIFIED |
+ SORT_KAS_KEYS_TYPE_UNSPECIFIED |
0 |
|
- | SORT_NAMESPACES_TYPE_NAME |
+ SORT_KAS_KEYS_TYPE_KEY_ID |
1 |
|
- | SORT_NAMESPACES_TYPE_FQN |
+ SORT_KAS_KEYS_TYPE_CREATED_AT |
2 |
|
- | SORT_NAMESPACES_TYPE_CREATED_AT |
+ SORT_KAS_KEYS_TYPE_UPDATED_AT |
+ 3 |
+ |
+
+
+
+
+
+ SortKeyAccessServersType
+
+
+
+ | Name | Number | Description |
+
+
+
+
+ | SORT_KEY_ACCESS_SERVERS_TYPE_UNSPECIFIED |
+ 0 |
+ |
+
+
+
+ | SORT_KEY_ACCESS_SERVERS_TYPE_NAME |
+ 1 |
+ |
+
+
+
+ | SORT_KEY_ACCESS_SERVERS_TYPE_URI |
+ 2 |
+ |
+
+
+
+ | SORT_KEY_ACCESS_SERVERS_TYPE_CREATED_AT |
3 |
|
- | SORT_NAMESPACES_TYPE_UPDATED_AT |
+ SORT_KEY_ACCESS_SERVERS_TYPE_UPDATED_AT |
4 |
|
@@ -12909,7 +13586,7 @@ SortNamespacesType
- NamespaceService
+ KeyAccessServerRegistryService
@@ -12918,68 +13595,102 @@ NamespaceService
- | GetNamespace |
- GetNamespaceRequest |
- GetNamespaceResponse |
+ ListKeyAccessServers |
+ ListKeyAccessServersRequest |
+ ListKeyAccessServersResponse |
|
- | ListNamespaces |
- ListNamespacesRequest |
- ListNamespacesResponse |
+ GetKeyAccessServer |
+ GetKeyAccessServerRequest |
+ GetKeyAccessServerResponse |
|
- | CreateNamespace |
- CreateNamespaceRequest |
- CreateNamespaceResponse |
+ CreateKeyAccessServer |
+ CreateKeyAccessServerRequest |
+ CreateKeyAccessServerResponse |
|
- | UpdateNamespace |
- UpdateNamespaceRequest |
- UpdateNamespaceResponse |
+ UpdateKeyAccessServer |
+ UpdateKeyAccessServerRequest |
+ UpdateKeyAccessServerResponse |
|
- | DeactivateNamespace |
- DeactivateNamespaceRequest |
- DeactivateNamespaceResponse |
+ DeleteKeyAccessServer |
+ DeleteKeyAccessServerRequest |
+ DeleteKeyAccessServerResponse |
|
- | AssignKeyAccessServerToNamespace |
- AssignKeyAccessServerToNamespaceRequest |
- AssignKeyAccessServerToNamespaceResponse |
- Deprecated: utilize AssignPublicKeyToNamespace |
+ ListKeyAccessServerGrants |
+ ListKeyAccessServerGrantsRequest |
+ ListKeyAccessServerGrantsResponse |
+ Deprecated |
- | RemoveKeyAccessServerFromNamespace |
- RemoveKeyAccessServerFromNamespaceRequest |
- RemoveKeyAccessServerFromNamespaceResponse |
- Deprecated: utilize RemovePublicKeyFromNamespace |
+ CreateKey |
+ CreateKeyRequest |
+ CreateKeyResponse |
+ KAS Key Management
+Request to create a new key in the Key Access Service. |
- | AssignPublicKeyToNamespace |
- AssignPublicKeyToNamespaceRequest |
- AssignPublicKeyToNamespaceResponse |
- --------------------------------------*
-Namespace <> Key RPCs
---------------------------------------- |
+ GetKey |
+ GetKeyRequest |
+ GetKeyResponse |
+ Request to retrieve a key from the Key Access Service. |
- | RemovePublicKeyFromNamespace |
- RemovePublicKeyFromNamespaceRequest |
- RemovePublicKeyFromNamespaceResponse |
- |
+ ListKeys |
+ ListKeysRequest |
+ ListKeysResponse |
+ Request to list keys in the Key Access Service. |
+
+
+
+ | UpdateKey |
+ UpdateKeyRequest |
+ UpdateKeyResponse |
+ Request to update a key in the Key Access Service. |
+
+
+
+ | RotateKey |
+ RotateKeyRequest |
+ RotateKeyResponse |
+ Request to rotate a key in the Key Access Service. |
+
+
+
+ | SetBaseKey |
+ SetBaseKeyRequest |
+ SetBaseKeyResponse |
+ Request to set the default a default kas key. |
+
+
+
+ | GetBaseKey |
+ GetBaseKeyRequest |
+ GetBaseKeyResponse |
+ Get Default kas keys |
+
+
+
+ | ListKeyMappings |
+ ListKeyMappingsRequest |
+ ListKeyMappingsResponse |
+ Request to list key mappings in the Key Access Service. |
@@ -12999,12 +13710,7 @@ Methods with deprecated option
- | AssignKeyAccessServerToNamespace |
- true |
-
-
-
- | RemoveKeyAccessServerFromNamespace |
+ ListKeyAccessServerGrants |
true |
@@ -13025,12 +13731,17 @@ Methods with idempotency_level option
- | GetNamespace |
+ ListKeyAccessServers |
NO_SIDE_EFFECTS |
- | ListNamespaces |
+ GetKeyAccessServer |
+ NO_SIDE_EFFECTS |
+
+
+
+ | ListKeyAccessServerGrants |
NO_SIDE_EFFECTS |
@@ -13041,13 +13752,13 @@ Methods with idempotency_level option
- policy/obligations/obligations.protoTop
+ policy/keymanagement/key_management.protoTop
- AddObligationTriggerRequest
- Obligation Triggers are owned by the namespace that owns the action and attribute value, which must be the same. In this way, a trigger can intentionally cross namespace boundaries: associating obligation values of a different namespace than the one that owns the action being taken or the attribute value.
+ CreateProviderConfigRequest
+ Provider Configuration Requests and Response Messages
@@ -13057,40 +13768,34 @@ AddObligationTriggerRequ
- | obligation_value |
- common.IdFqnIdentifier |
- |
- Required |
-
-
-
- | action |
- common.IdNameIdentifier |
+ name |
+ string |
|
- Required |
+ Required
+The name of the key provider. (e.g. "AWS KMS Instance 1", "Google Cloud KMS Instance 2") |
- | attribute_value |
- common.IdFqnIdentifier |
+ config_json |
+ bytes |
|
- Required |
+ Required
+JSON configuration for the key provider. This is unique to individual key providers. |
- | context |
- policy.RequestContext |
+ manager |
+ string |
|
- Optional
-The request context for this obligation value policy decisioning. |
+ Required
+The type of key manager (e.g. "aws", "gcp", "azure", "opentdf.io/basic") |
| metadata |
common.MetadataMutable |
|
- Optional
-Common metadata |
+ Common metadata |
@@ -13100,7 +13805,7 @@ AddObligationTriggerRequ
- AddObligationTriggerResponse
+ CreateProviderConfigResponse
@@ -13111,8 +13816,8 @@ AddObligationTriggerRes
- | trigger |
- policy.ObligationTrigger |
+ provider_config |
+ policy.KeyProviderConfig |
|
|
@@ -13124,8 +13829,8 @@ AddObligationTriggerRes
- CreateObligationRequest
-
+ DeleteProviderConfigRequest
+ In order to delete a provider configuration you must first delete all keys associated with the provider.
@@ -13135,39 +13840,10 @@ CreateObligationRequest
- | namespace_id |
- string |
- |
- |
-
-
-
- | namespace_fqn |
- string |
- |
- |
-
-
-
- | name |
- string |
- |
- |
-
-
-
- | values |
+ id |
string |
- repeated |
- Optional |
-
-
-
- | metadata |
- common.MetadataMutable |
|
- Optional
-Common metadata |
+ Required |
@@ -13177,7 +13853,7 @@ CreateObligationRequest
- CreateObligationResponse
+ DeleteProviderConfigResponse
@@ -13188,8 +13864,8 @@ CreateObligationResponse
- | obligation |
- policy.Obligation |
+ provider_config |
+ policy.KeyProviderConfig |
|
|
@@ -13201,7 +13877,7 @@ CreateObligationResponseCreateObligationValueRequest
+ GetProviderConfigRequest
@@ -13212,40 +13888,48 @@ CreateObligationValueRe
- | obligation_id |
+ id |
string |
|
|
- | obligation_fqn |
+ name |
string |
|
|
- | value |
+ manager |
string |
|
- |
+ Optional - filter by manager type when searching by name |
-
- | triggers |
- ValueTriggerRequest |
- repeated |
- Optional
-Combination of action and attribute_value that will trigger this obligation value policy decisioning. |
-
+
+
+
+
+
+
+
+ GetProviderConfigResponse
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
- | metadata |
- common.MetadataMutable |
+ provider_config |
+ policy.KeyProviderConfig |
|
- Optional
-Common metadata |
+ |
@@ -13255,7 +13939,7 @@ CreateObligationValueRe
- CreateObligationValueResponse
+ ListProviderConfigsRequest
@@ -13266,10 +13950,10 @@ CreateObligationValueR
- | value |
- policy.ObligationValue |
+ pagination |
+ policy.PageRequest |
|
- |
+ Optional |
@@ -13279,7 +13963,7 @@ CreateObligationValueR
- DeleteObligationRequest
+ ListProviderConfigsResponse
@@ -13290,15 +13974,15 @@ DeleteObligationRequest
- | id |
- string |
- |
+ provider_configs |
+ policy.KeyProviderConfig |
+ repeated |
|
- | fqn |
- string |
+ pagination |
+ policy.PageResponse |
|
|
@@ -13310,7 +13994,7 @@ DeleteObligationRequest
- DeleteObligationResponse
+ UpdateProviderConfigRequest
@@ -13321,8 +14005,44 @@ DeleteObligationResponse
- | obligation |
- policy.Obligation |
+ id |
+ string |
+ |
+ Required |
+
+
+
+ | name |
+ string |
+ |
+ Optional |
+
+
+
+ | config_json |
+ bytes |
+ |
+ Optional |
+
+
+
+ | manager |
+ string |
+ |
+ Optional |
+
+
+
+ | metadata |
+ common.MetadataMutable |
+ |
+ Optional
+Common metadata |
+
+
+
+ | metadata_update_behavior |
+ common.MetadataUpdateEnum |
|
|
@@ -13334,7 +14054,7 @@ DeleteObligationResponseDeleteObligationValueRequest
+ UpdateProviderConfigResponse
@@ -13345,15 +14065,8 @@ DeleteObligationValueRe
- | id |
- string |
- |
- |
-
-
-
- | fqn |
- string |
+ provider_config |
+ policy.KeyProviderConfig |
|
|
@@ -13365,32 +14078,70 @@ DeleteObligationValueRe
- DeleteObligationValueResponse
-
-
-
-
-
-
-
- GetObligationRequest
-
+
+
+
+
+ KeyManagementService
+
+
+
+
+
+
+
+ policy/namespaces/namespaces.protoTop
+
+
+
+
+ AssignKeyAccessServerToNamespaceRequest
+ Deprecated: utilize AssignPublicKeyToNamespaceRequest
@@ -13400,15 +14151,8 @@ GetObligationRequest
- | id |
- string |
- |
- |
-
-
-
- | fqn |
- string |
+ namespace_key_access_server |
+ NamespaceKeyAccessServer |
|
|
@@ -13420,7 +14164,7 @@ GetObligationRequest
- GetObligationResponse
+ AssignKeyAccessServerToNamespaceResponse
@@ -13431,8 +14175,8 @@ GetObligationResponse
- | obligation |
- policy.Obligation |
+ namespace_key_access_server |
+ NamespaceKeyAccessServer |
|
|
@@ -13444,8 +14188,8 @@ GetObligationResponse
- GetObligationTriggerRequest
- Triggers
+ AssignPublicKeyToNamespaceRequest
+ Assign Key to Namespace
@@ -13455,10 +14199,10 @@ GetObligationTriggerRequ
- | id |
- string |
+ namespace_key |
+ NamespaceKey |
|
- Required |
+ |
@@ -13468,7 +14212,7 @@ GetObligationTriggerRequ
- GetObligationTriggerResponse
+ AssignPublicKeyToNamespaceResponse
@@ -13479,8 +14223,8 @@ GetObligationTriggerRes
- | trigger |
- policy.ObligationTrigger |
+ namespace_key |
+ NamespaceKey |
|
|
@@ -13492,8 +14236,8 @@ GetObligationTriggerRes
- GetObligationValueRequest
- Values
+ CreateNamespaceRequest
+
@@ -13503,17 +14247,17 @@ GetObligationValueRequest<
- | id |
+ name |
string |
|
- |
+ Required |
- | fqn |
- string |
+ metadata |
+ common.MetadataMutable |
|
- |
+ Optional |
@@ -13523,7 +14267,7 @@ GetObligationValueRequest<
- GetObligationValueResponse
+ CreateNamespaceResponse
@@ -13534,8 +14278,8 @@ GetObligationValueRespons
- | value |
- policy.ObligationValue |
+ namespace |
+ policy.Namespace |
|
|
@@ -13547,7 +14291,7 @@ GetObligationValueRespons
- GetObligationValuesByFQNsRequest
+ DeactivateNamespaceRequest
@@ -13558,10 +14302,10 @@ GetObligationValues
- | fqns |
+ id |
string |
- repeated |
- |
+ |
+ Required |
@@ -13571,31 +14315,14 @@ GetObligationValues
- GetObligationValuesByFQNsResponse
+ DeactivateNamespaceResponse
-
-
-
- GetObligationValuesByFQNsResponse.FqnValueMapEntry
+ GetNamespaceRequest
@@ -13606,40 +14333,23 @@ G
- | key |
+ id |
string |
|
- |
+ Deprecated. Deprecated |
- | value |
- policy.ObligationValue |
+ namespace_id |
+ string |
|
- |
+ option (buf.validate.oneof).required = true; // TODO: enable this when we remove the deprecated field |
-
-
-
-
-
-
-
- GetObligationsByFQNsRequest
-
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | fqns |
+ fqn |
string |
- repeated |
+ |
|
@@ -13647,34 +14357,31 @@ GetObligationsByFQNsRequ
-
-
-
- GetObligationsByFQNsResponse
-
-
-
-
-
- | Field | Type | Label | Description |
-
-
+
+
+ Fields with deprecated option
+
-
+
+
+
- GetObligationsByFQNsResponse.FqnObligationMapEntry
+ GetNamespaceResponse
@@ -13685,15 +14392,8 @@ G
- | key |
- string |
- |
- |
-
-
-
- | value |
- policy.Obligation |
+ namespace |
+ policy.Namespace |
|
|
@@ -13705,7 +14405,7 @@ G
- ListObligationTriggersRequest
+ ListNamespacesRequest
@@ -13716,22 +14416,34 @@ ListObligationTriggers
- | namespace_id |
- string |
+ state |
+ common.ActiveStateEnum |
|
- |
+ Optional
+ACTIVE by default when not specified |
- | namespace_fqn |
- string |
+ pagination |
+ policy.PageRequest |
|
- |
+ Optional |
- | pagination |
- policy.PageRequest |
+ sort |
+ NamespacesSort |
+ repeated |
+ Optional - CONSTRAINT: max 1 item
+Sort defaults:
+ - direction UNSPECIFIED defaults to DESC for the specified field
+ - field UNSPECIFIED defaults to created_at with the specified direction
+ - both UNSPECIFIED or sort omitted defaults to created_at DESC |
+
+
+
+ | search |
+ policy.Search |
|
Optional |
@@ -13743,7 +14455,7 @@ ListObligationTriggers
- ListObligationTriggersResponse
+ ListNamespacesResponse
@@ -13754,8 +14466,8 @@ ListObligationTrigger
- | triggers |
- policy.ObligationTrigger |
+ namespaces |
+ policy.Namespace |
repeated |
|
@@ -13774,7 +14486,7 @@ ListObligationTrigger
- ListObligationsRequest
+ NamespaceKey
@@ -13785,42 +14497,17 @@ ListObligationsRequest
- | namespace_id |
- string |
- |
- |
-
-
-
- | namespace_fqn |
+ namespace_id |
string |
|
- |
-
-
-
- | pagination |
- policy.PageRequest |
- |
- Optional |
-
-
-
- | sort |
- ObligationsSort |
- repeated |
- Optional - CONSTRAINT: max 1 item
-Sort defaults:
- - direction UNSPECIFIED defaults to DESC for the specified field
- - field UNSPECIFIED defaults to created_at with the specified direction
- - both UNSPECIFIED or sort omitted defaults to created_at DESC |
+ Required |
- | search |
- policy.Search |
+ key_id |
+ string |
|
- Optional |
+ Required (The id from the Asymmetric Key object) |
@@ -13830,8 +14517,8 @@ ListObligationsRequest
- ListObligationsResponse
-
+ NamespaceKeyAccessServer
+ Deprecated
@@ -13841,17 +14528,17 @@ ListObligationsResponse
- | obligations |
- policy.Obligation |
- repeated |
- |
+ namespace_id |
+ string |
+ |
+ Required |
- | pagination |
- policy.PageResponse |
+ key_access_server_id |
+ string |
|
- |
+ Required |
@@ -13861,7 +14548,7 @@ ListObligationsResponse
- ObligationsSort
+ NamespacesSort
@@ -13873,7 +14560,7 @@ ObligationsSort
| field |
- SortObligationsType |
+ SortNamespacesType |
|
|
@@ -13892,8 +14579,8 @@ ObligationsSort
- RemoveObligationTriggerRequest
-
+ RemoveKeyAccessServerFromNamespaceRequest
+ Deprecated: utilize RemovePublicKeyFromNamespaceRequest
@@ -13903,10 +14590,10 @@ RemoveObligationTrigg
- | id |
- string |
+ namespace_key_access_server |
+ NamespaceKeyAccessServer |
|
- Required |
+ |
@@ -13916,7 +14603,7 @@ RemoveObligationTrigg
- RemoveObligationTriggerResponse
+ RemoveKeyAccessServerFromNamespaceResponse
@@ -13927,8 +14614,8 @@ RemoveObligationTrig
- | trigger |
- policy.ObligationTrigger |
+ namespace_key_access_server |
+ NamespaceKeyAccessServer |
|
|
@@ -13940,7 +14627,7 @@ RemoveObligationTrig
- UpdateObligationRequest
+ RemovePublicKeyFromNamespaceRequest
@@ -13951,29 +14638,8 @@ UpdateObligationRequest
- | id |
- string |
- |
- Required |
-
-
-
- | name |
- string |
- |
- Optional |
-
-
-
- | metadata |
- common.MetadataMutable |
- |
- |
-
-
-
- | metadata_update_behavior |
- common.MetadataUpdateEnum |
+ namespace_key |
+ NamespaceKey |
|
|
@@ -13985,7 +14651,7 @@ UpdateObligationRequest
- UpdateObligationResponse
+ RemovePublicKeyFromNamespaceResponse
@@ -13996,8 +14662,8 @@ UpdateObligationResponse
- | obligation |
- policy.Obligation |
+ namespace_key |
+ NamespaceKey |
|
|
@@ -14009,7 +14675,7 @@ UpdateObligationResponseUpdateObligationValueRequest
+ UpdateNamespaceRequest
@@ -14026,27 +14692,11 @@ UpdateObligationValueRe
Required |
-
- | value |
- string |
- |
- Optional |
-
-
-
- | triggers |
- ValueTriggerRequest |
- repeated |
- Optional
-Obligation Triggers provided here will replace all existing records in the database. |
-
-
| metadata |
common.MetadataMutable |
|
- Optional
-Common metadata |
+ Optional |
@@ -14063,7 +14713,7 @@ UpdateObligationValueRe
- UpdateObligationValueResponse
+ UpdateNamespaceResponse
@@ -14074,8 +14724,8 @@ UpdateObligationValueR
- | value |
- policy.ObligationValue |
+ namespace |
+ policy.Namespace |
|
|
@@ -14087,47 +14737,9 @@ UpdateObligationValueR
- ValueTriggerRequest
-
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | action |
- common.IdNameIdentifier |
- |
- Required. The ID of the action that will trigger this obligation value policy decisioning. |
-
-
-
- | attribute_value |
- common.IdFqnIdentifier |
- |
- Required. The attribute value ID that will trigger this obligation value policy decisioning. |
-
-
-
- | context |
- policy.RequestContext |
- |
- Optional. The request context for this obligation value policy decisioning. |
-
-
-
-
-
-
-
-
-
- SortObligationsType
+ SortNamespacesType
@@ -14136,31 +14748,31 @@ SortObligationsType
- | SORT_OBLIGATIONS_TYPE_UNSPECIFIED |
+ SORT_NAMESPACES_TYPE_UNSPECIFIED |
0 |
|
- | SORT_OBLIGATIONS_TYPE_NAME |
+ SORT_NAMESPACES_TYPE_NAME |
1 |
|
- | SORT_OBLIGATIONS_TYPE_FQN |
+ SORT_NAMESPACES_TYPE_FQN |
2 |
|
- | SORT_OBLIGATIONS_TYPE_CREATED_AT |
+ SORT_NAMESPACES_TYPE_CREATED_AT |
3 |
|
- | SORT_OBLIGATIONS_TYPE_UPDATED_AT |
+ SORT_NAMESPACES_TYPE_UPDATED_AT |
4 |
|
@@ -14172,8 +14784,8 @@ SortObligationsType
- Service
- Obligation Service /
+ NamespaceService
+
| Method Name | Request Type | Response Type | Description |
@@ -14181,107 +14793,67 @@ Service
- | ListObligations |
- ListObligationsRequest |
- ListObligationsResponse |
- |
-
-
-
- | GetObligation |
- GetObligationRequest |
- GetObligationResponse |
- |
-
-
-
- | GetObligationsByFQNs |
- GetObligationsByFQNsRequest |
- GetObligationsByFQNsResponse |
- |
-
-
-
- | CreateObligation |
- CreateObligationRequest |
- CreateObligationResponse |
- |
-
-
-
- | UpdateObligation |
- UpdateObligationRequest |
- UpdateObligationResponse |
- |
-
-
-
- | DeleteObligation |
- DeleteObligationRequest |
- DeleteObligationResponse |
- |
-
-
-
- | GetObligationValue |
- GetObligationValueRequest |
- GetObligationValueResponse |
+ GetNamespace |
+ GetNamespaceRequest |
+ GetNamespaceResponse |
|
- | GetObligationValuesByFQNs |
- GetObligationValuesByFQNsRequest |
- GetObligationValuesByFQNsResponse |
+ ListNamespaces |
+ ListNamespacesRequest |
+ ListNamespacesResponse |
|
- | CreateObligationValue |
- CreateObligationValueRequest |
- CreateObligationValueResponse |
+ CreateNamespace |
+ CreateNamespaceRequest |
+ CreateNamespaceResponse |
|
- | UpdateObligationValue |
- UpdateObligationValueRequest |
- UpdateObligationValueResponse |
+ UpdateNamespace |
+ UpdateNamespaceRequest |
+ UpdateNamespaceResponse |
|
- | DeleteObligationValue |
- DeleteObligationValueRequest |
- DeleteObligationValueResponse |
+ DeactivateNamespace |
+ DeactivateNamespaceRequest |
+ DeactivateNamespaceResponse |
|
- | GetObligationTrigger |
- GetObligationTriggerRequest |
- GetObligationTriggerResponse |
- |
+ AssignKeyAccessServerToNamespace |
+ AssignKeyAccessServerToNamespaceRequest |
+ AssignKeyAccessServerToNamespaceResponse |
+ Deprecated: utilize AssignPublicKeyToNamespace |
- | AddObligationTrigger |
- AddObligationTriggerRequest |
- AddObligationTriggerResponse |
- |
+ RemoveKeyAccessServerFromNamespace |
+ RemoveKeyAccessServerFromNamespaceRequest |
+ RemoveKeyAccessServerFromNamespaceResponse |
+ Deprecated: utilize RemovePublicKeyFromNamespace |
- | RemoveObligationTrigger |
- RemoveObligationTriggerRequest |
- RemoveObligationTriggerResponse |
- |
+ AssignPublicKeyToNamespace |
+ AssignPublicKeyToNamespaceRequest |
+ AssignPublicKeyToNamespaceResponse |
+ --------------------------------------*
+Namespace <> Key RPCs
+--------------------------------------- |
- | ListObligationTriggers |
- ListObligationTriggersRequest |
- ListObligationTriggersResponse |
+ RemovePublicKeyFromNamespace |
+ RemovePublicKeyFromNamespaceRequest |
+ RemovePublicKeyFromNamespaceResponse |
|
@@ -14291,7 +14863,7 @@ Service
- Methods with idempotency_level option
+ Methods with deprecated option
@@ -14302,37 +14874,38 @@ Methods with idempotency_level option
- | ListObligations |
- NO_SIDE_EFFECTS |
-
-
-
- | GetObligation |
- NO_SIDE_EFFECTS |
-
-
-
- | GetObligationsByFQNs |
- NO_SIDE_EFFECTS |
+ AssignKeyAccessServerToNamespace |
+ true |
- | GetObligationValue |
- NO_SIDE_EFFECTS |
+ RemoveKeyAccessServerFromNamespace |
+ true |
+
+
+
+
+
+
+ Methods with idempotency_level option
+
+
- | GetObligationValuesByFQNs |
- NO_SIDE_EFFECTS |
+ Method Name |
+ Option |
+
+
- | GetObligationTrigger |
+ GetNamespace |
NO_SIDE_EFFECTS |
- | ListObligationTriggers |
+ ListNamespaces |
NO_SIDE_EFFECTS |
@@ -14343,12 +14916,66 @@ Methods with idempotency_level option
- policy/registeredresources/registered_resources.protoTop
+ policy/obligations/obligations.protoTop
- ActionAttributeValue
+ AddObligationTriggerRequest
+ Obligation Triggers are owned by the namespace that owns the action and attribute value, which must be the same. In this way, a trigger can intentionally cross namespace boundaries: associating obligation values of a different namespace than the one that owns the action being taken or the attribute value.
+
+
+
+
+
+
+
+
+ AddObligationTriggerResponse
@@ -14359,29 +14986,85 @@ ActionAttributeValue
- | action_id |
+ trigger |
+ policy.ObligationTrigger |
+ |
+ |
+
+
+
+
+
+
+
+
+
+ CreateObligationRequest
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | namespace_id |
string |
|
|
- | action_name |
+ namespace_fqn |
string |
|
|
- | attribute_value_id |
+ name |
string |
|
|
- | attribute_value_fqn |
+ values |
string |
+ repeated |
+ Optional |
+
+
+
+ | metadata |
+ common.MetadataMutable |
+ |
+ Optional
+Common metadata |
+
+
+
+
+
+
+
+
+
+ CreateObligationResponse
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | obligation |
+ policy.Obligation |
|
|
@@ -14393,7 +15076,7 @@ ActionAttributeValueCreateRegisteredResourceRequest
+ CreateObligationValueRequest
@@ -14404,43 +15087,97 @@ CreateRegist
- | name |
+ obligation_id |
string |
|
- Required |
+ |
- | values |
+ obligation_fqn |
+ string |
+ |
+ |
+
+
+
+ | value |
string |
+ |
+ |
+
+
+
+ | triggers |
+ ValueTriggerRequest |
repeated |
Optional
-Registered Resource Values (when provided) must be alphanumeric strings, allowing hyphens and underscores but not as the first or last character.
-The stored value will be normalized to lower case. |
+Combination of action and attribute_value that will trigger this obligation value policy decisioning.
+
+
+
+ | metadata |
+ common.MetadataMutable |
+ |
+ Optional
+Common metadata |
+
+
+
+
+
+
+
+
+
+ CreateObligationValueResponse
+
+
+
+
+
+
+
+
+
+ DeleteObligationRequest
+
+
+
+
@@ -14448,7 +15185,7 @@ CreateRegist
- CreateRegisteredResourceResponse
+ DeleteObligationResponse
@@ -14459,8 +15196,8 @@ CreateRegis
- | resource |
- policy.RegisteredResource |
+ obligation |
+ policy.Obligation |
|
|
@@ -14472,7 +15209,7 @@ CreateRegis
- CreateRegisteredResourceValueRequest
+ DeleteObligationValueRequest
@@ -14483,34 +15220,17 @@ CreateR
- | resource_id |
+ id |
string |
|
- Required |
+ |
- | value |
+ fqn |
string |
|
- Required |
-
-
-
- | action_attribute_values |
- ActionAttributeValue |
- repeated |
- Optional
-The associated Action <> AttributeValue combinations to be utilized in authorization/entitlement decisioning
-(i.e. action read -> attribute value https://example.com/attr/department/value/marketing) |
-
-
-
- | metadata |
- common.MetadataMutable |
- |
- Optional
-Common metadata |
+ |
@@ -14520,7 +15240,7 @@ CreateR
- CreateRegisteredResourceValueResponse
+ DeleteObligationValueResponse
@@ -14532,7 +15252,7 @@ Create
| value |
- policy.RegisteredResourceValue |
+ policy.ObligationValue |
|
|
@@ -14544,7 +15264,7 @@ Create
- DeleteRegisteredResourceRequest
+ GetObligationRequest
@@ -14558,7 +15278,14 @@ DeleteRegist
| id |
string |
|
- Required |
+ |
+
+
+
+ | fqn |
+ string |
+ |
+ |
@@ -14568,7 +15295,7 @@ DeleteRegist
- DeleteRegisteredResourceResponse
+ GetObligationResponse
@@ -14579,8 +15306,8 @@ DeleteRegis
- | resource |
- policy.RegisteredResource |
+ obligation |
+ policy.Obligation |
|
|
@@ -14592,8 +15319,8 @@ DeleteRegis
- DeleteRegisteredResourceValueRequest
-
+ GetObligationTriggerRequest
+ Triggers
@@ -14616,7 +15343,7 @@ DeleteR
- DeleteRegisteredResourceValueResponse
+ GetObligationTriggerResponse
@@ -14627,8 +15354,8 @@ Delete
- | value |
- policy.RegisteredResourceValue |
+ trigger |
+ policy.ObligationTrigger |
|
|
@@ -14640,8 +15367,8 @@ Delete
- GetRegisteredResourceRequest
-
+ GetObligationValueRequest
+ Values
@@ -14658,21 +15385,7 @@ GetRegisteredRe
- | name |
- string |
- |
- |
-
-
-
- | namespace_fqn |
- string |
- |
- |
-
-
-
- | namespace_id |
+ fqn |
string |
|
|
@@ -14685,7 +15398,7 @@ GetRegisteredRe
- GetRegisteredResourceResponse
+ GetObligationValueResponse
@@ -14696,8 +15409,8 @@ GetRegisteredR
- | resource |
- policy.RegisteredResource |
+ value |
+ policy.ObligationValue |
|
|
@@ -14709,7 +15422,7 @@ GetRegisteredR
- GetRegisteredResourceValueRequest
+ GetObligationValuesByFQNsRequest
@@ -14720,16 +15433,33 @@ GetRegiste
- | id |
+ fqns |
string |
- |
+ repeated |
|
+
+
+
+
+
+
+
+ GetObligationValuesByFQNsResponse
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
- | fqn |
- string |
- |
+ fqn_value_map |
+ GetObligationValuesByFQNsResponse.FqnValueMapEntry |
+ repeated |
|
@@ -14740,7 +15470,7 @@ GetRegiste
- GetRegisteredResourceValueResponse
+ GetObligationValuesByFQNsResponse.FqnValueMapEntry
@@ -14750,9 +15480,16 @@ GetRegist
+
+ | key |
+ string |
+ |
+ |
+
+
| value |
- policy.RegisteredResourceValue |
+ policy.ObligationValue |
|
|
@@ -14764,7 +15501,7 @@ GetRegist
- GetRegisteredResourceValuesByFQNsRequest
+ GetObligationsByFQNsRequest
@@ -14778,7 +15515,7 @@ Get
| fqns |
string |
repeated |
- Required |
+ |
@@ -14788,7 +15525,7 @@ Get
- GetRegisteredResourceValuesByFQNsResponse
+ GetObligationsByFQNsResponse
@@ -14799,8 +15536,8 @@ Ge
- | fqn_value_map |
- GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry |
+ fqn_obligation_map |
+ GetObligationsByFQNsResponse.FqnObligationMapEntry |
repeated |
|
@@ -14812,7 +15549,7 @@ Ge
- GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry
+ GetObligationsByFQNsResponse.FqnObligationMapEntry
@@ -14831,7 +15568,7 @@ policy.RegisteredResourceValue
+ | policy.Obligation |
|
|
@@ -14843,7 +15580,7 @@ ListRegisteredResourceValuesRequest
+ ListObligationTriggersRequest
@@ -14854,10 +15591,17 @@ ListRegi
- | resource_id |
+ namespace_id |
string |
|
- Optional |
+ |
+
+
+
+ | namespace_fqn |
+ string |
+ |
+ |
@@ -14874,7 +15618,7 @@ ListRegi
- ListRegisteredResourceValuesResponse
+ ListObligationTriggersResponse
@@ -14885,8 +15629,8 @@ ListReg
- | values |
- policy.RegisteredResourceValue |
+ triggers |
+ policy.ObligationTrigger |
repeated |
|
@@ -14905,7 +15649,7 @@ ListReg
- ListRegisteredResourcesRequest
+ ListObligationsRequest
@@ -14938,7 +15682,7 @@ ListRegistere
| sort |
- RegisteredResourcesSort |
+ ObligationsSort |
repeated |
Optional - CONSTRAINT: max 1 item
Sort defaults:
@@ -14961,7 +15705,7 @@ ListRegistere
- ListRegisteredResourcesResponse
+ ListObligationsResponse
@@ -14972,8 +15716,8 @@ ListRegister
- | resources |
- policy.RegisteredResource |
+ obligations |
+ policy.Obligation |
repeated |
|
@@ -14992,7 +15736,7 @@ ListRegister
- RegisteredResourcesSort
+ ObligationsSort
@@ -15004,7 +15748,7 @@ RegisteredResourcesS
| field |
- SortRegisteredResourcesType |
+ SortObligationsType |
|
|
@@ -15023,7 +15767,55 @@ RegisteredResourcesS
- UpdateRegisteredResourceRequest
+ RemoveObligationTriggerRequest
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ Required |
+
+
+
+
+
+
+
+
+
+ RemoveObligationTriggerResponse
+
+
+
+
+
+
+
+
+
+ UpdateObligationRequest
@@ -15051,8 +15843,7 @@ UpdateRegist
| metadata |
common.MetadataMutable |
|
- Optional
-Common metadata |
+ |
@@ -15069,7 +15860,7 @@ UpdateRegist
- UpdateRegisteredResourceResponse
+ UpdateObligationResponse
@@ -15080,8 +15871,8 @@ UpdateRegis
- | resource |
- policy.RegisteredResource |
+ obligation |
+ policy.Obligation |
|
|
@@ -15093,7 +15884,7 @@ UpdateRegis
- UpdateRegisteredResourceValueRequest
+ UpdateObligationValueRequest
@@ -15118,11 +15909,11 @@ UpdateR
- | action_attribute_values |
- ActionAttributeValue |
+ triggers |
+ ValueTriggerRequest |
repeated |
Optional
-Action Attribute Values provided here will replace all existing records in the database. To delete all action attribute values, set this field to an empty list. |
+Obligation Triggers provided here will replace all existing records in the database.
@@ -15147,7 +15938,7 @@ UpdateR
- UpdateRegisteredResourceValueResponse
+ UpdateObligationValueResponse
@@ -15159,7 +15950,7 @@
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | action |
+ common.IdNameIdentifier |
+ |
+ Required. The ID of the action that will trigger this obligation value policy decisioning. |
+
+
+
+ | attribute_value |
+ common.IdFqnIdentifier |
+ |
+ Required. The attribute value ID that will trigger this obligation value policy decisioning. |
+
+
+
+ | context |
+ policy.RequestContext |
+ |
+ Optional. The request context for this obligation value policy decisioning. |
+
+
+
+
+
+
+
+
+
- SortRegisteredResourcesType
+ SortObligationsType
@@ -15182,29 +16011,35 @@ SortRegisteredRe
- | SORT_REGISTERED_RESOURCES_TYPE_UNSPECIFIED |
+ SORT_OBLIGATIONS_TYPE_UNSPECIFIED |
0 |
|
- | SORT_REGISTERED_RESOURCES_TYPE_NAME |
+ SORT_OBLIGATIONS_TYPE_NAME |
1 |
|
- | SORT_REGISTERED_RESOURCES_TYPE_CREATED_AT |
+ SORT_OBLIGATIONS_TYPE_FQN |
2 |
|
- | SORT_REGISTERED_RESOURCES_TYPE_UPDATED_AT |
+ SORT_OBLIGATIONS_TYPE_CREATED_AT |
3 |
|
+
+ | SORT_OBLIGATIONS_TYPE_UPDATED_AT |
+ 4 |
+ |
+
+
@@ -15212,8 +16047,8 @@ SortRegisteredRe
- RegisteredResourcesService
- Registered Resources
+ Service
+ Obligation Service /
-
-
-
-
- policy/resourcemapping/resource_mapping.protoTop
-
-
+
+
+
+ Methods with idempotency_level option
+
+
+
+ | Method Name |
+ Option |
+
+
+
+
+
+ | ListObligations |
+ NO_SIDE_EFFECTS |
+
+
+
+ | GetObligation |
+ NO_SIDE_EFFECTS |
+
+
+
+ | GetObligationsByFQNs |
+ NO_SIDE_EFFECTS |
+
+
+
+ | GetObligationValue |
+ NO_SIDE_EFFECTS |
+
+
+
+ | GetObligationValuesByFQNs |
+ NO_SIDE_EFFECTS |
+
+
+
+ | GetObligationTrigger |
+ NO_SIDE_EFFECTS |
+
+
+
+ | ListObligationTriggers |
+ NO_SIDE_EFFECTS |
+
+
+
+
+
+
+
+
+
+ policy/registeredresources/registered_resources.protoTop
+
+
+
+
+ ActionAttributeValue
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | action_id |
+ string |
+ |
+ |
+
+
+
+ | action_name |
+ string |
+ |
+ |
+
+
+
+ | attribute_value_id |
+ string |
+ |
+ |
+
+
+
+ | attribute_value_fqn |
+ string |
+ |
+ |
+
+
+
+
+
+
+
- CreateResourceMappingGroupRequest
+ CreateRegisteredResourceRequest
@@ -15320,31 +16279,41 @@ CreateResource
- | namespace_id |
+ name |
string |
|
- |
+ Required |
- | namespace_fqn |
+ values |
+ string |
+ repeated |
+ Optional
+Registered Resource Values (when provided) must be alphanumeric strings, allowing hyphens and underscores but not as the first or last character.
+The stored value will be normalized to lower case. |
+
+
+
+ | namespace_id |
string |
|
|
- | name |
+ namespace_fqn |
string |
|
- Required |
+ |
| metadata |
common.MetadataMutable |
|
- Common metadata |
+ Optional
+Common metadata |
@@ -15354,7 +16323,7 @@ CreateResource
- CreateResourceMappingGroupResponse
+ CreateRegisteredResourceResponse
@@ -15365,8 +16334,8 @@ CreateResourc
- | resource_mapping_group |
- policy.ResourceMappingGroup |
+ resource |
+ policy.RegisteredResource |
|
|
@@ -15378,7 +16347,7 @@ CreateResourc
- CreateResourceMappingRequest
+ CreateRegisteredResourceValueRequest
@@ -15389,48 +16358,34 @@ CreateResourceMappi
- | attribute_value_id |
+ resource_id |
string |
|
Required |
- | terms |
- string |
- repeated |
- Required |
-
-
-
- | group_id |
- string |
- |
- Optional |
-
-
-
- | namespace_id |
+ value |
string |
|
- Optional
-The namespace that owns this resource mapping. If a group_id is provided,
-this must match the group's namespace (and may be omitted to inherit it). |
+ Required |
- | namespace_fqn |
- string |
- |
+ action_attribute_values |
+ ActionAttributeValue |
+ repeated |
Optional
-Alternative to namespace_id; the FQN of the owning namespace. |
+The associated Action <> AttributeValue combinations to be utilized in authorization/entitlement decisioning
+(i.e. action read -> attribute value https://example.com/attr/department/value/marketing)
| metadata |
common.MetadataMutable |
|
- Optional |
+ Optional
+Common metadata |
@@ -15440,7 +16395,7 @@ CreateResourceMappi
- CreateResourceMappingResponse
+ CreateRegisteredResourceValueResponse
@@ -15451,8 +16406,8 @@ CreateResourceMapp
- | resource_mapping |
- policy.ResourceMapping |
+ value |
+ policy.RegisteredResourceValue |
|
|
@@ -15464,7 +16419,7 @@ CreateResourceMapp
- DeleteResourceMappingGroupRequest
+ DeleteRegisteredResourceRequest
@@ -15488,7 +16443,7 @@ DeleteResource
- DeleteResourceMappingGroupResponse
+ DeleteRegisteredResourceResponse
@@ -15499,8 +16454,8 @@ DeleteResourc
- | resource_mapping_group |
- policy.ResourceMappingGroup |
+ resource |
+ policy.RegisteredResource |
|
|
@@ -15512,7 +16467,7 @@ DeleteResourc
- DeleteResourceMappingRequest
+ DeleteRegisteredResourceValueRequest
@@ -15536,7 +16491,7 @@ DeleteResourceMappi
- DeleteResourceMappingResponse
+ DeleteRegisteredResourceValueResponse
@@ -15547,8 +16502,8 @@ DeleteResourceMapp
- | resource_mapping |
- policy.ResourceMapping |
+ value |
+ policy.RegisteredResourceValue |
|
|
@@ -15560,7 +16515,7 @@ DeleteResourceMapp
- GetResourceMappingGroupRequest
+ GetRegisteredResourceRequest
@@ -15574,7 +16529,28 @@ GetResourceMappin
| id |
string |
|
- Required |
+ |
+
+
+
+ | name |
+ string |
+ |
+ |
+
+
+
+ | namespace_fqn |
+ string |
+ |
+ |
+
+
+
+ | namespace_id |
+ string |
+ |
+ |
@@ -15584,7 +16560,7 @@ GetResourceMappin
- GetResourceMappingGroupResponse
+ GetRegisteredResourceResponse
@@ -15595,8 +16571,8 @@ GetResourceMappi
- | resource_mapping_group |
- policy.ResourceMappingGroup |
+ resource |
+ policy.RegisteredResource |
|
|
@@ -15608,7 +16584,7 @@ GetResourceMappi
- GetResourceMappingRequest
+ GetRegisteredResourceValueRequest
@@ -15622,7 +16598,14 @@ GetResourceMappingRequ
| id |
string |
|
- Required |
+ |
+
+
+
+ | fqn |
+ string |
+ |
+ |
@@ -15632,7 +16615,7 @@ GetResourceMappingRequ
- GetResourceMappingResponse
+ GetRegisteredResourceValueResponse
@@ -15643,8 +16626,8 @@ GetResourceMappingRes
- | resource_mapping |
- policy.ResourceMapping |
+ value |
+ policy.RegisteredResourceValue |
|
|
@@ -15656,7 +16639,7 @@ GetResourceMappingRes
- ListResourceMappingGroupsRequest
+ GetRegisteredResourceValuesByFQNsRequest
@@ -15667,24 +16650,10 @@ ListResourceMap
- | namespace_id |
- string |
- |
- Optional |
-
-
-
- | namespace_fqn |
+ fqns |
string |
- |
- Optional |
-
-
-
- | pagination |
- policy.PageRequest |
- |
- Optional |
+ repeated |
+ Required |
@@ -15694,7 +16663,7 @@ ListResourceMap
- ListResourceMappingGroupsResponse
+ GetRegisteredResourceValuesByFQNsResponse
@@ -15705,19 +16674,12 @@ ListResourceMa
- | resource_mapping_groups |
- policy.ResourceMappingGroup |
+ fqn_value_map |
+ GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry |
repeated |
|
-
- | pagination |
- policy.PageResponse |
- |
- |
-
-
|
@@ -15725,7 +16687,7 @@ ListResourceMa
- ListResourceMappingsByGroupFqnsRequest
+ GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry
@@ -15736,11 +16698,17 @@ ListResou
- | fqns |
+ key |
string |
- repeated |
- Required
-Structure of the RM Group FQN is 'https://<namespace>/resm/<group name>' |
+ |
+ |
+
+
+
+ | value |
+ policy.RegisteredResourceValue |
+ |
+ |
@@ -15750,7 +16718,7 @@ ListResou
- ListResourceMappingsByGroupFqnsResponse
+ ListRegisteredResourceValuesRequest
@@ -15761,10 +16729,17 @@ ListReso
- | fqn_resource_mapping_groups |
- ListResourceMappingsByGroupFqnsResponse.FqnResourceMappingGroupsEntry |
- repeated |
- |
+ resource_id |
+ string |
+ |
+ Optional |
+
+
+
+ | pagination |
+ policy.PageRequest |
+ |
+ Optional |
@@ -15774,7 +16749,7 @@ ListReso
- ListResourceMappingsByGroupFqnsResponse.FqnResourceMappingGroupsEntry
+ ListRegisteredResourceValuesResponse
@@ -15785,15 +16760,15 @@ string
- |
+ values |
+ policy.RegisteredResourceValue |
+ repeated |
|
- | value |
- ResourceMappingsByGroup |
+ pagination |
+ policy.PageResponse |
|
|
@@ -15805,7 +16780,7 @@ ListResourceMappingsRequest
+ ListRegisteredResourcesRequest
@@ -15816,31 +16791,40 @@ ListResourceMappings
- | group_id |
+ namespace_id |
string |
|
- Optional |
+ |
- | namespace_id |
+ namespace_fqn |
string |
|
- Optional
-Filter the list to resource mappings owned by this namespace. |
+ |
- | namespace_fqn |
- string |
+ pagination |
+ policy.PageRequest |
|
- Optional
-Filter the list to resource mappings owned by this namespace. |
+ Optional |
+
+
+
+ | sort |
+ RegisteredResourcesSort |
+ repeated |
+ Optional - CONSTRAINT: max 1 item
+Sort defaults:
+ - direction UNSPECIFIED defaults to DESC for the specified field
+ - field UNSPECIFIED defaults to created_at with the specified direction
+ - both UNSPECIFIED or sort omitted defaults to created_at DESC |
- | pagination |
- policy.PageRequest |
+ search |
+ policy.Search |
|
Optional |
@@ -15852,7 +16836,7 @@ ListResourceMappings
- ListResourceMappingsResponse
+ ListRegisteredResourcesResponse
@@ -15863,8 +16847,8 @@ ListResourceMapping
- | resource_mappings |
- policy.ResourceMapping |
+ resources |
+ policy.RegisteredResource |
repeated |
|
@@ -15883,7 +16867,7 @@ ListResourceMapping
- ResourceMappingsByGroup
+ RegisteredResourcesSort
@@ -15894,16 +16878,16 @@ ResourceMappingsByGroup<
- | group |
- policy.ResourceMappingGroup |
+ field |
+ SortRegisteredResourcesType |
|
|
- | mappings |
- policy.ResourceMapping |
- repeated |
+ direction |
+ policy.SortDirection |
+ |
|
@@ -15914,7 +16898,7 @@ ResourceMappingsByGroup<
- UpdateResourceMappingGroupRequest
+ UpdateRegisteredResourceRequest
@@ -15931,20 +16915,6 @@ UpdateResource
Required |
-
- | namespace_id |
- string |
- |
- Optional |
-
-
-
- | namespace_fqn |
- string |
- |
- Optional |
-
-
| name |
string |
@@ -15956,7 +16926,8 @@ UpdateResource
| metadata |
common.MetadataMutable |
|
- Common metadata |
+ Optional
+Common metadata |
@@ -15973,7 +16944,7 @@ UpdateResource
- UpdateResourceMappingGroupResponse
+ UpdateRegisteredResourceResponse
@@ -15984,8 +16955,8 @@ UpdateResourc
- | resource_mapping_group |
- policy.ResourceMappingGroup |
+ resource |
+ policy.RegisteredResource |
|
|
@@ -15997,7 +16968,7 @@ UpdateResourc
- UpdateResourceMappingRequest
+ UpdateRegisteredResourceValueRequest
@@ -16015,41 +16986,18 @@ UpdateResourceMappi
- | attribute_value_id |
+ value |
string |
|
Optional |
- | terms |
- string |
+ action_attribute_values |
+ ActionAttributeValue |
repeated |
- Optional |
-
-
-
- | group_id |
- string |
- |
- Optional |
-
-
-
- | namespace_id |
- string |
- |
- Optional
-The namespace that owns this resource mapping. If a group_id is set on the
-mapping, this must match the group's namespace. |
-
-
-
- | namespace_fqn |
- string |
- |
Optional
-Alternative to namespace_id; the FQN of the owning namespace. |
+Action Attribute Values provided here will replace all existing records in the database. To delete all action attribute values, set this field to an empty list.
@@ -16057,7 +17005,7 @@ UpdateResourceMappi
| common.MetadataMutable |
|
Optional
-Common Metadata |
+Common metadata
@@ -16074,7 +17022,7 @@ UpdateResourceMappi
- UpdateResourceMappingResponse
+ UpdateRegisteredResourceValueResponse
@@ -16085,8 +17033,8 @@ UpdateResourceMapp
- | resource_mapping |
- policy.ResourceMapping |
+ value |
+ policy.RegisteredResourceValue |
|
|
@@ -16100,149 +17048,143 @@ UpdateResourceMapp
-
-
-
-
- ResourceMappingService
- Resource Mapping Groups
+ SortRegisteredResourcesType
+
+
+
+
+
+
+ RegisteredResourcesService
+ Registered Resources
+
-
-
-
-
- Methods with idempotency_level option
-
-
+
+
+
- policy/subjectmapping/subject_mapping.protoTop
+ policy/resourcemapping/resource_mapping.protoTop
- CreateSubjectConditionSetRequest
+ CreateResourceMappingGroupRequest
@@ -16253,24 +17195,31 @@ CreateSubjectCon
- | subject_condition_set |
- SubjectConditionSetCreate |
+ namespace_id |
+ string |
|
|
- | namespace_id |
+ namespace_fqn |
string |
|
|
- | namespace_fqn |
+ name |
string |
|
- |
+ Required |
+
+
+
+ | metadata |
+ common.MetadataMutable |
+ |
+ Common metadata |
@@ -16280,7 +17229,7 @@ CreateSubjectCon
- CreateSubjectConditionSetResponse
+ CreateResourceMappingGroupResponse
@@ -16291,8 +17240,8 @@ CreateSubjectCo
- | subject_condition_set |
- policy.SubjectConditionSet |
+ resource_mapping_group |
+ policy.ResourceMappingGroup |
|
|
@@ -16304,7 +17253,7 @@ CreateSubjectCo
- CreateSubjectMappingRequest
+ CreateResourceMappingRequest
@@ -16318,31 +17267,21 @@ CreateSubjectMappingR
| attribute_value_id |
string |
|
- Required
-Attribute Value to be mapped to |
+ Required |
- | actions |
- policy.Action |
+ terms |
+ string |
repeated |
- Required
-The actions permitted by subjects in this mapping |
+ Required |
- | existing_subject_condition_set_id |
+ group_id |
string |
|
- Either of the following:
-Reuse existing SubjectConditionSet (NOTE: prioritized over new_subject_condition_set) |
-
-
-
- | new_subject_condition_set |
- SubjectConditionSetCreate |
- |
- Create new SubjectConditionSet (NOTE: ignored if existing_subject_condition_set_id is provided) |
+ Optional |
@@ -16350,14 +17289,16 @@ CreateSubjectMappingR
| string |
|
Optional
-Namespace ID or FQN for the subject mapping |
+The namespace that owns this resource mapping. If a group_id is provided,
+this must match the group's namespace (and may be omitted to inherit it).
| namespace_fqn |
string |
|
- |
+ Optional
+Alternative to namespace_id; the FQN of the owning namespace. |
@@ -16374,7 +17315,7 @@ CreateSubjectMappingR
- CreateSubjectMappingResponse
+ CreateResourceMappingResponse
@@ -16385,8 +17326,8 @@ CreateSubjectMapping
- | subject_mapping |
- policy.SubjectMapping |
+ resource_mapping |
+ policy.ResourceMapping |
|
|
@@ -16398,38 +17339,7 @@ CreateSubjectMapping
- DeleteAllUnmappedSubjectConditionSetsRequest
- Prune any Subject Condition Sets not utilized within a Subject Mapping
-
-
-
-
-
- DeleteAllUnmappedSubjectConditionSetsResponse
-
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | subject_condition_sets |
- policy.SubjectConditionSet |
- repeated |
- Only IDs of any deleted Subject Condition Set provided |
-
-
-
-
-
-
-
-
-
- DeleteSubjectConditionSetRequest
+ DeleteResourceMappingGroupRequest
@@ -16453,7 +17363,7 @@ DeleteSubjectCon
- DeleteSubjectConditionSetResponse
+ DeleteResourceMappingGroupResponse
@@ -16464,10 +17374,10 @@ DeleteSubjectCo
- | subject_condition_set |
- policy.SubjectConditionSet |
+ resource_mapping_group |
+ policy.ResourceMappingGroup |
|
- Only ID of deleted Subject Condition Set provided |
+ |
@@ -16477,7 +17387,7 @@ DeleteSubjectCo
- DeleteSubjectMappingRequest
+ DeleteResourceMappingRequest
@@ -16501,7 +17411,7 @@ DeleteSubjectMappingR
- DeleteSubjectMappingResponse
+ DeleteResourceMappingResponse
@@ -16512,10 +17422,10 @@ DeleteSubjectMapping
- | subject_mapping |
- policy.SubjectMapping |
+ resource_mapping |
+ policy.ResourceMapping |
|
- Only ID of the updated Subject Mapping provided |
+ |
@@ -16525,7 +17435,7 @@ DeleteSubjectMapping
- GetSubjectConditionSetRequest
+ GetResourceMappingGroupRequest
@@ -16549,7 +17459,7 @@ GetSubjectCondition
- GetSubjectConditionSetResponse
+ GetResourceMappingGroupResponse
@@ -16560,19 +17470,12 @@ GetSubjectConditio
- | subject_condition_set |
- policy.SubjectConditionSet |
+ resource_mapping_group |
+ policy.ResourceMappingGroup |
|
|
-
- | associated_subject_mappings |
- policy.SubjectMapping |
- repeated |
- contextualized Subject Mappings associated with this SubjectConditionSet |
-
-
@@ -16580,7 +17483,7 @@ GetSubjectConditio
- GetSubjectMappingRequest
+ GetResourceMappingRequest
@@ -16604,7 +17507,7 @@ GetSubjectMappingRequest
- GetSubjectMappingResponse
+ GetResourceMappingResponse
@@ -16615,8 +17518,8 @@ GetSubjectMappingRespon
- | subject_mapping |
- policy.SubjectMapping |
+ resource_mapping |
+ policy.ResourceMapping |
|
|
@@ -16628,7 +17531,7 @@ GetSubjectMappingRespon
- ListSubjectConditionSetsRequest
+ ListResourceMappingGroupsRequest
@@ -16642,14 +17545,14 @@ ListSubjectCondit
| namespace_id |
string |
|
- |
+ Optional |
| namespace_fqn |
string |
|
- |
+ Optional |
@@ -16659,24 +17562,6 @@ ListSubjectCondit
Optional |
-
- | sort |
- SubjectConditionSetsSort |
- repeated |
- Optional - CONSTRAINT: max 1 item
-Sort defaults:
- - direction UNSPECIFIED defaults to DESC for the specified field
- - field UNSPECIFIED defaults to created_at with the specified direction
- - both UNSPECIFIED or sort omitted defaults to created_at DESC |
-
-
-
- | search |
- policy.Search |
- |
- Optional |
-
-
@@ -16684,7 +17569,7 @@ ListSubjectCondit
- ListSubjectConditionSetsResponse
+ ListResourceMappingGroupsResponse
@@ -16695,8 +17580,8 @@ ListSubjectCondi
- | subject_condition_sets |
- policy.SubjectConditionSet |
+ resource_mapping_groups |
+ policy.ResourceMappingGroup |
repeated |
|
@@ -16715,7 +17600,7 @@ ListSubjectCondi
- ListSubjectMappingsRequest
+ ListResourceMappingsByGroupFqnsRequest
@@ -16726,42 +17611,11 @@ ListSubjectMappingsReq
- | namespace_id |
- string |
- |
- |
-
-
-
- | namespace_fqn |
+ fqns |
string |
- |
- |
-
-
-
- | pagination |
- policy.PageRequest |
- |
- Optional |
-
-
-
- | sort |
- SubjectMappingsSort |
repeated |
- Optional - CONSTRAINT: max 1 item
-Sort defaults:
- - direction UNSPECIFIED defaults to DESC for the specified field
- - field UNSPECIFIED defaults to created_at with the specified direction
- - both UNSPECIFIED or sort omitted defaults to created_at DESC |
-
-
-
- | search |
- policy.Search |
- |
- Optional |
+ Required
+Structure of the RM Group FQN is 'https://<namespace>/resm/<group name>' |
@@ -16771,7 +17625,7 @@ ListSubjectMappingsReq
- ListSubjectMappingsResponse
+ ListResourceMappingsByGroupFqnsResponse
@@ -16782,19 +17636,12 @@ ListSubjectMappingsRe
- | subject_mappings |
- policy.SubjectMapping |
+ fqn_resource_mapping_groups |
+ ListResourceMappingsByGroupFqnsResponse.FqnResourceMappingGroupsEntry |
repeated |
|
-
- | pagination |
- policy.PageResponse |
- |
- |
-
-
@@ -16802,8 +17649,8 @@ ListSubjectMappingsRe
- MatchSubjectMappingsRequest
- MatchSubjectMappingsRequest liberally returns a list of SubjectMappings based on the provided SubjectProperties. The SubjectMappings are returned if an external selector field matches.
+ ListResourceMappingsByGroupFqnsResponse.FqnResourceMappingGroupsEntry
+
-
-
-
-
-
- MatchSubjectMappingsResponse
-
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | subject_mappings |
- policy.SubjectMapping |
- repeated |
+ value |
+ ResourceMappingsByGroup |
+ |
|
@@ -16850,7 +17680,7 @@ MatchSubjectMappings
- SubjectConditionSetCreate
+ ListResourceMappingsRequest
@@ -16861,18 +17691,33 @@ SubjectConditionSetCrea
- | subject_sets |
- policy.SubjectSet |
- repeated |
- Required |
+ group_id |
+ string |
+ |
+ Optional |
- | metadata |
- common.MetadataMutable |
+ namespace_id |
+ string |
+ |
+ Optional
+Filter the list to resource mappings owned by this namespace. |
+
+
+
+ | namespace_fqn |
+ string |
+ |
+ Optional
+Filter the list to resource mappings owned by this namespace. |
+
+
+
+ | pagination |
+ policy.PageRequest |
|
- Optional
-Common metadata |
+ Optional |
@@ -16882,7 +17727,7 @@ SubjectConditionSetCrea
- SubjectConditionSetsSort
+ ListResourceMappingsResponse
@@ -16893,15 +17738,15 @@ SubjectConditionSetsSort
- | field |
- SortSubjectConditionSetsType |
- |
+ resource_mappings |
+ policy.ResourceMapping |
+ repeated |
|
- | direction |
- policy.SortDirection |
+ pagination |
+ policy.PageResponse |
|
|
@@ -16913,7 +17758,7 @@ SubjectConditionSetsSort
- SubjectMappingsSort
+ ResourceMappingsByGroup
@@ -16924,16 +17769,16 @@ SubjectMappingsSort
- | field |
- SortSubjectMappingsType |
+ group |
+ policy.ResourceMappingGroup |
|
|
- | direction |
- policy.SortDirection |
- |
+ mappings |
+ policy.ResourceMapping |
+ repeated |
|
@@ -16944,7 +17789,7 @@ SubjectMappingsSort
- UpdateSubjectConditionSetRequest
+ UpdateResourceMappingGroupRequest
@@ -16962,11 +17807,24 @@ UpdateSubjectCon
- | subject_sets |
- policy.SubjectSet |
- repeated |
- Optional
-If provided, replaces entire existing structure of Subject Sets, Condition Groups, & Conditions |
+ namespace_id |
+ string |
+ |
+ Optional |
+
+
+
+ | namespace_fqn |
+ string |
+ |
+ Optional |
+
+
+
+ | name |
+ string |
+ |
+ Optional |
@@ -16990,7 +17848,7 @@ UpdateSubjectCon
- UpdateSubjectConditionSetResponse
+ UpdateResourceMappingGroupResponse
@@ -17001,10 +17859,10 @@ UpdateSubjectCo
- | subject_condition_set |
- policy.SubjectConditionSet |
+ resource_mapping_group |
+ policy.ResourceMappingGroup |
|
- Only ID of updated Subject Condition Set provided |
+ |
@@ -17014,7 +17872,7 @@ UpdateSubjectCo
- UpdateSubjectMappingRequest
+ UpdateResourceMappingRequest
@@ -17032,26 +17890,49 @@ UpdateSubjectMappingR
- | subject_condition_set_id |
+ attribute_value_id |
string |
|
- Optional
-Replaces the existing SubjectConditionSet id with a new one |
+ Optional |
- | actions |
- policy.Action |
+ terms |
+ string |
repeated |
+ Optional |
+
+
+
+ | group_id |
+ string |
+ |
+ Optional |
+
+
+
+ | namespace_id |
+ string |
+ |
Optional
-Replaces entire list of actions permitted by subjects |
+The namespace that owns this resource mapping. If a group_id is set on the
+mapping, this must match the group's namespace.
+
+
+
+ | namespace_fqn |
+ string |
+ |
+ Optional
+Alternative to namespace_id; the FQN of the owning namespace. |
| metadata |
common.MetadataMutable |
|
- Common metadata |
+ Optional
+Common Metadata |
@@ -17068,7 +17949,7 @@ UpdateSubjectMappingR
- UpdateSubjectMappingResponse
+ UpdateResourceMappingResponse
@@ -17079,10 +17960,10 @@ UpdateSubjectMapping
- | subject_mapping |
- policy.SubjectMapping |
+ resource_mapping |
+ policy.ResourceMapping |
|
- Only ID of the updated Subject Mapping provided |
+ |
@@ -17094,70 +17975,12 @@ UpdateSubjectMapping
- SortSubjectConditionSetsType
-
-
-
- | Name | Number | Description |
-
-
-
-
- | SORT_SUBJECT_CONDITION_SETS_TYPE_UNSPECIFIED |
- 0 |
- |
-
-
-
- | SORT_SUBJECT_CONDITION_SETS_TYPE_CREATED_AT |
- 1 |
- |
-
-
-
- | SORT_SUBJECT_CONDITION_SETS_TYPE_UPDATED_AT |
- 2 |
- |
-
-
-
-
-
- SortSubjectMappingsType
-
-
-
- | Name | Number | Description |
-
-
-
-
- | SORT_SUBJECT_MAPPINGS_TYPE_UNSPECIFIED |
- 0 |
- |
-
-
-
- | SORT_SUBJECT_MAPPINGS_TYPE_CREATED_AT |
- 1 |
- |
-
-
-
- | SORT_SUBJECT_MAPPINGS_TYPE_UPDATED_AT |
- 2 |
- |
-
-
-
-
-
- SubjectMappingService
-
+ ResourceMappingService
+ Resource Mapping Groups
| Method Name | Request Type | Response Type | Description |
@@ -17165,86 +17988,79 @@ SubjectMappingService
- | MatchSubjectMappings |
- MatchSubjectMappingsRequest |
- MatchSubjectMappingsResponse |
- Find matching Subject Mappings for a given Subject |
-
-
-
- | ListSubjectMappings |
- ListSubjectMappingsRequest |
- ListSubjectMappingsResponse |
+ ListResourceMappingGroups |
+ ListResourceMappingGroupsRequest |
+ ListResourceMappingGroupsResponse |
|
- | GetSubjectMapping |
- GetSubjectMappingRequest |
- GetSubjectMappingResponse |
+ GetResourceMappingGroup |
+ GetResourceMappingGroupRequest |
+ GetResourceMappingGroupResponse |
|
- | CreateSubjectMapping |
- CreateSubjectMappingRequest |
- CreateSubjectMappingResponse |
+ CreateResourceMappingGroup |
+ CreateResourceMappingGroupRequest |
+ CreateResourceMappingGroupResponse |
|
- | UpdateSubjectMapping |
- UpdateSubjectMappingRequest |
- UpdateSubjectMappingResponse |
+ UpdateResourceMappingGroup |
+ UpdateResourceMappingGroupRequest |
+ UpdateResourceMappingGroupResponse |
|
- | DeleteSubjectMapping |
- DeleteSubjectMappingRequest |
- DeleteSubjectMappingResponse |
+ DeleteResourceMappingGroup |
+ DeleteResourceMappingGroupRequest |
+ DeleteResourceMappingGroupResponse |
|
- | ListSubjectConditionSets |
- ListSubjectConditionSetsRequest |
- ListSubjectConditionSetsResponse |
+ ListResourceMappings |
+ ListResourceMappingsRequest |
+ ListResourceMappingsResponse |
|
- | GetSubjectConditionSet |
- GetSubjectConditionSetRequest |
- GetSubjectConditionSetResponse |
+ ListResourceMappingsByGroupFqns |
+ ListResourceMappingsByGroupFqnsRequest |
+ ListResourceMappingsByGroupFqnsResponse |
|
- | CreateSubjectConditionSet |
- CreateSubjectConditionSetRequest |
- CreateSubjectConditionSetResponse |
+ GetResourceMapping |
+ GetResourceMappingRequest |
+ GetResourceMappingResponse |
|
- | UpdateSubjectConditionSet |
- UpdateSubjectConditionSetRequest |
- UpdateSubjectConditionSetResponse |
+ CreateResourceMapping |
+ CreateResourceMappingRequest |
+ CreateResourceMappingResponse |
|
- | DeleteSubjectConditionSet |
- DeleteSubjectConditionSetRequest |
- DeleteSubjectConditionSetResponse |
+ UpdateResourceMapping |
+ UpdateResourceMappingRequest |
+ UpdateResourceMappingResponse |
|
- | DeleteAllUnmappedSubjectConditionSets |
- DeleteAllUnmappedSubjectConditionSetsRequest |
- DeleteAllUnmappedSubjectConditionSetsResponse |
+ DeleteResourceMapping |
+ DeleteResourceMappingRequest |
+ DeleteResourceMappingResponse |
|
@@ -17265,22 +18081,27 @@ Methods with idempotency_level option
- | ListSubjectMappings |
+ ListResourceMappingGroups |
NO_SIDE_EFFECTS |
- | GetSubjectMapping |
+ GetResourceMappingGroup |
NO_SIDE_EFFECTS |
- | ListSubjectConditionSets |
+ ListResourceMappings |
NO_SIDE_EFFECTS |
- | GetSubjectConditionSet |
+ ListResourceMappingsByGroupFqns |
+ NO_SIDE_EFFECTS |
+
+
+
+ | GetResourceMapping |
NO_SIDE_EFFECTS |
diff --git a/docs/openapi/policy/actions/actions.openapi.yaml b/docs/openapi/policy/actions/actions.openapi.yaml
index da57657292..3f16ddef73 100644
--- a/docs/openapi/policy/actions/actions.openapi.yaml
+++ b/docs/openapi/policy/actions/actions.openapi.yaml
@@ -222,6 +222,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -518,7 +540,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -531,10 +556,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/docs/openapi/policy/attributes/attributes.openapi.yaml b/docs/openapi/policy/attributes/attributes.openapi.yaml
index cbdde67a8c..b5270ccdb5 100644
--- a/docs/openapi/policy/attributes/attributes.openapi.yaml
+++ b/docs/openapi/policy/attributes/attributes.openapi.yaml
@@ -741,6 +741,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -1091,7 +1113,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -1104,10 +1129,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/docs/openapi/policy/dynamicvaluemapping/dynamic_value_mapping.openapi.yaml b/docs/openapi/policy/dynamicvaluemapping/dynamic_value_mapping.openapi.yaml
new file mode 100644
index 0000000000..c05551ba69
--- /dev/null
+++ b/docs/openapi/policy/dynamicvaluemapping/dynamic_value_mapping.openapi.yaml
@@ -0,0 +1,1504 @@
+openapi: 3.1.0
+info:
+ title: policy.dynamicvaluemapping
+paths:
+ /policy.dynamicvaluemapping.DynamicValueMappingService/ListDynamicValueMappings:
+ post:
+ tags:
+ - policy.dynamicvaluemapping.DynamicValueMappingService
+ summary: ListDynamicValueMappings
+ operationId: policy.dynamicvaluemapping.DynamicValueMappingService.ListDynamicValueMappings
+ 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.dynamicvaluemapping.ListDynamicValueMappingsRequest'
+ 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.dynamicvaluemapping.ListDynamicValueMappingsResponse'
+ /policy.dynamicvaluemapping.DynamicValueMappingService/GetDynamicValueMapping:
+ post:
+ tags:
+ - policy.dynamicvaluemapping.DynamicValueMappingService
+ summary: GetDynamicValueMapping
+ operationId: policy.dynamicvaluemapping.DynamicValueMappingService.GetDynamicValueMapping
+ 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.dynamicvaluemapping.GetDynamicValueMappingRequest'
+ 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.dynamicvaluemapping.GetDynamicValueMappingResponse'
+ /policy.dynamicvaluemapping.DynamicValueMappingService/CreateDynamicValueMapping:
+ post:
+ tags:
+ - policy.dynamicvaluemapping.DynamicValueMappingService
+ summary: CreateDynamicValueMapping
+ operationId: policy.dynamicvaluemapping.DynamicValueMappingService.CreateDynamicValueMapping
+ 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.dynamicvaluemapping.CreateDynamicValueMappingRequest'
+ 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.dynamicvaluemapping.CreateDynamicValueMappingResponse'
+ /policy.dynamicvaluemapping.DynamicValueMappingService/UpdateDynamicValueMapping:
+ post:
+ tags:
+ - policy.dynamicvaluemapping.DynamicValueMappingService
+ summary: UpdateDynamicValueMapping
+ operationId: policy.dynamicvaluemapping.DynamicValueMappingService.UpdateDynamicValueMapping
+ 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.dynamicvaluemapping.UpdateDynamicValueMappingRequest'
+ 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.dynamicvaluemapping.UpdateDynamicValueMappingResponse'
+ /policy.dynamicvaluemapping.DynamicValueMappingService/DeleteDynamicValueMapping:
+ post:
+ tags:
+ - policy.dynamicvaluemapping.DynamicValueMappingService
+ summary: DeleteDynamicValueMapping
+ operationId: policy.dynamicvaluemapping.DynamicValueMappingService.DeleteDynamicValueMapping
+ 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.dynamicvaluemapping.DeleteDynamicValueMappingRequest'
+ 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.dynamicvaluemapping.DeleteDynamicValueMappingResponse'
+components:
+ schemas:
+ common.MetadataUpdateEnum:
+ type: string
+ title: MetadataUpdateEnum
+ enum:
+ - METADATA_UPDATE_ENUM_UNSPECIFIED
+ - METADATA_UPDATE_ENUM_EXTEND
+ - METADATA_UPDATE_ENUM_REPLACE
+ policy.Action.StandardAction:
+ type: string
+ title: StandardAction
+ enum:
+ - STANDARD_ACTION_UNSPECIFIED
+ - STANDARD_ACTION_DECRYPT
+ - STANDARD_ACTION_TRANSMIT
+ policy.Algorithm:
+ type: string
+ title: Algorithm
+ enum:
+ - ALGORITHM_UNSPECIFIED
+ - ALGORITHM_RSA_2048
+ - ALGORITHM_RSA_4096
+ - ALGORITHM_EC_P256
+ - ALGORITHM_EC_P384
+ - ALGORITHM_EC_P521
+ - ALGORITHM_HPQT_XWING
+ - ALGORITHM_HPQT_SECP256R1_MLKEM768
+ - ALGORITHM_HPQT_SECP384R1_MLKEM1024
+ description: Supported key algorithms.
+ policy.AttributeRuleTypeEnum:
+ type: string
+ title: AttributeRuleTypeEnum
+ enum:
+ - ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED
+ - ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF
+ - ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF
+ - ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY
+ policy.ConditionBooleanTypeEnum:
+ type: string
+ title: ConditionBooleanTypeEnum
+ enum:
+ - CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
+ - CONDITION_BOOLEAN_TYPE_ENUM_AND
+ - CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
+ policy.KasPublicKeyAlgEnum:
+ type: string
+ title: KasPublicKeyAlgEnum
+ enum:
+ - KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED
+ - KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048
+ - KAS_PUBLIC_KEY_ALG_ENUM_RSA_4096
+ - KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1
+ - KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1
+ - KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1
+ - KAS_PUBLIC_KEY_ALG_ENUM_HPQT_XWING
+ - KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP256R1_MLKEM768
+ - KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP384R1_MLKEM1024
+ policy.SortDirection:
+ type: string
+ title: SortDirection
+ enum:
+ - SORT_DIRECTION_UNSPECIFIED
+ - SORT_DIRECTION_ASC
+ - SORT_DIRECTION_DESC
+ description: |-
+ Sorting direction shared across list APIs.
+ When the 'sort' field is omitted or the chosen sort 'field' is UNSPECIFIED,
+ the endpoint's request message defines the default ordering; see the
+ specific List* request docs.
+ policy.SourceType:
+ type: string
+ title: SourceType
+ enum:
+ - SOURCE_TYPE_UNSPECIFIED
+ - SOURCE_TYPE_INTERNAL
+ - SOURCE_TYPE_EXTERNAL
+ description: |-
+ Describes whether this kas is managed by the organization or if they imported
+ the kas information from an external party. These two modes are necessary in order
+ to encrypt a tdf dek with an external parties kas public key.
+ policy.SubjectMappingOperatorEnum:
+ type: string
+ title: SubjectMappingOperatorEnum
+ enum:
+ - SUBJECT_MAPPING_OPERATOR_ENUM_UNSPECIFIED
+ - SUBJECT_MAPPING_OPERATOR_ENUM_IN
+ - SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN
+ - SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS
+ policy.dynamicvaluemapping.SortDynamicValueMappingsType:
+ type: string
+ title: SortDynamicValueMappingsType
+ enum:
+ - SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UNSPECIFIED
+ - SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_CREATED_AT
+ - SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UPDATED_AT
+ common.Metadata:
+ type: object
+ properties:
+ createdAt:
+ title: created_at
+ description: created_at set by server (entity who created will recorded in an audit event)
+ $ref: '#/components/schemas/google.protobuf.Timestamp'
+ updatedAt:
+ title: updated_at
+ description: updated_at set by server (entity who updated will recorded in an audit event)
+ $ref: '#/components/schemas/google.protobuf.Timestamp'
+ labels:
+ type: object
+ title: labels
+ additionalProperties:
+ type: string
+ title: value
+ description: optional short description
+ title: Metadata
+ additionalProperties: false
+ description: Struct to uniquely identify a resource with optional additional metadata
+ common.Metadata.LabelsEntry:
+ type: object
+ properties:
+ key:
+ type: string
+ title: key
+ value:
+ type: string
+ title: value
+ title: LabelsEntry
+ additionalProperties: false
+ common.MetadataMutable:
+ type: object
+ properties:
+ labels:
+ type: object
+ title: labels
+ additionalProperties:
+ type: string
+ title: value
+ description: optional labels
+ title: MetadataMutable
+ additionalProperties: false
+ common.MetadataMutable.LabelsEntry:
+ type: object
+ properties:
+ key:
+ type: string
+ title: key
+ value:
+ type: string
+ title: value
+ title: LabelsEntry
+ additionalProperties: false
+ google.protobuf.BoolValue:
+ type: boolean
+ description: |-
+ Wrapper message for `bool`.
+
+ The JSON representation for `BoolValue` is JSON `true` and `false`.
+
+ Not recommended for use in new APIs, but still useful for legacy APIs and
+ has no plan to be removed.
+ google.protobuf.Timestamp:
+ type: string
+ examples:
+ - 1s
+ - 1.000340012s
+ format: date-time
+ description: |-
+ A Timestamp represents a point in time independent of any time zone or local
+ calendar, encoded as a count of seconds and fractions of seconds at
+ nanosecond resolution. The count is relative to an epoch at UTC midnight on
+ January 1, 1970, in the proleptic Gregorian calendar which extends the
+ Gregorian calendar backwards to year one.
+
+ All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ second table is needed for interpretation, using a [24-hour linear
+ smear](https://developers.google.com/time/smear).
+
+ The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ restricting to that range, we ensure that we can convert to and from [RFC
+ 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+
+ # Examples
+
+ Example 1: Compute Timestamp from POSIX `time()`.
+
+ Timestamp timestamp;
+ timestamp.set_seconds(time(NULL));
+ timestamp.set_nanos(0);
+
+ Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+
+ Timestamp timestamp;
+ timestamp.set_seconds(tv.tv_sec);
+ timestamp.set_nanos(tv.tv_usec * 1000);
+
+ Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+
+ FILETIME ft;
+ GetSystemTimeAsFileTime(&ft);
+ UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+
+ // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ Timestamp timestamp;
+ timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+
+ Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+
+ long millis = System.currentTimeMillis();
+
+ Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ .setNanos((int) ((millis % 1000) * 1000000)).build();
+
+ Example 5: Compute Timestamp from Java `Instant.now()`.
+
+ Instant now = Instant.now();
+
+ Timestamp timestamp =
+ Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ .setNanos(now.getNano()).build();
+
+ Example 6: Compute Timestamp from current time in Python.
+
+ timestamp = Timestamp()
+ timestamp.GetCurrentTime()
+
+ # JSON Mapping
+
+ In JSON format, the Timestamp type is encoded as a string in the
+ [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
+ format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
+ where {year} is always expressed using four digits while {month}, {day},
+ {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
+ seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
+ are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
+ is required. A proto3 JSON serializer should always use UTC (as indicated by
+ "Z") when printing the Timestamp type and a proto3 JSON parser should be
+ able to accept both UTC and other timezones (as indicated by an offset).
+
+ For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
+ 01:30 UTC on January 15, 2017.
+
+ In JavaScript, one can convert a Date object to this format using the
+ standard
+ [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ method. In Python, a standard `datetime.datetime` object can be converted
+ to this format using
+ [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
+ the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
+ the Joda Time's [`ISODateTimeFormat.dateTime()`](
+ http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
+ ) to obtain a formatter capable of generating timestamps in this format.
+ policy.Action:
+ type: object
+ oneOf:
+ - properties:
+ custom:
+ type: string
+ title: custom
+ description: Deprecated
+ title: custom
+ required:
+ - custom
+ - properties:
+ standard:
+ title: standard
+ description: Deprecated
+ $ref: '#/components/schemas/policy.Action.StandardAction'
+ title: standard
+ required:
+ - standard
+ properties:
+ id:
+ type: string
+ title: id
+ description: Generated uuid in database
+ name:
+ type: string
+ title: name
+ namespace:
+ title: namespace
+ description: Namespace context for this action
+ $ref: '#/components/schemas/policy.Namespace'
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: Action
+ additionalProperties: false
+ description: An action an entity can take
+ policy.Attribute:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ namespace:
+ title: namespace
+ description: namespace of the attribute
+ $ref: '#/components/schemas/policy.Namespace'
+ name:
+ type: string
+ title: name
+ description: attribute name
+ rule:
+ title: rule
+ description: attribute rule enum
+ $ref: '#/components/schemas/policy.AttributeRuleTypeEnum'
+ values:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Value'
+ title: values
+ grants:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.KeyAccessServer'
+ title: grants
+ description: Deprecated KAS grants for the attribute. Use kas_keys instead.
+ fqn:
+ type: string
+ title: fqn
+ active:
+ title: active
+ description: active by default until explicitly deactivated
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ kasKeys:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SimpleKasKey'
+ title: kas_keys
+ description: Keys associated with the attribute
+ allowTraversal:
+ title: allow_traversal
+ description: |-
+ Whether or not we will use the attribute definition during encryption
+ if the attribute value is missing.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ metadata:
+ title: metadata
+ description: Common metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: Attribute
+ required:
+ - rule
+ additionalProperties: false
+ policy.Condition:
+ type: object
+ properties:
+ subjectExternalSelectorValue:
+ type: string
+ title: subject_external_selector_value
+ description: |-
+ a selector for a field value on a flattened Entity Representation (such as
+ from idP/LDAP)
+ operator:
+ title: operator
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
+ $ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
+ subjectExternalValues:
+ type: array
+ items:
+ type: string
+ minItems: 1
+ title: subject_external_values
+ minItems: 1
+ description: |-
+ list of comparison values for the result of applying the
+ subject_external_selector_value on a flattened Entity Representation
+ (Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ title: Condition
+ required:
+ - subjectExternalSelectorValue
+ additionalProperties: false
+ description: |-
+ *
+ A Condition defines a rule of
+ policy.ConditionGroup:
+ type: object
+ properties:
+ conditions:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Condition'
+ title: conditions
+ minItems: 1
+ booleanOperator:
+ title: boolean_operator
+ description: the boolean evaluation type across the conditions
+ $ref: '#/components/schemas/policy.ConditionBooleanTypeEnum'
+ title: ConditionGroup
+ required:
+ - booleanOperator
+ additionalProperties: false
+ description: A collection of Conditions evaluated by the boolean_operator provided
+ policy.DynamicValueMapping:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ attributeDefinition:
+ title: attribute_definition
+ description: the Attribute Definition whose values are entitled dynamically
+ $ref: '#/components/schemas/policy.Attribute'
+ valueResolver:
+ title: value_resolver
+ description: the dynamic resolver matched against the requested resource value segment
+ $ref: '#/components/schemas/policy.DynamicValueResolver'
+ subjectConditionSet:
+ title: subject_condition_set
+ description: |-
+ optional static pre-gate on the entity, evaluated with normal SubjectConditionSet
+ semantics (no dynamic overload). When present, both the gate and the resolver must
+ pass for entitlement.
+ $ref: '#/components/schemas/policy.SubjectConditionSet'
+ actions:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Action'
+ title: actions
+ description: the actions permitted by subjects in this mapping
+ namespace:
+ title: namespace
+ description: the namespace containing this mapping
+ $ref: '#/components/schemas/policy.Namespace'
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: DynamicValueMapping
+ additionalProperties: false
+ description: |-
+ Dynamic Value Mapping: a Policy assigning permitted action(s) to
+ dynamically-requested values under an Attribute Definition. It raises entitlement
+ authority from a concrete Attribute Value to the Attribute Definition: at decision time
+ the value_resolver compares the requested resource value segment against the entity
+ representation, avoiding pre-provisioning a value + subject mapping per discrete value.
+ policy.DynamicValueResolver:
+ type: object
+ properties:
+ subjectExternalSelectorValue:
+ type: string
+ title: subject_external_selector_value
+ description: |-
+ a selector for a field value on a flattened Entity Representation (such as from
+ idP/LDAP), e.g. ".patientAssignments[]"
+ comparison:
+ title: comparison
+ description: |-
+ how the requested resource value segment is compared against each value the selector
+ resolves from the entity representation
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ title: DynamicValueResolver
+ required:
+ - subjectExternalSelectorValue
+ - comparison
+ additionalProperties: false
+ description: |-
+ Dynamic Value Resolver: the dynamic half of a DynamicValueMapping. It resolves a selector
+ against the entity representation, then tests whether any resolved entity value matches the
+ requested resource value segment under comparison. The match is inherently existential over
+ the resolved entity values, so no quantifier is carried here.
+ policy.KasPublicKey:
+ type: object
+ properties:
+ pem:
+ type: string
+ title: pem
+ maxLength: 8192
+ minLength: 1
+ description: x509 ASN.1 content in PEM envelope, usually
+ kid:
+ type: string
+ title: kid
+ maxLength: 32
+ minLength: 1
+ description: A unique string identifier for this key
+ alg:
+ not:
+ enum:
+ - 0
+ title: alg
+ description: |-
+ A known algorithm type with any additional parameters encoded.
+ To start, these may be `rsa:2048` for RSA-based wrapping and
+ `ec:secp256r1` for EC-based wrapping, but more formats may be added as needed.
+ $ref: '#/components/schemas/policy.KasPublicKeyAlgEnum'
+ title: KasPublicKey
+ additionalProperties: false
+ description: |-
+ Deprecated
+ A KAS public key and some associated metadata for further identifcation
+ policy.KasPublicKeySet:
+ type: object
+ properties:
+ keys:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.KasPublicKey'
+ title: keys
+ title: KasPublicKeySet
+ additionalProperties: false
+ description: |-
+ Deprecated
+ A list of known KAS public keys
+ policy.KeyAccessServer:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ uri:
+ type: string
+ title: uri
+ description: |+
+ Address of a KAS instance
+ URI must be a valid URL (e.g., 'https://demo.com/') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.:
+ ```
+ this.matches('^https?://[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*(:[0-9]+)?(/.*)?$')
+ ```
+
+ publicKey:
+ title: public_key
+ description: 'Deprecated: KAS can have multiple key pairs'
+ $ref: '#/components/schemas/policy.PublicKey'
+ sourceType:
+ title: source_type
+ description: 'The source of the KAS: (INTERNAL, EXTERNAL)'
+ $ref: '#/components/schemas/policy.SourceType'
+ kasKeys:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SimpleKasKey'
+ title: kas_keys
+ description: Kas keys associated with this KAS
+ name:
+ type: string
+ title: name
+ description: |-
+ Optional
+ Unique name of the KAS instance
+ metadata:
+ title: metadata
+ description: Common metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: KeyAccessServer
+ additionalProperties: false
+ description: Key Access Server Registry
+ policy.Namespace:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ description: generated uuid in database
+ name:
+ type: string
+ title: name
+ description: |-
+ used to partition Attribute Definitions, support by namespace AuthN and
+ enable federation
+ fqn:
+ type: string
+ title: fqn
+ active:
+ title: active
+ description: active by default until explicitly deactivated
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ grants:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.KeyAccessServer'
+ title: grants
+ description: Deprecated KAS grants for the namespace. Use kas_keys instead.
+ kasKeys:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SimpleKasKey'
+ title: kas_keys
+ description: Keys for the namespace
+ title: Namespace
+ additionalProperties: false
+ policy.Obligation:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ namespace:
+ title: namespace
+ $ref: '#/components/schemas/policy.Namespace'
+ name:
+ type: string
+ title: name
+ values:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.ObligationValue'
+ title: values
+ fqn:
+ type: string
+ title: fqn
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: Obligation
+ additionalProperties: false
+ policy.ObligationTrigger:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ obligationValue:
+ title: obligation_value
+ $ref: '#/components/schemas/policy.ObligationValue'
+ action:
+ title: action
+ $ref: '#/components/schemas/policy.Action'
+ attributeValue:
+ title: attribute_value
+ $ref: '#/components/schemas/policy.Value'
+ context:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.RequestContext'
+ title: context
+ namespace:
+ title: namespace
+ description: The source namespace for this trigger, derived from the attribute value and action.
+ $ref: '#/components/schemas/policy.Namespace'
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: ObligationTrigger
+ additionalProperties: false
+ policy.ObligationValue:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ obligation:
+ title: obligation
+ $ref: '#/components/schemas/policy.Obligation'
+ value:
+ type: string
+ title: value
+ triggers:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.ObligationTrigger'
+ title: triggers
+ fqn:
+ type: string
+ title: fqn
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: ObligationValue
+ additionalProperties: false
+ policy.PageRequest:
+ type: object
+ properties:
+ limit:
+ type: integer
+ title: limit
+ format: int32
+ description: |-
+ Optional
+ Set to configured default limit if not provided
+ Maximum limit set in platform config and enforced by services
+ offset:
+ type: integer
+ title: offset
+ format: int32
+ description: |-
+ Optional
+ Defaulted if not provided
+ title: PageRequest
+ additionalProperties: false
+ policy.PageResponse:
+ type: object
+ properties:
+ currentOffset:
+ type: integer
+ title: current_offset
+ format: int32
+ description: Requested pagination offset
+ nextOffset:
+ type: integer
+ title: next_offset
+ format: int32
+ description: |-
+ Calculated with request limit + offset or defaults
+ Empty when none remain after current page
+ total:
+ type: integer
+ title: total
+ format: int32
+ description: Total count of entire list
+ title: PageResponse
+ additionalProperties: false
+ policy.PolicyEnforcementPoint:
+ type: object
+ properties:
+ clientId:
+ type: string
+ title: client_id
+ minLength: 1
+ title: PolicyEnforcementPoint
+ additionalProperties: false
+ policy.PublicKey:
+ type: object
+ oneOf:
+ - properties:
+ cached:
+ title: cached
+ description: public key with additional information. Current preferred version
+ $ref: '#/components/schemas/policy.KasPublicKeySet'
+ title: cached
+ required:
+ - cached
+ - properties:
+ remote:
+ type: string
+ title: remote
+ description: |+
+ kas public key url - optional since can also be retrieved via public key
+ URI must be a valid URL (e.g., 'https://demo.com/') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.:
+ ```
+ this.matches('^https://[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*(/.*)?$')
+ ```
+
+ title: remote
+ required:
+ - remote
+ title: PublicKey
+ additionalProperties: false
+ description: Deprecated
+ policy.RequestContext:
+ type: object
+ properties:
+ pep:
+ title: pep
+ $ref: '#/components/schemas/policy.PolicyEnforcementPoint'
+ title: RequestContext
+ required:
+ - pep
+ additionalProperties: false
+ description: Holds the context needed for obligation fulfillment
+ policy.ResourceMapping:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ attributeValue:
+ title: attribute_value
+ $ref: '#/components/schemas/policy.Value'
+ terms:
+ type: array
+ items:
+ type: string
+ title: terms
+ group:
+ title: group
+ $ref: '#/components/schemas/policy.ResourceMappingGroup'
+ namespace:
+ title: namespace
+ description: |-
+ The namespace that optionally owns this resource mapping. When the mapping
+ belongs to a group, this matches the group's namespace. The mapped
+ attribute value may belong to a different namespace.
+ $ref: '#/components/schemas/policy.Namespace'
+ title: ResourceMapping
+ required:
+ - attributeValue
+ additionalProperties: false
+ description: |-
+ Resource Mappings (aka Access Control Resource Encodings aka ACRE) are
+ structures supporting the mapping of Resources and Attribute Values
+ policy.ResourceMappingGroup:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ namespaceId:
+ type: string
+ title: namespace_id
+ description: the namespace containing the group of resource mappings
+ name:
+ type: string
+ title: name
+ description: |-
+ the common name for the group of resource mappings, which must be unique
+ per namespace
+ fqn:
+ type: string
+ title: fqn
+ description: the fully qualified name of the resource mapping group
+ metadata:
+ title: metadata
+ description: Common metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: ResourceMappingGroup
+ required:
+ - namespaceId
+ - name
+ additionalProperties: false
+ description: |-
+ Resource Mapping Groups are namespaced collections of Resource Mappings
+ associated under a common group name.
+ policy.SimpleKasKey:
+ type: object
+ properties:
+ kasUri:
+ type: string
+ title: kas_uri
+ description: The URL of the Key Access Server
+ publicKey:
+ title: public_key
+ description: The public key of the Key that belongs to the KAS
+ $ref: '#/components/schemas/policy.SimpleKasPublicKey'
+ kasId:
+ type: string
+ title: kas_id
+ description: The ID of the Key Access Server
+ title: SimpleKasKey
+ additionalProperties: false
+ policy.SimpleKasPublicKey:
+ type: object
+ properties:
+ algorithm:
+ title: algorithm
+ $ref: '#/components/schemas/policy.Algorithm'
+ kid:
+ type: string
+ title: kid
+ pem:
+ type: string
+ title: pem
+ title: SimpleKasPublicKey
+ additionalProperties: false
+ policy.SubjectConditionSet:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ namespace:
+ title: namespace
+ description: |-
+ the namespace containing this subject condition set
+ possible this is empty in the case a subject condition set
+ has not been migrated to a namespace.
+ $ref: '#/components/schemas/policy.Namespace'
+ subjectSets:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SubjectSet'
+ title: subject_sets
+ minItems: 1
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: SubjectConditionSet
+ additionalProperties: false
+ description: |-
+ A container for multiple Subject Sets, each containing Condition Groups, each
+ containing Conditions. Multiple Subject Sets in a SubjectConditionSet are
+ evaluated with AND logic. As each Subject Mapping has only one Attribute
+ Value, the SubjectConditionSet is reusable across multiple Subject Mappings /
+ Attribute Values and is an independent unit.
+ policy.SubjectMapping:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ attributeValue:
+ title: attribute_value
+ description: 'the Attribute Value mapped to; aka: "The Entity Entitlement Attribute"'
+ $ref: '#/components/schemas/policy.Value'
+ subjectConditionSet:
+ title: subject_condition_set
+ description: the reusable SubjectConditionSet mapped to the given Attribute Value
+ $ref: '#/components/schemas/policy.SubjectConditionSet'
+ actions:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Action'
+ title: actions
+ description: The actions permitted by subjects in this mapping
+ namespace:
+ title: namespace
+ description: |-
+ the namespace containing this subject mapping
+ possible this is empty. If so that means
+ the Subject Mapping has not been migrated to a namespace.
+ $ref: '#/components/schemas/policy.Namespace'
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: SubjectMapping
+ additionalProperties: false
+ description: |-
+ Subject Mapping: A Policy assigning Subject Set(s) to a permitted attribute
+ value + action(s) combination
+ policy.SubjectSet:
+ type: object
+ properties:
+ conditionGroups:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.ConditionGroup'
+ title: condition_groups
+ minItems: 1
+ description: multiple Condition Groups are evaluated with AND logic
+ title: SubjectSet
+ additionalProperties: false
+ description: A collection of Condition Groups
+ policy.Value:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ description: generated uuid in database
+ attribute:
+ title: attribute
+ $ref: '#/components/schemas/policy.Attribute'
+ value:
+ type: string
+ title: value
+ grants:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.KeyAccessServer'
+ title: grants
+ description: Deprecated KAS grants for the value. Use kas_keys instead.
+ fqn:
+ type: string
+ title: fqn
+ active:
+ title: active
+ description: active by default until explicitly deactivated
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ subjectMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SubjectMapping'
+ title: subject_mappings
+ description: subject mapping
+ kasKeys:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SimpleKasKey'
+ title: kas_keys
+ resourceMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.ResourceMapping'
+ title: resource_mappings
+ obligations:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Obligation'
+ title: obligations
+ metadata:
+ title: metadata
+ description: Common metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: Value
+ additionalProperties: false
+ policy.dynamicvaluemapping.CreateDynamicValueMappingRequest:
+ type: object
+ properties:
+ attributeDefinitionId:
+ type: string
+ title: attribute_definition_id
+ format: uuid
+ attributeDefinitionFqn:
+ type: string
+ title: attribute_definition_fqn
+ minLength: 1
+ format: uri
+ valueResolver:
+ title: value_resolver
+ description: 'Required: the dynamic resolver comparing entity selector result to the resource value segment'
+ $ref: '#/components/schemas/policy.DynamicValueResolver'
+ actions:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Action'
+ title: actions
+ minItems: 1
+ description: |+
+ Required: actions permitted on a matched value
+ Action name or ID must not be empty if provided:
+ ```
+ this.all(item, item.name != '' || item.id != '')
+ ```
+
+ existingSubjectConditionSetId:
+ type: string
+ title: existing_subject_condition_set_id
+ description: |+
+ Optional static pre-gate. Reuse an existing SubjectConditionSet (prioritized) ...
+ Optional field must be a valid UUID:
+ ```
+ size(this) == 0 || this.matches('[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}')
+ ```
+
+ newSubjectConditionSet:
+ title: new_subject_condition_set
+ description: '... or create a new one (ignored if existing_subject_condition_set_id is provided)'
+ $ref: '#/components/schemas/policy.subjectmapping.SubjectConditionSetCreate'
+ namespaceId:
+ type: string
+ title: namespace_id
+ format: uuid
+ description: 'Optional: namespace ID or FQN for the mapping'
+ namespaceFqn:
+ type: string
+ title: namespace_fqn
+ minLength: 1
+ format: uri
+ metadata:
+ title: metadata
+ description: Optional
+ $ref: '#/components/schemas/common.MetadataMutable'
+ title: CreateDynamicValueMappingRequest
+ required:
+ - valueResolver
+ additionalProperties: false
+ policy.dynamicvaluemapping.CreateDynamicValueMappingResponse:
+ type: object
+ properties:
+ dynamicValueMapping:
+ title: dynamic_value_mapping
+ $ref: '#/components/schemas/policy.DynamicValueMapping'
+ title: CreateDynamicValueMappingResponse
+ additionalProperties: false
+ policy.dynamicvaluemapping.DeleteDynamicValueMappingRequest:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ format: uuid
+ description: Required
+ title: DeleteDynamicValueMappingRequest
+ additionalProperties: false
+ policy.dynamicvaluemapping.DeleteDynamicValueMappingResponse:
+ type: object
+ properties:
+ dynamicValueMapping:
+ title: dynamic_value_mapping
+ description: Only ID of the deleted mapping provided
+ $ref: '#/components/schemas/policy.DynamicValueMapping'
+ title: DeleteDynamicValueMappingResponse
+ additionalProperties: false
+ policy.dynamicvaluemapping.DynamicValueMappingsSort:
+ type: object
+ properties:
+ field:
+ title: field
+ $ref: '#/components/schemas/policy.dynamicvaluemapping.SortDynamicValueMappingsType'
+ direction:
+ title: direction
+ $ref: '#/components/schemas/policy.SortDirection'
+ title: DynamicValueMappingsSort
+ additionalProperties: false
+ policy.dynamicvaluemapping.GetDynamicValueMappingRequest:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ format: uuid
+ description: Required
+ title: GetDynamicValueMappingRequest
+ additionalProperties: false
+ policy.dynamicvaluemapping.GetDynamicValueMappingResponse:
+ type: object
+ properties:
+ dynamicValueMapping:
+ title: dynamic_value_mapping
+ $ref: '#/components/schemas/policy.DynamicValueMapping'
+ title: GetDynamicValueMappingResponse
+ additionalProperties: false
+ policy.dynamicvaluemapping.ListDynamicValueMappingsRequest:
+ type: object
+ properties:
+ namespaceId:
+ type: string
+ title: namespace_id
+ format: uuid
+ namespaceFqn:
+ type: string
+ title: namespace_fqn
+ minLength: 1
+ format: uri
+ attributeDefinitionId:
+ type: string
+ title: attribute_definition_id
+ description: |+
+ Optional: Attribute Definition ID to filter by
+ Optional field must be a valid UUID:
+ ```
+ size(this) == 0 || this.matches('[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}')
+ ```
+
+ pagination:
+ title: pagination
+ description: Optional
+ $ref: '#/components/schemas/policy.PageRequest'
+ sort:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.dynamicvaluemapping.DynamicValueMappingsSort'
+ title: sort
+ maxItems: 1
+ description: 'Optional - CONSTRAINT: max 1 item'
+ title: ListDynamicValueMappingsRequest
+ additionalProperties: false
+ policy.dynamicvaluemapping.ListDynamicValueMappingsResponse:
+ type: object
+ properties:
+ dynamicValueMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.DynamicValueMapping'
+ title: dynamic_value_mappings
+ pagination:
+ title: pagination
+ $ref: '#/components/schemas/policy.PageResponse'
+ title: ListDynamicValueMappingsResponse
+ additionalProperties: false
+ policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ format: uuid
+ description: Required
+ valueResolver:
+ title: value_resolver
+ description: 'Optional: replace the dynamic resolver'
+ $ref: '#/components/schemas/policy.DynamicValueResolver'
+ subjectConditionSetId:
+ type: string
+ title: subject_condition_set_id
+ description: |+
+ Optional: replace the static pre-gate SubjectConditionSet by id
+ Optional field must be a valid UUID:
+ ```
+ size(this) == 0 || this.matches('[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}')
+ ```
+
+ actions:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Action'
+ title: actions
+ description: |+
+ Optional: replace the entire list of actions
+ Action name or ID must not be empty if provided:
+ ```
+ this.size() == 0 || this.all(item, item.name != '' || item.id != '')
+ ```
+
+ metadata:
+ title: metadata
+ description: Common metadata
+ $ref: '#/components/schemas/common.MetadataMutable'
+ metadataUpdateBehavior:
+ title: metadata_update_behavior
+ $ref: '#/components/schemas/common.MetadataUpdateEnum'
+ title: UpdateDynamicValueMappingRequest
+ additionalProperties: false
+ policy.dynamicvaluemapping.UpdateDynamicValueMappingResponse:
+ type: object
+ properties:
+ dynamicValueMapping:
+ title: dynamic_value_mapping
+ $ref: '#/components/schemas/policy.DynamicValueMapping'
+ title: UpdateDynamicValueMappingResponse
+ additionalProperties: false
+ policy.subjectmapping.SubjectConditionSetCreate:
+ type: object
+ properties:
+ subjectSets:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.SubjectSet'
+ title: subject_sets
+ minItems: 1
+ description: Required
+ metadata:
+ title: metadata
+ description: |-
+ Optional
+ Common metadata
+ $ref: '#/components/schemas/common.MetadataMutable'
+ title: SubjectConditionSetCreate
+ additionalProperties: false
+ connect-protocol-version:
+ type: number
+ title: Connect-Protocol-Version
+ enum:
+ - 1
+ description: Define the version of the Connect protocol
+ const: 1
+ connect-timeout-header:
+ type: number
+ title: Connect-Timeout-Ms
+ description: Define the timeout, in ms
+ connect.error:
+ type: object
+ properties:
+ code:
+ type: string
+ examples:
+ - not_found
+ enum:
+ - canceled
+ - unknown
+ - invalid_argument
+ - deadline_exceeded
+ - not_found
+ - already_exists
+ - permission_denied
+ - resource_exhausted
+ - failed_precondition
+ - aborted
+ - out_of_range
+ - unimplemented
+ - internal
+ - unavailable
+ - data_loss
+ - unauthenticated
+ description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
+ message:
+ type: string
+ description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
+ detail:
+ $ref: '#/components/schemas/google.protobuf.Any'
+ title: Connect Error
+ additionalProperties: true
+ description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation'
+ google.protobuf.Any:
+ type: object
+ properties:
+ type:
+ type: string
+ value:
+ type: string
+ format: binary
+ debug:
+ type: object
+ additionalProperties: true
+ additionalProperties: true
+ description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
+security: []
+tags:
+ - name: policy.dynamicvaluemapping.DynamicValueMappingService
diff --git a/docs/openapi/policy/objects.openapi.yaml b/docs/openapi/policy/objects.openapi.yaml
index 00630c5163..b888894b3c 100644
--- a/docs/openapi/policy/objects.openapi.yaml
+++ b/docs/openapi/policy/objects.openapi.yaml
@@ -40,6 +40,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -376,7 +398,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -389,10 +414,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
@@ -416,6 +454,79 @@ components:
- booleanOperator
additionalProperties: false
description: A collection of Conditions evaluated by the boolean_operator provided
+ policy.DynamicValueMapping:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ attributeDefinition:
+ title: attribute_definition
+ description: the Attribute Definition whose values are entitled dynamically
+ $ref: '#/components/schemas/policy.Attribute'
+ valueResolver:
+ title: value_resolver
+ description: the dynamic resolver matched against the requested resource value segment
+ $ref: '#/components/schemas/policy.DynamicValueResolver'
+ subjectConditionSet:
+ title: subject_condition_set
+ description: |-
+ optional static pre-gate on the entity, evaluated with normal SubjectConditionSet
+ semantics (no dynamic overload). When present, both the gate and the resolver must
+ pass for entitlement.
+ $ref: '#/components/schemas/policy.SubjectConditionSet'
+ actions:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.Action'
+ title: actions
+ description: the actions permitted by subjects in this mapping
+ namespace:
+ title: namespace
+ description: the namespace containing this mapping
+ $ref: '#/components/schemas/policy.Namespace'
+ metadata:
+ title: metadata
+ $ref: '#/components/schemas/common.Metadata'
+ title: DynamicValueMapping
+ additionalProperties: false
+ description: |-
+ Dynamic Value Mapping: a Policy assigning permitted action(s) to
+ dynamically-requested values under an Attribute Definition. It raises entitlement
+ authority from a concrete Attribute Value to the Attribute Definition: at decision time
+ the value_resolver compares the requested resource value segment against the entity
+ representation, avoiding pre-provisioning a value + subject mapping per discrete value.
+ policy.DynamicValueResolver:
+ type: object
+ properties:
+ subjectExternalSelectorValue:
+ type: string
+ title: subject_external_selector_value
+ description: |-
+ a selector for a field value on a flattened Entity Representation (such as from
+ idP/LDAP), e.g. ".patientAssignments[]"
+ comparison:
+ title: comparison
+ description: |-
+ how the requested resource value segment is compared against each value the selector
+ resolves from the entity representation
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
+ title: DynamicValueResolver
+ required:
+ - subjectExternalSelectorValue
+ - comparison
+ additionalProperties: false
+ description: |-
+ Dynamic Value Resolver: the dynamic half of a DynamicValueMapping. It resolves a selector
+ against the entity representation, then tests whether any resolved entity value matches the
+ requested resource value segment under comparison. The match is inherently existential over
+ the resolved entity values, so no quantifier is carried here.
policy.KasKey:
type: object
properties:
diff --git a/docs/openapi/policy/obligations/obligations.openapi.yaml b/docs/openapi/policy/obligations/obligations.openapi.yaml
index 562045f797..01fcb57b6a 100644
--- a/docs/openapi/policy/obligations/obligations.openapi.yaml
+++ b/docs/openapi/policy/obligations/obligations.openapi.yaml
@@ -572,6 +572,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -923,7 +945,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -936,10 +961,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/docs/openapi/policy/registeredresources/registered_resources.openapi.yaml b/docs/openapi/policy/registeredresources/registered_resources.openapi.yaml
index ca41d4841e..cf6f526825 100644
--- a/docs/openapi/policy/registeredresources/registered_resources.openapi.yaml
+++ b/docs/openapi/policy/registeredresources/registered_resources.openapi.yaml
@@ -432,6 +432,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -748,7 +770,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -761,10 +786,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/docs/openapi/policy/resourcemapping/resource_mapping.openapi.yaml b/docs/openapi/policy/resourcemapping/resource_mapping.openapi.yaml
index a11306bc24..c17e546137 100644
--- a/docs/openapi/policy/resourcemapping/resource_mapping.openapi.yaml
+++ b/docs/openapi/policy/resourcemapping/resource_mapping.openapi.yaml
@@ -432,6 +432,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -728,7 +750,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -741,10 +766,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/docs/openapi/policy/subjectmapping/subject_mapping.openapi.yaml b/docs/openapi/policy/subjectmapping/subject_mapping.openapi.yaml
index 4c78ec9f8d..1113568374 100644
--- a/docs/openapi/policy/subjectmapping/subject_mapping.openapi.yaml
+++ b/docs/openapi/policy/subjectmapping/subject_mapping.openapi.yaml
@@ -468,6 +468,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -790,7 +812,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -803,10 +828,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/docs/openapi/policy/unsafe/unsafe.openapi.yaml b/docs/openapi/policy/unsafe/unsafe.openapi.yaml
index 09ebdf2e85..eff9dbd4d7 100644
--- a/docs/openapi/policy/unsafe/unsafe.openapi.yaml
+++ b/docs/openapi/policy/unsafe/unsafe.openapi.yaml
@@ -406,6 +406,28 @@ components:
- CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED
- CONDITION_BOOLEAN_TYPE_ENUM_AND
- CONDITION_BOOLEAN_TYPE_ENUM_OR
+ policy.ConditionComparisonOperatorEnum:
+ type: string
+ title: ConditionComparisonOperatorEnum
+ enum:
+ - CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+ - CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ - CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ - CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+ description: |-
+ How a selector result is compared against a comparison value. Replaces the all-in-one
+ SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+ ConditionQuantifierEnum) and case sensitivity.
+ policy.ConditionQuantifierEnum:
+ type: string
+ title: ConditionQuantifierEnum
+ enum:
+ - CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+ - CONDITION_QUANTIFIER_ENUM_ANY
+ - CONDITION_QUANTIFIER_ENUM_ALL
+ - CONDITION_QUANTIFIER_ENUM_NONE
+ description: How matches are aggregated across the comparison set (subject_external_values).
policy.KasPublicKeyAlgEnum:
type: string
title: KasPublicKeyAlgEnum
@@ -742,7 +764,10 @@ components:
from idP/LDAP)
operator:
title: operator
- description: the evaluation operator of relation
+ description: |-
+ Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ decomposed fields in the service layer for backward compatibility.
+ deprecated: true
$ref: '#/components/schemas/policy.SubjectMappingOperatorEnum'
subjectExternalValues:
type: array
@@ -755,10 +780,23 @@ components:
list of comparison values for the result of applying the
subject_external_selector_value on a flattened Entity Representation
(Subject), evaluated by the operator
+ comparison:
+ title: comparison
+ description: how each selector result is compared to subject_external_values entries
+ $ref: '#/components/schemas/policy.ConditionComparisonOperatorEnum'
+ quantifier:
+ title: quantifier
+ description: how matches are aggregated across subject_external_values
+ $ref: '#/components/schemas/policy.ConditionQuantifierEnum'
+ caseInsensitive:
+ title: case_insensitive
+ description: |-
+ when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ $ref: '#/components/schemas/google.protobuf.BoolValue'
title: Condition
required:
- subjectExternalSelectorValue
- - operator
additionalProperties: false
description: |-
*
diff --git a/protocol/go/internal/policy/enums.go b/protocol/go/internal/policy/enums.go
index 6ed689d857..3e236543a6 100644
--- a/protocol/go/internal/policy/enums.go
+++ b/protocol/go/internal/policy/enums.go
@@ -20,6 +20,30 @@ const (
OperatorInContains = policy.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS
)
+// Shorthand constants for ConditionComparisonOperatorEnum.
+//
+// Example:
+//
+// condition := &policy.Condition{
+// SubjectExternalSelectorValue: ".email",
+// Comparison: policy.ComparisonEndsWith,
+// Quantifier: policy.QuantifierAny,
+// SubjectExternalValues: []string{"@example.com"},
+// }
+const (
+ ComparisonEquals = policy.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ ComparisonContains = policy.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ ComparisonStartsWith = policy.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ ComparisonEndsWith = policy.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+)
+
+// Shorthand constants for ConditionQuantifierEnum.
+const (
+ QuantifierAny = policy.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ANY
+ QuantifierAll = policy.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ALL
+ QuantifierNone = policy.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_NONE
+)
+
// Shorthand constants for ConditionBooleanTypeEnum.
//
// Example:
diff --git a/protocol/go/internal/policy/enums_test.go b/protocol/go/internal/policy/enums_test.go
index 8fa7e37bd3..73334c1ee6 100644
--- a/protocol/go/internal/policy/enums_test.go
+++ b/protocol/go/internal/policy/enums_test.go
@@ -19,6 +19,33 @@ func TestOperatorConstants(t *testing.T) {
}
}
+func TestComparisonConstants(t *testing.T) {
+ if ComparisonEquals != policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS {
+ t.Errorf("ComparisonEquals = %d, want %d", ComparisonEquals, policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS)
+ }
+ if ComparisonContains != policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS {
+ t.Errorf("ComparisonContains = %d, want %d", ComparisonContains, policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS)
+ }
+ if ComparisonStartsWith != policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH {
+ t.Errorf("ComparisonStartsWith = %d, want %d", ComparisonStartsWith, policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH)
+ }
+ if ComparisonEndsWith != policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH {
+ t.Errorf("ComparisonEndsWith = %d, want %d", ComparisonEndsWith, policyproto.ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH)
+ }
+}
+
+func TestQuantifierConstants(t *testing.T) {
+ if QuantifierAny != policyproto.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ANY {
+ t.Errorf("QuantifierAny = %d, want %d", QuantifierAny, policyproto.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ANY)
+ }
+ if QuantifierAll != policyproto.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ALL {
+ t.Errorf("QuantifierAll = %d, want %d", QuantifierAll, policyproto.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ALL)
+ }
+ if QuantifierNone != policyproto.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_NONE {
+ t.Errorf("QuantifierNone = %d, want %d", QuantifierNone, policyproto.ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_NONE)
+ }
+}
+
func TestBooleanConstants(t *testing.T) {
if BooleanAnd != policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND {
t.Errorf("BooleanAnd = %d, want %d", BooleanAnd, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND)
diff --git a/protocol/go/policy/dynamicvaluemapping/dynamic_value_mapping.pb.go b/protocol/go/policy/dynamicvaluemapping/dynamic_value_mapping.pb.go
new file mode 100644
index 0000000000..054858e1c2
--- /dev/null
+++ b/protocol/go/policy/dynamicvaluemapping/dynamic_value_mapping.pb.go
@@ -0,0 +1,1294 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.33.0
+// protoc (unknown)
+// source: policy/dynamicvaluemapping/dynamic_value_mapping.proto
+
+package dynamicvaluemapping
+
+import (
+ _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
+ common "github.com/opentdf/platform/protocol/go/common"
+ policy "github.com/opentdf/platform/protocol/go/policy"
+ subjectmapping "github.com/opentdf/platform/protocol/go/policy/subjectmapping"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type SortDynamicValueMappingsType int32
+
+const (
+ SortDynamicValueMappingsType_SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UNSPECIFIED SortDynamicValueMappingsType = 0
+ SortDynamicValueMappingsType_SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_CREATED_AT SortDynamicValueMappingsType = 1
+ SortDynamicValueMappingsType_SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UPDATED_AT SortDynamicValueMappingsType = 2
+)
+
+// Enum value maps for SortDynamicValueMappingsType.
+var (
+ SortDynamicValueMappingsType_name = map[int32]string{
+ 0: "SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UNSPECIFIED",
+ 1: "SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_CREATED_AT",
+ 2: "SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UPDATED_AT",
+ }
+ SortDynamicValueMappingsType_value = map[string]int32{
+ "SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UNSPECIFIED": 0,
+ "SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_CREATED_AT": 1,
+ "SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UPDATED_AT": 2,
+ }
+)
+
+func (x SortDynamicValueMappingsType) Enum() *SortDynamicValueMappingsType {
+ p := new(SortDynamicValueMappingsType)
+ *p = x
+ return p
+}
+
+func (x SortDynamicValueMappingsType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SortDynamicValueMappingsType) Descriptor() protoreflect.EnumDescriptor {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_enumTypes[0].Descriptor()
+}
+
+func (SortDynamicValueMappingsType) Type() protoreflect.EnumType {
+ return &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_enumTypes[0]
+}
+
+func (x SortDynamicValueMappingsType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SortDynamicValueMappingsType.Descriptor instead.
+func (SortDynamicValueMappingsType) EnumDescriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{0}
+}
+
+type GetDynamicValueMappingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *GetDynamicValueMappingRequest) Reset() {
+ *x = GetDynamicValueMappingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetDynamicValueMappingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDynamicValueMappingRequest) ProtoMessage() {}
+
+func (x *GetDynamicValueMappingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[0]
+ 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 GetDynamicValueMappingRequest.ProtoReflect.Descriptor instead.
+func (*GetDynamicValueMappingRequest) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *GetDynamicValueMappingRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type GetDynamicValueMappingResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DynamicValueMapping *policy.DynamicValueMapping `protobuf:"bytes,1,opt,name=dynamic_value_mapping,json=dynamicValueMapping,proto3" json:"dynamic_value_mapping,omitempty"`
+}
+
+func (x *GetDynamicValueMappingResponse) Reset() {
+ *x = GetDynamicValueMappingResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetDynamicValueMappingResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDynamicValueMappingResponse) ProtoMessage() {}
+
+func (x *GetDynamicValueMappingResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[1]
+ 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 GetDynamicValueMappingResponse.ProtoReflect.Descriptor instead.
+func (*GetDynamicValueMappingResponse) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *GetDynamicValueMappingResponse) GetDynamicValueMapping() *policy.DynamicValueMapping {
+ if x != nil {
+ return x.DynamicValueMapping
+ }
+ return nil
+}
+
+type DynamicValueMappingsSort struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Field SortDynamicValueMappingsType `protobuf:"varint,1,opt,name=field,proto3,enum=policy.dynamicvaluemapping.SortDynamicValueMappingsType" json:"field,omitempty"`
+ Direction policy.SortDirection `protobuf:"varint,2,opt,name=direction,proto3,enum=policy.SortDirection" json:"direction,omitempty"`
+}
+
+func (x *DynamicValueMappingsSort) Reset() {
+ *x = DynamicValueMappingsSort{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DynamicValueMappingsSort) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DynamicValueMappingsSort) ProtoMessage() {}
+
+func (x *DynamicValueMappingsSort) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[2]
+ 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 DynamicValueMappingsSort.ProtoReflect.Descriptor instead.
+func (*DynamicValueMappingsSort) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *DynamicValueMappingsSort) GetField() SortDynamicValueMappingsType {
+ if x != nil {
+ return x.Field
+ }
+ return SortDynamicValueMappingsType_SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UNSPECIFIED
+}
+
+func (x *DynamicValueMappingsSort) GetDirection() policy.SortDirection {
+ if x != nil {
+ return x.Direction
+ }
+ return policy.SortDirection(0)
+}
+
+type ListDynamicValueMappingsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"`
+ NamespaceFqn string `protobuf:"bytes,2,opt,name=namespace_fqn,json=namespaceFqn,proto3" json:"namespace_fqn,omitempty"`
+ // Optional: Attribute Definition ID to filter by
+ AttributeDefinitionId string `protobuf:"bytes,3,opt,name=attribute_definition_id,json=attributeDefinitionId,proto3" json:"attribute_definition_id,omitempty"`
+ // Optional
+ Pagination *policy.PageRequest `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"`
+ // Optional - CONSTRAINT: max 1 item
+ Sort []*DynamicValueMappingsSort `protobuf:"bytes,11,rep,name=sort,proto3" json:"sort,omitempty"`
+}
+
+func (x *ListDynamicValueMappingsRequest) Reset() {
+ *x = ListDynamicValueMappingsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListDynamicValueMappingsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListDynamicValueMappingsRequest) ProtoMessage() {}
+
+func (x *ListDynamicValueMappingsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListDynamicValueMappingsRequest.ProtoReflect.Descriptor instead.
+func (*ListDynamicValueMappingsRequest) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ListDynamicValueMappingsRequest) GetNamespaceId() string {
+ if x != nil {
+ return x.NamespaceId
+ }
+ return ""
+}
+
+func (x *ListDynamicValueMappingsRequest) GetNamespaceFqn() string {
+ if x != nil {
+ return x.NamespaceFqn
+ }
+ return ""
+}
+
+func (x *ListDynamicValueMappingsRequest) GetAttributeDefinitionId() string {
+ if x != nil {
+ return x.AttributeDefinitionId
+ }
+ return ""
+}
+
+func (x *ListDynamicValueMappingsRequest) GetPagination() *policy.PageRequest {
+ if x != nil {
+ return x.Pagination
+ }
+ return nil
+}
+
+func (x *ListDynamicValueMappingsRequest) GetSort() []*DynamicValueMappingsSort {
+ if x != nil {
+ return x.Sort
+ }
+ return nil
+}
+
+type ListDynamicValueMappingsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DynamicValueMappings []*policy.DynamicValueMapping `protobuf:"bytes,1,rep,name=dynamic_value_mappings,json=dynamicValueMappings,proto3" json:"dynamic_value_mappings,omitempty"`
+ Pagination *policy.PageResponse `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"`
+}
+
+func (x *ListDynamicValueMappingsResponse) Reset() {
+ *x = ListDynamicValueMappingsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListDynamicValueMappingsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListDynamicValueMappingsResponse) ProtoMessage() {}
+
+func (x *ListDynamicValueMappingsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[4]
+ 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 ListDynamicValueMappingsResponse.ProtoReflect.Descriptor instead.
+func (*ListDynamicValueMappingsResponse) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ListDynamicValueMappingsResponse) GetDynamicValueMappings() []*policy.DynamicValueMapping {
+ if x != nil {
+ return x.DynamicValueMappings
+ }
+ return nil
+}
+
+func (x *ListDynamicValueMappingsResponse) GetPagination() *policy.PageResponse {
+ if x != nil {
+ return x.Pagination
+ }
+ return nil
+}
+
+type CreateDynamicValueMappingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ AttributeDefinitionId string `protobuf:"bytes,1,opt,name=attribute_definition_id,json=attributeDefinitionId,proto3" json:"attribute_definition_id,omitempty"`
+ AttributeDefinitionFqn string `protobuf:"bytes,2,opt,name=attribute_definition_fqn,json=attributeDefinitionFqn,proto3" json:"attribute_definition_fqn,omitempty"`
+ // Required: the dynamic resolver comparing entity selector result to the resource value segment
+ ValueResolver *policy.DynamicValueResolver `protobuf:"bytes,3,opt,name=value_resolver,json=valueResolver,proto3" json:"value_resolver,omitempty"`
+ // Required: actions permitted on a matched value
+ Actions []*policy.Action `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+ // Optional static pre-gate. Reuse an existing SubjectConditionSet (prioritized) ...
+ ExistingSubjectConditionSetId string `protobuf:"bytes,5,opt,name=existing_subject_condition_set_id,json=existingSubjectConditionSetId,proto3" json:"existing_subject_condition_set_id,omitempty"`
+ // ... or create a new one (ignored if existing_subject_condition_set_id is provided)
+ NewSubjectConditionSet *subjectmapping.SubjectConditionSetCreate `protobuf:"bytes,6,opt,name=new_subject_condition_set,json=newSubjectConditionSet,proto3" json:"new_subject_condition_set,omitempty"`
+ // Optional: namespace ID or FQN for the mapping
+ NamespaceId string `protobuf:"bytes,7,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"`
+ NamespaceFqn string `protobuf:"bytes,8,opt,name=namespace_fqn,json=namespaceFqn,proto3" json:"namespace_fqn,omitempty"`
+ // Optional
+ Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"`
+}
+
+func (x *CreateDynamicValueMappingRequest) Reset() {
+ *x = CreateDynamicValueMappingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateDynamicValueMappingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateDynamicValueMappingRequest) ProtoMessage() {}
+
+func (x *CreateDynamicValueMappingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[5]
+ 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 CreateDynamicValueMappingRequest.ProtoReflect.Descriptor instead.
+func (*CreateDynamicValueMappingRequest) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *CreateDynamicValueMappingRequest) GetAttributeDefinitionId() string {
+ if x != nil {
+ return x.AttributeDefinitionId
+ }
+ return ""
+}
+
+func (x *CreateDynamicValueMappingRequest) GetAttributeDefinitionFqn() string {
+ if x != nil {
+ return x.AttributeDefinitionFqn
+ }
+ return ""
+}
+
+func (x *CreateDynamicValueMappingRequest) GetValueResolver() *policy.DynamicValueResolver {
+ if x != nil {
+ return x.ValueResolver
+ }
+ return nil
+}
+
+func (x *CreateDynamicValueMappingRequest) GetActions() []*policy.Action {
+ if x != nil {
+ return x.Actions
+ }
+ return nil
+}
+
+func (x *CreateDynamicValueMappingRequest) GetExistingSubjectConditionSetId() string {
+ if x != nil {
+ return x.ExistingSubjectConditionSetId
+ }
+ return ""
+}
+
+func (x *CreateDynamicValueMappingRequest) GetNewSubjectConditionSet() *subjectmapping.SubjectConditionSetCreate {
+ if x != nil {
+ return x.NewSubjectConditionSet
+ }
+ return nil
+}
+
+func (x *CreateDynamicValueMappingRequest) GetNamespaceId() string {
+ if x != nil {
+ return x.NamespaceId
+ }
+ return ""
+}
+
+func (x *CreateDynamicValueMappingRequest) GetNamespaceFqn() string {
+ if x != nil {
+ return x.NamespaceFqn
+ }
+ return ""
+}
+
+func (x *CreateDynamicValueMappingRequest) GetMetadata() *common.MetadataMutable {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+type CreateDynamicValueMappingResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DynamicValueMapping *policy.DynamicValueMapping `protobuf:"bytes,1,opt,name=dynamic_value_mapping,json=dynamicValueMapping,proto3" json:"dynamic_value_mapping,omitempty"`
+}
+
+func (x *CreateDynamicValueMappingResponse) Reset() {
+ *x = CreateDynamicValueMappingResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateDynamicValueMappingResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateDynamicValueMappingResponse) ProtoMessage() {}
+
+func (x *CreateDynamicValueMappingResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[6]
+ 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 CreateDynamicValueMappingResponse.ProtoReflect.Descriptor instead.
+func (*CreateDynamicValueMappingResponse) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *CreateDynamicValueMappingResponse) GetDynamicValueMapping() *policy.DynamicValueMapping {
+ if x != nil {
+ return x.DynamicValueMapping
+ }
+ return nil
+}
+
+type UpdateDynamicValueMappingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Optional: replace the dynamic resolver
+ ValueResolver *policy.DynamicValueResolver `protobuf:"bytes,2,opt,name=value_resolver,json=valueResolver,proto3" json:"value_resolver,omitempty"`
+ // Optional: replace the static pre-gate SubjectConditionSet by id
+ SubjectConditionSetId string `protobuf:"bytes,3,opt,name=subject_condition_set_id,json=subjectConditionSetId,proto3" json:"subject_condition_set_id,omitempty"`
+ // Optional: replace the entire list of actions
+ Actions []*policy.Action `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+ // Common metadata
+ Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ MetadataUpdateBehavior common.MetadataUpdateEnum `protobuf:"varint,101,opt,name=metadata_update_behavior,json=metadataUpdateBehavior,proto3,enum=common.MetadataUpdateEnum" json:"metadata_update_behavior,omitempty"`
+}
+
+func (x *UpdateDynamicValueMappingRequest) Reset() {
+ *x = UpdateDynamicValueMappingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateDynamicValueMappingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateDynamicValueMappingRequest) ProtoMessage() {}
+
+func (x *UpdateDynamicValueMappingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[7]
+ 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 UpdateDynamicValueMappingRequest.ProtoReflect.Descriptor instead.
+func (*UpdateDynamicValueMappingRequest) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *UpdateDynamicValueMappingRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *UpdateDynamicValueMappingRequest) GetValueResolver() *policy.DynamicValueResolver {
+ if x != nil {
+ return x.ValueResolver
+ }
+ return nil
+}
+
+func (x *UpdateDynamicValueMappingRequest) GetSubjectConditionSetId() string {
+ if x != nil {
+ return x.SubjectConditionSetId
+ }
+ return ""
+}
+
+func (x *UpdateDynamicValueMappingRequest) GetActions() []*policy.Action {
+ if x != nil {
+ return x.Actions
+ }
+ return nil
+}
+
+func (x *UpdateDynamicValueMappingRequest) GetMetadata() *common.MetadataMutable {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *UpdateDynamicValueMappingRequest) GetMetadataUpdateBehavior() common.MetadataUpdateEnum {
+ if x != nil {
+ return x.MetadataUpdateBehavior
+ }
+ return common.MetadataUpdateEnum(0)
+}
+
+type UpdateDynamicValueMappingResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DynamicValueMapping *policy.DynamicValueMapping `protobuf:"bytes,1,opt,name=dynamic_value_mapping,json=dynamicValueMapping,proto3" json:"dynamic_value_mapping,omitempty"`
+}
+
+func (x *UpdateDynamicValueMappingResponse) Reset() {
+ *x = UpdateDynamicValueMappingResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateDynamicValueMappingResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateDynamicValueMappingResponse) ProtoMessage() {}
+
+func (x *UpdateDynamicValueMappingResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[8]
+ 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 UpdateDynamicValueMappingResponse.ProtoReflect.Descriptor instead.
+func (*UpdateDynamicValueMappingResponse) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *UpdateDynamicValueMappingResponse) GetDynamicValueMapping() *policy.DynamicValueMapping {
+ if x != nil {
+ return x.DynamicValueMapping
+ }
+ return nil
+}
+
+type DeleteDynamicValueMappingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteDynamicValueMappingRequest) Reset() {
+ *x = DeleteDynamicValueMappingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteDynamicValueMappingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteDynamicValueMappingRequest) ProtoMessage() {}
+
+func (x *DeleteDynamicValueMappingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[9]
+ 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 DeleteDynamicValueMappingRequest.ProtoReflect.Descriptor instead.
+func (*DeleteDynamicValueMappingRequest) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *DeleteDynamicValueMappingRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type DeleteDynamicValueMappingResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Only ID of the deleted mapping provided
+ DynamicValueMapping *policy.DynamicValueMapping `protobuf:"bytes,1,opt,name=dynamic_value_mapping,json=dynamicValueMapping,proto3" json:"dynamic_value_mapping,omitempty"`
+}
+
+func (x *DeleteDynamicValueMappingResponse) Reset() {
+ *x = DeleteDynamicValueMappingResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteDynamicValueMappingResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteDynamicValueMappingResponse) ProtoMessage() {}
+
+func (x *DeleteDynamicValueMappingResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[10]
+ 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 DeleteDynamicValueMappingResponse.ProtoReflect.Descriptor instead.
+func (*DeleteDynamicValueMappingResponse) Descriptor() ([]byte, []int) {
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *DeleteDynamicValueMappingResponse) GetDynamicValueMapping() *policy.DynamicValueMapping {
+ if x != nil {
+ return x.DynamicValueMapping
+ }
+ return nil
+}
+
+var File_policy_dynamicvaluemapping_dynamic_value_mapping_proto protoreflect.FileDescriptor
+
+var file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDesc = []byte{
+ 0x0a, 0x36, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x79, 0x6e,
+ 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+ 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x73, 0x75, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x22, 0x39, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
+ 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x71, 0x0a, 0x1e,
+ 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f,
+ 0x0a, 0x15, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
+ 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22,
+ 0xb3, 0x01, 0x0a, 0x18, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x58, 0x0a, 0x05,
+ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x79, 0x6e,
+ 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52,
+ 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9d, 0x04, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba,
+ 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0xec, 0x01, 0x0a, 0x17, 0x61, 0x74, 0x74, 0x72,
+ 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0xba, 0x48, 0xaf, 0x01,
+ 0xba, 0x01, 0xab, 0x01, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75,
+ 0x75, 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x23, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20,
+ 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, 0x44, 0x1a,
+ 0x6e, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30,
+ 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
+ 0x28, 0x27, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x38, 0x7d,
+ 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d,
+ 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b,
+ 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30,
+ 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x27, 0x29, 0x52,
+ 0x15, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52,
+ 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x04, 0x73,
+ 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x3a,
+ 0x24, 0xba, 0x48, 0x21, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x5f, 0x69, 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x66, 0x71, 0x6e, 0x10, 0x00, 0x22, 0xab, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x16, 0x64, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70,
+ 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x34, 0x0a,
+ 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x22, 0x90, 0x08, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x17, 0x61, 0x74, 0x74, 0x72,
+ 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x15, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x44, 0x65,
+ 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x18, 0x61, 0x74,
+ 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48,
+ 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x16, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x71, 0x6e,
+ 0x12, 0x4b, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76,
+ 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65,
+ 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0d,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0xb8, 0x01,
+ 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x0e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42,
+ 0x8d, 0x01, 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x80, 0x01, 0x0a, 0x1b, 0x61, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6e, 0x6f,
+ 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x49, 0x44, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20,
+ 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20,
+ 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x1a, 0x30, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61,
+ 0x6c, 0x6c, 0x28, 0x69, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x6e, 0x61,
+ 0x6d, 0x65, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27, 0x20, 0x7c, 0x7c, 0x20, 0x69, 0x74, 0x65, 0x6d,
+ 0x2e, 0x69, 0x64, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27, 0x29, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52,
+ 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xfe, 0x01, 0x0a, 0x21, 0x65, 0x78, 0x69,
+ 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f,
+ 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0xba, 0x48, 0xaf, 0x01, 0xba, 0x01, 0xab, 0x01, 0x0a,
+ 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x66,
+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x23, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20,
+ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20,
+ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, 0x44, 0x1a, 0x6e, 0x73, 0x69, 0x7a, 0x65,
+ 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5b, 0x30, 0x2d,
+ 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39,
+ 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61,
+ 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d,
+ 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66,
+ 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x27, 0x29, 0x52, 0x1d, 0x65, 0x78, 0x69, 0x73,
+ 0x74, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x6b, 0x0a, 0x19, 0x6e, 0x65, 0x77,
+ 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x16,
+ 0x6e, 0x65, 0x77, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
+ 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72,
+ 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x46, 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52,
+ 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x5b, 0xba, 0x48, 0x58, 0x22, 0x35,
+ 0x0a, 0x17, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x0a, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69,
+ 0x62, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x5f, 0x69, 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x00, 0x22, 0x74, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70,
+ 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x15, 0x64,
+ 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0xc6, 0x05, 0x0a,
+ 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
+ 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x44, 0x79, 0x6e,
+ 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65,
+ 0x72, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72,
+ 0x12, 0xed, 0x01, 0x0a, 0x18, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0xba, 0x48, 0xaf, 0x01, 0xba, 0x01, 0xab, 0x01, 0x0a, 0x14,
+ 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x66, 0x6f,
+ 0x72, 0x6d, 0x61, 0x74, 0x12, 0x23, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66,
+ 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76,
+ 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, 0x44, 0x1a, 0x6e, 0x73, 0x69, 0x7a, 0x65, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5b, 0x30, 0x2d, 0x39,
+ 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61,
+ 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d,
+ 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66,
+ 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41,
+ 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x27, 0x29, 0x52, 0x15, 0x73, 0x75, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x64,
+ 0x12, 0xc7, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x42, 0x9c, 0x01, 0xba, 0x48, 0x98, 0x01, 0xba, 0x01, 0x94, 0x01, 0x0a, 0x1b, 0x61,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6f, 0x72, 0x5f, 0x69, 0x64,
+ 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x41, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x49, 0x44, 0x20, 0x6d, 0x75,
+ 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20,
+ 0x69, 0x66, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x1a, 0x44, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x7c, 0x7c,
+ 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6c, 0x6c, 0x28, 0x69, 0x74, 0x65, 0x6d, 0x2c, 0x20,
+ 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27, 0x20,
+ 0x7c, 0x7c, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x69, 0x64, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27,
+ 0x29, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68,
+ 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x74, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44,
+ 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x15, 0x64, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70,
+ 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x3c, 0x0a, 0x20, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x74, 0x0a, 0x21, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f,
+ 0x0a, 0x15, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
+ 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2a,
+ 0xb2, 0x01, 0x0a, 0x1c, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x79, 0x70, 0x65,
+ 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43,
+ 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x53, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d,
+ 0x49, 0x43, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47,
+ 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41,
+ 0x54, 0x10, 0x01, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x59, 0x4e, 0x41,
+ 0x4d, 0x49, 0x43, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e,
+ 0x47, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x5f,
+ 0x41, 0x54, 0x10, 0x02, 0x32, 0xa7, 0x06, 0x0a, 0x1a, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x12, 0x9a, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73,
+ 0x12, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
+ 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69,
+ 0x73, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44,
+ 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01,
+ 0x12, 0x94, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70,
+ 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x9a, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64,
+ 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e,
+ 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x00, 0x12, 0x9a, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44,
+ 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x12, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x3d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
+ 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x9a, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12,
+ 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x87,
+ 0x02, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x42, 0x18, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x42, 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, 0x64, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0xa2, 0x02, 0x03, 0x50, 0x44, 0x58, 0xaa, 0x02, 0x1a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x1a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x44, 0x79,
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0xe2, 0x02, 0x26, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x44, 0x79, 0x6e, 0x61, 0x6d,
+ 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5c, 0x47,
+ 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescOnce sync.Once
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescData = file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDesc
+)
+
+func file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescGZIP() []byte {
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescOnce.Do(func() {
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescData = protoimpl.X.CompressGZIP(file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescData)
+ })
+ return file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDescData
+}
+
+var file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
+var file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_goTypes = []interface{}{
+ (SortDynamicValueMappingsType)(0), // 0: policy.dynamicvaluemapping.SortDynamicValueMappingsType
+ (*GetDynamicValueMappingRequest)(nil), // 1: policy.dynamicvaluemapping.GetDynamicValueMappingRequest
+ (*GetDynamicValueMappingResponse)(nil), // 2: policy.dynamicvaluemapping.GetDynamicValueMappingResponse
+ (*DynamicValueMappingsSort)(nil), // 3: policy.dynamicvaluemapping.DynamicValueMappingsSort
+ (*ListDynamicValueMappingsRequest)(nil), // 4: policy.dynamicvaluemapping.ListDynamicValueMappingsRequest
+ (*ListDynamicValueMappingsResponse)(nil), // 5: policy.dynamicvaluemapping.ListDynamicValueMappingsResponse
+ (*CreateDynamicValueMappingRequest)(nil), // 6: policy.dynamicvaluemapping.CreateDynamicValueMappingRequest
+ (*CreateDynamicValueMappingResponse)(nil), // 7: policy.dynamicvaluemapping.CreateDynamicValueMappingResponse
+ (*UpdateDynamicValueMappingRequest)(nil), // 8: policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest
+ (*UpdateDynamicValueMappingResponse)(nil), // 9: policy.dynamicvaluemapping.UpdateDynamicValueMappingResponse
+ (*DeleteDynamicValueMappingRequest)(nil), // 10: policy.dynamicvaluemapping.DeleteDynamicValueMappingRequest
+ (*DeleteDynamicValueMappingResponse)(nil), // 11: policy.dynamicvaluemapping.DeleteDynamicValueMappingResponse
+ (*policy.DynamicValueMapping)(nil), // 12: policy.DynamicValueMapping
+ (policy.SortDirection)(0), // 13: policy.SortDirection
+ (*policy.PageRequest)(nil), // 14: policy.PageRequest
+ (*policy.PageResponse)(nil), // 15: policy.PageResponse
+ (*policy.DynamicValueResolver)(nil), // 16: policy.DynamicValueResolver
+ (*policy.Action)(nil), // 17: policy.Action
+ (*subjectmapping.SubjectConditionSetCreate)(nil), // 18: policy.subjectmapping.SubjectConditionSetCreate
+ (*common.MetadataMutable)(nil), // 19: common.MetadataMutable
+ (common.MetadataUpdateEnum)(0), // 20: common.MetadataUpdateEnum
+}
+var file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_depIdxs = []int32{
+ 12, // 0: policy.dynamicvaluemapping.GetDynamicValueMappingResponse.dynamic_value_mapping:type_name -> policy.DynamicValueMapping
+ 0, // 1: policy.dynamicvaluemapping.DynamicValueMappingsSort.field:type_name -> policy.dynamicvaluemapping.SortDynamicValueMappingsType
+ 13, // 2: policy.dynamicvaluemapping.DynamicValueMappingsSort.direction:type_name -> policy.SortDirection
+ 14, // 3: policy.dynamicvaluemapping.ListDynamicValueMappingsRequest.pagination:type_name -> policy.PageRequest
+ 3, // 4: policy.dynamicvaluemapping.ListDynamicValueMappingsRequest.sort:type_name -> policy.dynamicvaluemapping.DynamicValueMappingsSort
+ 12, // 5: policy.dynamicvaluemapping.ListDynamicValueMappingsResponse.dynamic_value_mappings:type_name -> policy.DynamicValueMapping
+ 15, // 6: policy.dynamicvaluemapping.ListDynamicValueMappingsResponse.pagination:type_name -> policy.PageResponse
+ 16, // 7: policy.dynamicvaluemapping.CreateDynamicValueMappingRequest.value_resolver:type_name -> policy.DynamicValueResolver
+ 17, // 8: policy.dynamicvaluemapping.CreateDynamicValueMappingRequest.actions:type_name -> policy.Action
+ 18, // 9: policy.dynamicvaluemapping.CreateDynamicValueMappingRequest.new_subject_condition_set:type_name -> policy.subjectmapping.SubjectConditionSetCreate
+ 19, // 10: policy.dynamicvaluemapping.CreateDynamicValueMappingRequest.metadata:type_name -> common.MetadataMutable
+ 12, // 11: policy.dynamicvaluemapping.CreateDynamicValueMappingResponse.dynamic_value_mapping:type_name -> policy.DynamicValueMapping
+ 16, // 12: policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest.value_resolver:type_name -> policy.DynamicValueResolver
+ 17, // 13: policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest.actions:type_name -> policy.Action
+ 19, // 14: policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest.metadata:type_name -> common.MetadataMutable
+ 20, // 15: policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 12, // 16: policy.dynamicvaluemapping.UpdateDynamicValueMappingResponse.dynamic_value_mapping:type_name -> policy.DynamicValueMapping
+ 12, // 17: policy.dynamicvaluemapping.DeleteDynamicValueMappingResponse.dynamic_value_mapping:type_name -> policy.DynamicValueMapping
+ 4, // 18: policy.dynamicvaluemapping.DynamicValueMappingService.ListDynamicValueMappings:input_type -> policy.dynamicvaluemapping.ListDynamicValueMappingsRequest
+ 1, // 19: policy.dynamicvaluemapping.DynamicValueMappingService.GetDynamicValueMapping:input_type -> policy.dynamicvaluemapping.GetDynamicValueMappingRequest
+ 6, // 20: policy.dynamicvaluemapping.DynamicValueMappingService.CreateDynamicValueMapping:input_type -> policy.dynamicvaluemapping.CreateDynamicValueMappingRequest
+ 8, // 21: policy.dynamicvaluemapping.DynamicValueMappingService.UpdateDynamicValueMapping:input_type -> policy.dynamicvaluemapping.UpdateDynamicValueMappingRequest
+ 10, // 22: policy.dynamicvaluemapping.DynamicValueMappingService.DeleteDynamicValueMapping:input_type -> policy.dynamicvaluemapping.DeleteDynamicValueMappingRequest
+ 5, // 23: policy.dynamicvaluemapping.DynamicValueMappingService.ListDynamicValueMappings:output_type -> policy.dynamicvaluemapping.ListDynamicValueMappingsResponse
+ 2, // 24: policy.dynamicvaluemapping.DynamicValueMappingService.GetDynamicValueMapping:output_type -> policy.dynamicvaluemapping.GetDynamicValueMappingResponse
+ 7, // 25: policy.dynamicvaluemapping.DynamicValueMappingService.CreateDynamicValueMapping:output_type -> policy.dynamicvaluemapping.CreateDynamicValueMappingResponse
+ 9, // 26: policy.dynamicvaluemapping.DynamicValueMappingService.UpdateDynamicValueMapping:output_type -> policy.dynamicvaluemapping.UpdateDynamicValueMappingResponse
+ 11, // 27: policy.dynamicvaluemapping.DynamicValueMappingService.DeleteDynamicValueMapping:output_type -> policy.dynamicvaluemapping.DeleteDynamicValueMappingResponse
+ 23, // [23:28] is the sub-list for method output_type
+ 18, // [18:23] is the sub-list for method input_type
+ 18, // [18:18] is the sub-list for extension type_name
+ 18, // [18:18] is the sub-list for extension extendee
+ 0, // [0:18] is the sub-list for field type_name
+}
+
+func init() { file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_init() }
+func file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_init() {
+ if File_policy_dynamicvaluemapping_dynamic_value_mapping_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetDynamicValueMappingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetDynamicValueMappingResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DynamicValueMappingsSort); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListDynamicValueMappingsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListDynamicValueMappingsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateDynamicValueMappingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateDynamicValueMappingResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateDynamicValueMappingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateDynamicValueMappingResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteDynamicValueMappingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteDynamicValueMappingResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 11,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_goTypes,
+ DependencyIndexes: file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_depIdxs,
+ EnumInfos: file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_enumTypes,
+ MessageInfos: file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_msgTypes,
+ }.Build()
+ File_policy_dynamicvaluemapping_dynamic_value_mapping_proto = out.File
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_rawDesc = nil
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_goTypes = nil
+ file_policy_dynamicvaluemapping_dynamic_value_mapping_proto_depIdxs = nil
+}
diff --git a/protocol/go/policy/dynamicvaluemapping/dynamic_value_mapping_grpc.pb.go b/protocol/go/policy/dynamicvaluemapping/dynamic_value_mapping_grpc.pb.go
new file mode 100644
index 0000000000..513595f0ef
--- /dev/null
+++ b/protocol/go/policy/dynamicvaluemapping/dynamic_value_mapping_grpc.pb.go
@@ -0,0 +1,258 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc (unknown)
+// source: policy/dynamicvaluemapping/dynamic_value_mapping.proto
+
+package dynamicvaluemapping
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ DynamicValueMappingService_ListDynamicValueMappings_FullMethodName = "/policy.dynamicvaluemapping.DynamicValueMappingService/ListDynamicValueMappings"
+ DynamicValueMappingService_GetDynamicValueMapping_FullMethodName = "/policy.dynamicvaluemapping.DynamicValueMappingService/GetDynamicValueMapping"
+ DynamicValueMappingService_CreateDynamicValueMapping_FullMethodName = "/policy.dynamicvaluemapping.DynamicValueMappingService/CreateDynamicValueMapping"
+ DynamicValueMappingService_UpdateDynamicValueMapping_FullMethodName = "/policy.dynamicvaluemapping.DynamicValueMappingService/UpdateDynamicValueMapping"
+ DynamicValueMappingService_DeleteDynamicValueMapping_FullMethodName = "/policy.dynamicvaluemapping.DynamicValueMappingService/DeleteDynamicValueMapping"
+)
+
+// DynamicValueMappingServiceClient is the client API for DynamicValueMappingService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type DynamicValueMappingServiceClient interface {
+ ListDynamicValueMappings(ctx context.Context, in *ListDynamicValueMappingsRequest, opts ...grpc.CallOption) (*ListDynamicValueMappingsResponse, error)
+ GetDynamicValueMapping(ctx context.Context, in *GetDynamicValueMappingRequest, opts ...grpc.CallOption) (*GetDynamicValueMappingResponse, error)
+ CreateDynamicValueMapping(ctx context.Context, in *CreateDynamicValueMappingRequest, opts ...grpc.CallOption) (*CreateDynamicValueMappingResponse, error)
+ UpdateDynamicValueMapping(ctx context.Context, in *UpdateDynamicValueMappingRequest, opts ...grpc.CallOption) (*UpdateDynamicValueMappingResponse, error)
+ DeleteDynamicValueMapping(ctx context.Context, in *DeleteDynamicValueMappingRequest, opts ...grpc.CallOption) (*DeleteDynamicValueMappingResponse, error)
+}
+
+type dynamicValueMappingServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewDynamicValueMappingServiceClient(cc grpc.ClientConnInterface) DynamicValueMappingServiceClient {
+ return &dynamicValueMappingServiceClient{cc}
+}
+
+func (c *dynamicValueMappingServiceClient) ListDynamicValueMappings(ctx context.Context, in *ListDynamicValueMappingsRequest, opts ...grpc.CallOption) (*ListDynamicValueMappingsResponse, error) {
+ out := new(ListDynamicValueMappingsResponse)
+ err := c.cc.Invoke(ctx, DynamicValueMappingService_ListDynamicValueMappings_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *dynamicValueMappingServiceClient) GetDynamicValueMapping(ctx context.Context, in *GetDynamicValueMappingRequest, opts ...grpc.CallOption) (*GetDynamicValueMappingResponse, error) {
+ out := new(GetDynamicValueMappingResponse)
+ err := c.cc.Invoke(ctx, DynamicValueMappingService_GetDynamicValueMapping_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *dynamicValueMappingServiceClient) CreateDynamicValueMapping(ctx context.Context, in *CreateDynamicValueMappingRequest, opts ...grpc.CallOption) (*CreateDynamicValueMappingResponse, error) {
+ out := new(CreateDynamicValueMappingResponse)
+ err := c.cc.Invoke(ctx, DynamicValueMappingService_CreateDynamicValueMapping_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *dynamicValueMappingServiceClient) UpdateDynamicValueMapping(ctx context.Context, in *UpdateDynamicValueMappingRequest, opts ...grpc.CallOption) (*UpdateDynamicValueMappingResponse, error) {
+ out := new(UpdateDynamicValueMappingResponse)
+ err := c.cc.Invoke(ctx, DynamicValueMappingService_UpdateDynamicValueMapping_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *dynamicValueMappingServiceClient) DeleteDynamicValueMapping(ctx context.Context, in *DeleteDynamicValueMappingRequest, opts ...grpc.CallOption) (*DeleteDynamicValueMappingResponse, error) {
+ out := new(DeleteDynamicValueMappingResponse)
+ err := c.cc.Invoke(ctx, DynamicValueMappingService_DeleteDynamicValueMapping_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// DynamicValueMappingServiceServer is the server API for DynamicValueMappingService service.
+// All implementations must embed UnimplementedDynamicValueMappingServiceServer
+// for forward compatibility
+type DynamicValueMappingServiceServer interface {
+ ListDynamicValueMappings(context.Context, *ListDynamicValueMappingsRequest) (*ListDynamicValueMappingsResponse, error)
+ GetDynamicValueMapping(context.Context, *GetDynamicValueMappingRequest) (*GetDynamicValueMappingResponse, error)
+ CreateDynamicValueMapping(context.Context, *CreateDynamicValueMappingRequest) (*CreateDynamicValueMappingResponse, error)
+ UpdateDynamicValueMapping(context.Context, *UpdateDynamicValueMappingRequest) (*UpdateDynamicValueMappingResponse, error)
+ DeleteDynamicValueMapping(context.Context, *DeleteDynamicValueMappingRequest) (*DeleteDynamicValueMappingResponse, error)
+ mustEmbedUnimplementedDynamicValueMappingServiceServer()
+}
+
+// UnimplementedDynamicValueMappingServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedDynamicValueMappingServiceServer struct {
+}
+
+func (UnimplementedDynamicValueMappingServiceServer) ListDynamicValueMappings(context.Context, *ListDynamicValueMappingsRequest) (*ListDynamicValueMappingsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListDynamicValueMappings not implemented")
+}
+func (UnimplementedDynamicValueMappingServiceServer) GetDynamicValueMapping(context.Context, *GetDynamicValueMappingRequest) (*GetDynamicValueMappingResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetDynamicValueMapping not implemented")
+}
+func (UnimplementedDynamicValueMappingServiceServer) CreateDynamicValueMapping(context.Context, *CreateDynamicValueMappingRequest) (*CreateDynamicValueMappingResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateDynamicValueMapping not implemented")
+}
+func (UnimplementedDynamicValueMappingServiceServer) UpdateDynamicValueMapping(context.Context, *UpdateDynamicValueMappingRequest) (*UpdateDynamicValueMappingResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method UpdateDynamicValueMapping not implemented")
+}
+func (UnimplementedDynamicValueMappingServiceServer) DeleteDynamicValueMapping(context.Context, *DeleteDynamicValueMappingRequest) (*DeleteDynamicValueMappingResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DeleteDynamicValueMapping not implemented")
+}
+func (UnimplementedDynamicValueMappingServiceServer) mustEmbedUnimplementedDynamicValueMappingServiceServer() {
+}
+
+// UnsafeDynamicValueMappingServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to DynamicValueMappingServiceServer will
+// result in compilation errors.
+type UnsafeDynamicValueMappingServiceServer interface {
+ mustEmbedUnimplementedDynamicValueMappingServiceServer()
+}
+
+func RegisterDynamicValueMappingServiceServer(s grpc.ServiceRegistrar, srv DynamicValueMappingServiceServer) {
+ s.RegisterService(&DynamicValueMappingService_ServiceDesc, srv)
+}
+
+func _DynamicValueMappingService_ListDynamicValueMappings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListDynamicValueMappingsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(DynamicValueMappingServiceServer).ListDynamicValueMappings(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: DynamicValueMappingService_ListDynamicValueMappings_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(DynamicValueMappingServiceServer).ListDynamicValueMappings(ctx, req.(*ListDynamicValueMappingsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _DynamicValueMappingService_GetDynamicValueMapping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetDynamicValueMappingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(DynamicValueMappingServiceServer).GetDynamicValueMapping(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: DynamicValueMappingService_GetDynamicValueMapping_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(DynamicValueMappingServiceServer).GetDynamicValueMapping(ctx, req.(*GetDynamicValueMappingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _DynamicValueMappingService_CreateDynamicValueMapping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateDynamicValueMappingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(DynamicValueMappingServiceServer).CreateDynamicValueMapping(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: DynamicValueMappingService_CreateDynamicValueMapping_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(DynamicValueMappingServiceServer).CreateDynamicValueMapping(ctx, req.(*CreateDynamicValueMappingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _DynamicValueMappingService_UpdateDynamicValueMapping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdateDynamicValueMappingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(DynamicValueMappingServiceServer).UpdateDynamicValueMapping(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: DynamicValueMappingService_UpdateDynamicValueMapping_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(DynamicValueMappingServiceServer).UpdateDynamicValueMapping(ctx, req.(*UpdateDynamicValueMappingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _DynamicValueMappingService_DeleteDynamicValueMapping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteDynamicValueMappingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(DynamicValueMappingServiceServer).DeleteDynamicValueMapping(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: DynamicValueMappingService_DeleteDynamicValueMapping_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(DynamicValueMappingServiceServer).DeleteDynamicValueMapping(ctx, req.(*DeleteDynamicValueMappingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// DynamicValueMappingService_ServiceDesc is the grpc.ServiceDesc for DynamicValueMappingService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var DynamicValueMappingService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "policy.dynamicvaluemapping.DynamicValueMappingService",
+ HandlerType: (*DynamicValueMappingServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ListDynamicValueMappings",
+ Handler: _DynamicValueMappingService_ListDynamicValueMappings_Handler,
+ },
+ {
+ MethodName: "GetDynamicValueMapping",
+ Handler: _DynamicValueMappingService_GetDynamicValueMapping_Handler,
+ },
+ {
+ MethodName: "CreateDynamicValueMapping",
+ Handler: _DynamicValueMappingService_CreateDynamicValueMapping_Handler,
+ },
+ {
+ MethodName: "UpdateDynamicValueMapping",
+ Handler: _DynamicValueMappingService_UpdateDynamicValueMapping_Handler,
+ },
+ {
+ MethodName: "DeleteDynamicValueMapping",
+ Handler: _DynamicValueMappingService_DeleteDynamicValueMapping_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "policy/dynamicvaluemapping/dynamic_value_mapping.proto",
+}
diff --git a/protocol/go/policy/dynamicvaluemapping/dynamicvaluemappingconnect/dynamic_value_mapping.connect.go b/protocol/go/policy/dynamicvaluemapping/dynamicvaluemappingconnect/dynamic_value_mapping.connect.go
new file mode 100644
index 0000000000..dfe90334f5
--- /dev/null
+++ b/protocol/go/policy/dynamicvaluemapping/dynamicvaluemappingconnect/dynamic_value_mapping.connect.go
@@ -0,0 +1,238 @@
+// Code generated by protoc-gen-connect-go. DO NOT EDIT.
+//
+// Source: policy/dynamicvaluemapping/dynamic_value_mapping.proto
+
+package dynamicvaluemappingconnect
+
+import (
+ connect "connectrpc.com/connect"
+ context "context"
+ errors "errors"
+ dynamicvaluemapping "github.com/opentdf/platform/protocol/go/policy/dynamicvaluemapping"
+ http "net/http"
+ strings "strings"
+)
+
+// This is a compile-time assertion to ensure that this generated file and the connect package are
+// compatible. If you get a compiler error that this constant is not defined, this code was
+// generated with a version of connect newer than the one compiled into your binary. You can fix the
+// problem by either regenerating this code with an older version of connect or updating the connect
+// version compiled into your binary.
+const _ = connect.IsAtLeastVersion1_13_0
+
+const (
+ // DynamicValueMappingServiceName is the fully-qualified name of the DynamicValueMappingService
+ // service.
+ DynamicValueMappingServiceName = "policy.dynamicvaluemapping.DynamicValueMappingService"
+)
+
+// These constants are the fully-qualified names of the RPCs defined in this package. They're
+// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.
+//
+// Note that these are different from the fully-qualified method names used by
+// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
+// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
+// period.
+const (
+ // DynamicValueMappingServiceListDynamicValueMappingsProcedure is the fully-qualified name of the
+ // DynamicValueMappingService's ListDynamicValueMappings RPC.
+ DynamicValueMappingServiceListDynamicValueMappingsProcedure = "/policy.dynamicvaluemapping.DynamicValueMappingService/ListDynamicValueMappings"
+ // DynamicValueMappingServiceGetDynamicValueMappingProcedure is the fully-qualified name of the
+ // DynamicValueMappingService's GetDynamicValueMapping RPC.
+ DynamicValueMappingServiceGetDynamicValueMappingProcedure = "/policy.dynamicvaluemapping.DynamicValueMappingService/GetDynamicValueMapping"
+ // DynamicValueMappingServiceCreateDynamicValueMappingProcedure is the fully-qualified name of the
+ // DynamicValueMappingService's CreateDynamicValueMapping RPC.
+ DynamicValueMappingServiceCreateDynamicValueMappingProcedure = "/policy.dynamicvaluemapping.DynamicValueMappingService/CreateDynamicValueMapping"
+ // DynamicValueMappingServiceUpdateDynamicValueMappingProcedure is the fully-qualified name of the
+ // DynamicValueMappingService's UpdateDynamicValueMapping RPC.
+ DynamicValueMappingServiceUpdateDynamicValueMappingProcedure = "/policy.dynamicvaluemapping.DynamicValueMappingService/UpdateDynamicValueMapping"
+ // DynamicValueMappingServiceDeleteDynamicValueMappingProcedure is the fully-qualified name of the
+ // DynamicValueMappingService's DeleteDynamicValueMapping RPC.
+ DynamicValueMappingServiceDeleteDynamicValueMappingProcedure = "/policy.dynamicvaluemapping.DynamicValueMappingService/DeleteDynamicValueMapping"
+)
+
+// DynamicValueMappingServiceClient is a client for the
+// policy.dynamicvaluemapping.DynamicValueMappingService service.
+type DynamicValueMappingServiceClient interface {
+ ListDynamicValueMappings(context.Context, *connect.Request[dynamicvaluemapping.ListDynamicValueMappingsRequest]) (*connect.Response[dynamicvaluemapping.ListDynamicValueMappingsResponse], error)
+ GetDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.GetDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.GetDynamicValueMappingResponse], error)
+ CreateDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.CreateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.CreateDynamicValueMappingResponse], error)
+ UpdateDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.UpdateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.UpdateDynamicValueMappingResponse], error)
+ DeleteDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.DeleteDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.DeleteDynamicValueMappingResponse], error)
+}
+
+// NewDynamicValueMappingServiceClient constructs a client for the
+// policy.dynamicvaluemapping.DynamicValueMappingService service. By default, it uses the Connect
+// protocol with the binary Protobuf Codec, asks for gzipped responses, and sends uncompressed
+// requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or
+// connect.WithGRPCWeb() options.
+//
+// The URL supplied here should be the base URL for the Connect or gRPC server (for example,
+// http://api.acme.com or https://acme.com/grpc).
+func NewDynamicValueMappingServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) DynamicValueMappingServiceClient {
+ baseURL = strings.TrimRight(baseURL, "/")
+ dynamicValueMappingServiceMethods := dynamicvaluemapping.File_policy_dynamicvaluemapping_dynamic_value_mapping_proto.Services().ByName("DynamicValueMappingService").Methods()
+ return &dynamicValueMappingServiceClient{
+ listDynamicValueMappings: connect.NewClient[dynamicvaluemapping.ListDynamicValueMappingsRequest, dynamicvaluemapping.ListDynamicValueMappingsResponse](
+ httpClient,
+ baseURL+DynamicValueMappingServiceListDynamicValueMappingsProcedure,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("ListDynamicValueMappings")),
+ connect.WithIdempotency(connect.IdempotencyNoSideEffects),
+ connect.WithClientOptions(opts...),
+ ),
+ getDynamicValueMapping: connect.NewClient[dynamicvaluemapping.GetDynamicValueMappingRequest, dynamicvaluemapping.GetDynamicValueMappingResponse](
+ httpClient,
+ baseURL+DynamicValueMappingServiceGetDynamicValueMappingProcedure,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("GetDynamicValueMapping")),
+ connect.WithIdempotency(connect.IdempotencyNoSideEffects),
+ connect.WithClientOptions(opts...),
+ ),
+ createDynamicValueMapping: connect.NewClient[dynamicvaluemapping.CreateDynamicValueMappingRequest, dynamicvaluemapping.CreateDynamicValueMappingResponse](
+ httpClient,
+ baseURL+DynamicValueMappingServiceCreateDynamicValueMappingProcedure,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("CreateDynamicValueMapping")),
+ connect.WithClientOptions(opts...),
+ ),
+ updateDynamicValueMapping: connect.NewClient[dynamicvaluemapping.UpdateDynamicValueMappingRequest, dynamicvaluemapping.UpdateDynamicValueMappingResponse](
+ httpClient,
+ baseURL+DynamicValueMappingServiceUpdateDynamicValueMappingProcedure,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("UpdateDynamicValueMapping")),
+ connect.WithClientOptions(opts...),
+ ),
+ deleteDynamicValueMapping: connect.NewClient[dynamicvaluemapping.DeleteDynamicValueMappingRequest, dynamicvaluemapping.DeleteDynamicValueMappingResponse](
+ httpClient,
+ baseURL+DynamicValueMappingServiceDeleteDynamicValueMappingProcedure,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("DeleteDynamicValueMapping")),
+ connect.WithClientOptions(opts...),
+ ),
+ }
+}
+
+// dynamicValueMappingServiceClient implements DynamicValueMappingServiceClient.
+type dynamicValueMappingServiceClient struct {
+ listDynamicValueMappings *connect.Client[dynamicvaluemapping.ListDynamicValueMappingsRequest, dynamicvaluemapping.ListDynamicValueMappingsResponse]
+ getDynamicValueMapping *connect.Client[dynamicvaluemapping.GetDynamicValueMappingRequest, dynamicvaluemapping.GetDynamicValueMappingResponse]
+ createDynamicValueMapping *connect.Client[dynamicvaluemapping.CreateDynamicValueMappingRequest, dynamicvaluemapping.CreateDynamicValueMappingResponse]
+ updateDynamicValueMapping *connect.Client[dynamicvaluemapping.UpdateDynamicValueMappingRequest, dynamicvaluemapping.UpdateDynamicValueMappingResponse]
+ deleteDynamicValueMapping *connect.Client[dynamicvaluemapping.DeleteDynamicValueMappingRequest, dynamicvaluemapping.DeleteDynamicValueMappingResponse]
+}
+
+// ListDynamicValueMappings calls
+// policy.dynamicvaluemapping.DynamicValueMappingService.ListDynamicValueMappings.
+func (c *dynamicValueMappingServiceClient) ListDynamicValueMappings(ctx context.Context, req *connect.Request[dynamicvaluemapping.ListDynamicValueMappingsRequest]) (*connect.Response[dynamicvaluemapping.ListDynamicValueMappingsResponse], error) {
+ return c.listDynamicValueMappings.CallUnary(ctx, req)
+}
+
+// GetDynamicValueMapping calls
+// policy.dynamicvaluemapping.DynamicValueMappingService.GetDynamicValueMapping.
+func (c *dynamicValueMappingServiceClient) GetDynamicValueMapping(ctx context.Context, req *connect.Request[dynamicvaluemapping.GetDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.GetDynamicValueMappingResponse], error) {
+ return c.getDynamicValueMapping.CallUnary(ctx, req)
+}
+
+// CreateDynamicValueMapping calls
+// policy.dynamicvaluemapping.DynamicValueMappingService.CreateDynamicValueMapping.
+func (c *dynamicValueMappingServiceClient) CreateDynamicValueMapping(ctx context.Context, req *connect.Request[dynamicvaluemapping.CreateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.CreateDynamicValueMappingResponse], error) {
+ return c.createDynamicValueMapping.CallUnary(ctx, req)
+}
+
+// UpdateDynamicValueMapping calls
+// policy.dynamicvaluemapping.DynamicValueMappingService.UpdateDynamicValueMapping.
+func (c *dynamicValueMappingServiceClient) UpdateDynamicValueMapping(ctx context.Context, req *connect.Request[dynamicvaluemapping.UpdateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.UpdateDynamicValueMappingResponse], error) {
+ return c.updateDynamicValueMapping.CallUnary(ctx, req)
+}
+
+// DeleteDynamicValueMapping calls
+// policy.dynamicvaluemapping.DynamicValueMappingService.DeleteDynamicValueMapping.
+func (c *dynamicValueMappingServiceClient) DeleteDynamicValueMapping(ctx context.Context, req *connect.Request[dynamicvaluemapping.DeleteDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.DeleteDynamicValueMappingResponse], error) {
+ return c.deleteDynamicValueMapping.CallUnary(ctx, req)
+}
+
+// DynamicValueMappingServiceHandler is an implementation of the
+// policy.dynamicvaluemapping.DynamicValueMappingService service.
+type DynamicValueMappingServiceHandler interface {
+ ListDynamicValueMappings(context.Context, *connect.Request[dynamicvaluemapping.ListDynamicValueMappingsRequest]) (*connect.Response[dynamicvaluemapping.ListDynamicValueMappingsResponse], error)
+ GetDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.GetDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.GetDynamicValueMappingResponse], error)
+ CreateDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.CreateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.CreateDynamicValueMappingResponse], error)
+ UpdateDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.UpdateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.UpdateDynamicValueMappingResponse], error)
+ DeleteDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.DeleteDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.DeleteDynamicValueMappingResponse], error)
+}
+
+// NewDynamicValueMappingServiceHandler builds an HTTP handler from the service implementation. It
+// returns the path on which to mount the handler and the handler itself.
+//
+// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf
+// and JSON codecs. They also support gzip compression.
+func NewDynamicValueMappingServiceHandler(svc DynamicValueMappingServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
+ dynamicValueMappingServiceMethods := dynamicvaluemapping.File_policy_dynamicvaluemapping_dynamic_value_mapping_proto.Services().ByName("DynamicValueMappingService").Methods()
+ dynamicValueMappingServiceListDynamicValueMappingsHandler := connect.NewUnaryHandler(
+ DynamicValueMappingServiceListDynamicValueMappingsProcedure,
+ svc.ListDynamicValueMappings,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("ListDynamicValueMappings")),
+ connect.WithIdempotency(connect.IdempotencyNoSideEffects),
+ connect.WithHandlerOptions(opts...),
+ )
+ dynamicValueMappingServiceGetDynamicValueMappingHandler := connect.NewUnaryHandler(
+ DynamicValueMappingServiceGetDynamicValueMappingProcedure,
+ svc.GetDynamicValueMapping,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("GetDynamicValueMapping")),
+ connect.WithIdempotency(connect.IdempotencyNoSideEffects),
+ connect.WithHandlerOptions(opts...),
+ )
+ dynamicValueMappingServiceCreateDynamicValueMappingHandler := connect.NewUnaryHandler(
+ DynamicValueMappingServiceCreateDynamicValueMappingProcedure,
+ svc.CreateDynamicValueMapping,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("CreateDynamicValueMapping")),
+ connect.WithHandlerOptions(opts...),
+ )
+ dynamicValueMappingServiceUpdateDynamicValueMappingHandler := connect.NewUnaryHandler(
+ DynamicValueMappingServiceUpdateDynamicValueMappingProcedure,
+ svc.UpdateDynamicValueMapping,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("UpdateDynamicValueMapping")),
+ connect.WithHandlerOptions(opts...),
+ )
+ dynamicValueMappingServiceDeleteDynamicValueMappingHandler := connect.NewUnaryHandler(
+ DynamicValueMappingServiceDeleteDynamicValueMappingProcedure,
+ svc.DeleteDynamicValueMapping,
+ connect.WithSchema(dynamicValueMappingServiceMethods.ByName("DeleteDynamicValueMapping")),
+ connect.WithHandlerOptions(opts...),
+ )
+ return "/policy.dynamicvaluemapping.DynamicValueMappingService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ switch r.URL.Path {
+ case DynamicValueMappingServiceListDynamicValueMappingsProcedure:
+ dynamicValueMappingServiceListDynamicValueMappingsHandler.ServeHTTP(w, r)
+ case DynamicValueMappingServiceGetDynamicValueMappingProcedure:
+ dynamicValueMappingServiceGetDynamicValueMappingHandler.ServeHTTP(w, r)
+ case DynamicValueMappingServiceCreateDynamicValueMappingProcedure:
+ dynamicValueMappingServiceCreateDynamicValueMappingHandler.ServeHTTP(w, r)
+ case DynamicValueMappingServiceUpdateDynamicValueMappingProcedure:
+ dynamicValueMappingServiceUpdateDynamicValueMappingHandler.ServeHTTP(w, r)
+ case DynamicValueMappingServiceDeleteDynamicValueMappingProcedure:
+ dynamicValueMappingServiceDeleteDynamicValueMappingHandler.ServeHTTP(w, r)
+ default:
+ http.NotFound(w, r)
+ }
+ })
+}
+
+// UnimplementedDynamicValueMappingServiceHandler returns CodeUnimplemented from all methods.
+type UnimplementedDynamicValueMappingServiceHandler struct{}
+
+func (UnimplementedDynamicValueMappingServiceHandler) ListDynamicValueMappings(context.Context, *connect.Request[dynamicvaluemapping.ListDynamicValueMappingsRequest]) (*connect.Response[dynamicvaluemapping.ListDynamicValueMappingsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.dynamicvaluemapping.DynamicValueMappingService.ListDynamicValueMappings is not implemented"))
+}
+
+func (UnimplementedDynamicValueMappingServiceHandler) GetDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.GetDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.GetDynamicValueMappingResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.dynamicvaluemapping.DynamicValueMappingService.GetDynamicValueMapping is not implemented"))
+}
+
+func (UnimplementedDynamicValueMappingServiceHandler) CreateDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.CreateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.CreateDynamicValueMappingResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.dynamicvaluemapping.DynamicValueMappingService.CreateDynamicValueMapping is not implemented"))
+}
+
+func (UnimplementedDynamicValueMappingServiceHandler) UpdateDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.UpdateDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.UpdateDynamicValueMappingResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.dynamicvaluemapping.DynamicValueMappingService.UpdateDynamicValueMapping is not implemented"))
+}
+
+func (UnimplementedDynamicValueMappingServiceHandler) DeleteDynamicValueMapping(context.Context, *connect.Request[dynamicvaluemapping.DeleteDynamicValueMappingRequest]) (*connect.Response[dynamicvaluemapping.DeleteDynamicValueMappingResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.dynamicvaluemapping.DynamicValueMappingService.DeleteDynamicValueMapping is not implemented"))
+}
diff --git a/protocol/go/policy/enums.gen.go b/protocol/go/policy/enums.gen.go
index 87bc32e7c8..795be75cc0 100644
--- a/protocol/go/policy/enums.gen.go
+++ b/protocol/go/policy/enums.gen.go
@@ -21,6 +21,30 @@ const (
OperatorInContains = SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS
)
+// Shorthand constants for ConditionComparisonOperatorEnum.
+//
+// Example:
+//
+// condition := &Condition{
+// SubjectExternalSelectorValue: ".email",
+// Comparison: ComparisonEndsWith,
+// Quantifier: QuantifierAny,
+// SubjectExternalValues: []string{"@example.com"},
+// }
+const (
+ ComparisonEquals = ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS
+ ComparisonContains = ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS
+ ComparisonStartsWith = ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH
+ ComparisonEndsWith = ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH
+)
+
+// Shorthand constants for ConditionQuantifierEnum.
+const (
+ QuantifierAny = ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ANY
+ QuantifierAll = ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ALL
+ QuantifierNone = ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_NONE
+)
+
// Shorthand constants for ConditionBooleanTypeEnum.
//
// Example:
diff --git a/protocol/go/policy/objects.pb.go b/protocol/go/policy/objects.pb.go
index 1e386a7531..e7f4f3eaed 100644
--- a/protocol/go/policy/objects.pb.go
+++ b/protocol/go/policy/objects.pb.go
@@ -180,6 +180,124 @@ func (ConditionBooleanTypeEnum) EnumDescriptor() ([]byte, []int) {
return file_policy_objects_proto_rawDescGZIP(), []int{2}
}
+// How a selector result is compared against a comparison value. Replaces the all-in-one
+// SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+// ConditionQuantifierEnum) and case sensitivity.
+type ConditionComparisonOperatorEnum int32
+
+const (
+ ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED ConditionComparisonOperatorEnum = 0
+ // exact string equality
+ ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS ConditionComparisonOperatorEnum = 1
+ // substring containment
+ ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS ConditionComparisonOperatorEnum = 2
+ // prefix match
+ ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH ConditionComparisonOperatorEnum = 3
+ // suffix match; the safe operator for domain matching (e.g. email domains)
+ ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH ConditionComparisonOperatorEnum = 4
+)
+
+// Enum value maps for ConditionComparisonOperatorEnum.
+var (
+ ConditionComparisonOperatorEnum_name = map[int32]string{
+ 0: "CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED",
+ 1: "CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS",
+ 2: "CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS",
+ 3: "CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH",
+ 4: "CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH",
+ }
+ ConditionComparisonOperatorEnum_value = map[string]int32{
+ "CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED": 0,
+ "CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS": 1,
+ "CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS": 2,
+ "CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH": 3,
+ "CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH": 4,
+ }
+)
+
+func (x ConditionComparisonOperatorEnum) Enum() *ConditionComparisonOperatorEnum {
+ p := new(ConditionComparisonOperatorEnum)
+ *p = x
+ return p
+}
+
+func (x ConditionComparisonOperatorEnum) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ConditionComparisonOperatorEnum) Descriptor() protoreflect.EnumDescriptor {
+ return file_policy_objects_proto_enumTypes[3].Descriptor()
+}
+
+func (ConditionComparisonOperatorEnum) Type() protoreflect.EnumType {
+ return &file_policy_objects_proto_enumTypes[3]
+}
+
+func (x ConditionComparisonOperatorEnum) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConditionComparisonOperatorEnum.Descriptor instead.
+func (ConditionComparisonOperatorEnum) EnumDescriptor() ([]byte, []int) {
+ return file_policy_objects_proto_rawDescGZIP(), []int{3}
+}
+
+// How matches are aggregated across the comparison set (subject_external_values).
+type ConditionQuantifierEnum int32
+
+const (
+ ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_UNSPECIFIED ConditionQuantifierEnum = 0
+ // at least one match (legacy IN behavior)
+ ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ANY ConditionQuantifierEnum = 1
+ // every expected value matches
+ ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_ALL ConditionQuantifierEnum = 2
+ // no matches (legacy NOT_IN behavior)
+ ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_NONE ConditionQuantifierEnum = 3
+)
+
+// Enum value maps for ConditionQuantifierEnum.
+var (
+ ConditionQuantifierEnum_name = map[int32]string{
+ 0: "CONDITION_QUANTIFIER_ENUM_UNSPECIFIED",
+ 1: "CONDITION_QUANTIFIER_ENUM_ANY",
+ 2: "CONDITION_QUANTIFIER_ENUM_ALL",
+ 3: "CONDITION_QUANTIFIER_ENUM_NONE",
+ }
+ ConditionQuantifierEnum_value = map[string]int32{
+ "CONDITION_QUANTIFIER_ENUM_UNSPECIFIED": 0,
+ "CONDITION_QUANTIFIER_ENUM_ANY": 1,
+ "CONDITION_QUANTIFIER_ENUM_ALL": 2,
+ "CONDITION_QUANTIFIER_ENUM_NONE": 3,
+ }
+)
+
+func (x ConditionQuantifierEnum) Enum() *ConditionQuantifierEnum {
+ p := new(ConditionQuantifierEnum)
+ *p = x
+ return p
+}
+
+func (x ConditionQuantifierEnum) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ConditionQuantifierEnum) Descriptor() protoreflect.EnumDescriptor {
+ return file_policy_objects_proto_enumTypes[4].Descriptor()
+}
+
+func (ConditionQuantifierEnum) Type() protoreflect.EnumType {
+ return &file_policy_objects_proto_enumTypes[4]
+}
+
+func (x ConditionQuantifierEnum) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConditionQuantifierEnum.Descriptor instead.
+func (ConditionQuantifierEnum) EnumDescriptor() ([]byte, []int) {
+ return file_policy_objects_proto_rawDescGZIP(), []int{4}
+}
+
// Describes whether this kas is managed by the organization or if they imported
// the kas information from an external party. These two modes are necessary in order
// to encrypt a tdf dek with an external parties kas public key.
@@ -218,11 +336,11 @@ func (x SourceType) String() string {
}
func (SourceType) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_objects_proto_enumTypes[3].Descriptor()
+ return file_policy_objects_proto_enumTypes[5].Descriptor()
}
func (SourceType) Type() protoreflect.EnumType {
- return &file_policy_objects_proto_enumTypes[3]
+ return &file_policy_objects_proto_enumTypes[5]
}
func (x SourceType) Number() protoreflect.EnumNumber {
@@ -231,7 +349,7 @@ func (x SourceType) Number() protoreflect.EnumNumber {
// Deprecated: Use SourceType.Descriptor instead.
func (SourceType) EnumDescriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{3}
+ return file_policy_objects_proto_rawDescGZIP(), []int{5}
}
type KasPublicKeyAlgEnum int32
@@ -285,11 +403,11 @@ func (x KasPublicKeyAlgEnum) String() string {
}
func (KasPublicKeyAlgEnum) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_objects_proto_enumTypes[4].Descriptor()
+ return file_policy_objects_proto_enumTypes[6].Descriptor()
}
func (KasPublicKeyAlgEnum) Type() protoreflect.EnumType {
- return &file_policy_objects_proto_enumTypes[4]
+ return &file_policy_objects_proto_enumTypes[6]
}
func (x KasPublicKeyAlgEnum) Number() protoreflect.EnumNumber {
@@ -298,7 +416,7 @@ func (x KasPublicKeyAlgEnum) Number() protoreflect.EnumNumber {
// Deprecated: Use KasPublicKeyAlgEnum.Descriptor instead.
func (KasPublicKeyAlgEnum) EnumDescriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{4}
+ return file_policy_objects_proto_rawDescGZIP(), []int{6}
}
// Supported key algorithms.
@@ -353,11 +471,11 @@ func (x Algorithm) String() string {
}
func (Algorithm) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_objects_proto_enumTypes[5].Descriptor()
+ return file_policy_objects_proto_enumTypes[7].Descriptor()
}
func (Algorithm) Type() protoreflect.EnumType {
- return &file_policy_objects_proto_enumTypes[5]
+ return &file_policy_objects_proto_enumTypes[7]
}
func (x Algorithm) Number() protoreflect.EnumNumber {
@@ -366,7 +484,7 @@ func (x Algorithm) Number() protoreflect.EnumNumber {
// Deprecated: Use Algorithm.Descriptor instead.
func (Algorithm) EnumDescriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{5}
+ return file_policy_objects_proto_rawDescGZIP(), []int{7}
}
// The status of the key
@@ -403,11 +521,11 @@ func (x KeyStatus) String() string {
}
func (KeyStatus) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_objects_proto_enumTypes[6].Descriptor()
+ return file_policy_objects_proto_enumTypes[8].Descriptor()
}
func (KeyStatus) Type() protoreflect.EnumType {
- return &file_policy_objects_proto_enumTypes[6]
+ return &file_policy_objects_proto_enumTypes[8]
}
func (x KeyStatus) Number() protoreflect.EnumNumber {
@@ -416,7 +534,7 @@ func (x KeyStatus) Number() protoreflect.EnumNumber {
// Deprecated: Use KeyStatus.Descriptor instead.
func (KeyStatus) EnumDescriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{6}
+ return file_policy_objects_proto_rawDescGZIP(), []int{8}
}
// Describes the management and operational mode of a cryptographic key.
@@ -472,11 +590,11 @@ func (x KeyMode) String() string {
}
func (KeyMode) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_objects_proto_enumTypes[7].Descriptor()
+ return file_policy_objects_proto_enumTypes[9].Descriptor()
}
func (KeyMode) Type() protoreflect.EnumType {
- return &file_policy_objects_proto_enumTypes[7]
+ return &file_policy_objects_proto_enumTypes[9]
}
func (x KeyMode) Number() protoreflect.EnumNumber {
@@ -485,7 +603,7 @@ func (x KeyMode) Number() protoreflect.EnumNumber {
// Deprecated: Use KeyMode.Descriptor instead.
func (KeyMode) EnumDescriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{7}
+ return file_policy_objects_proto_rawDescGZIP(), []int{9}
}
type Action_StandardAction int32
@@ -525,11 +643,11 @@ func (x Action_StandardAction) String() string {
}
func (Action_StandardAction) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_objects_proto_enumTypes[8].Descriptor()
+ return file_policy_objects_proto_enumTypes[10].Descriptor()
}
func (Action_StandardAction) Type() protoreflect.EnumType {
- return &file_policy_objects_proto_enumTypes[8]
+ return &file_policy_objects_proto_enumTypes[10]
}
func (x Action_StandardAction) Number() protoreflect.EnumNumber {
@@ -1331,6 +1449,186 @@ func (x *SubjectMapping) GetMetadata() *common.Metadata {
return nil
}
+// Dynamic Value Resolver: the dynamic half of a DynamicValueMapping. It resolves a selector
+// against the entity representation, then tests whether any resolved entity value matches the
+// requested resource value segment under comparison. The match is inherently existential over
+// the resolved entity values, so no quantifier is carried here.
+type DynamicValueResolver struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // a selector for a field value on a flattened Entity Representation (such as from
+ // idP/LDAP), e.g. ".patientAssignments[]"
+ SubjectExternalSelectorValue string `protobuf:"bytes,1,opt,name=subject_external_selector_value,json=subjectExternalSelectorValue,proto3" json:"subject_external_selector_value,omitempty"`
+ // how the requested resource value segment is compared against each value the selector
+ // resolves from the entity representation
+ Comparison ConditionComparisonOperatorEnum `protobuf:"varint,2,opt,name=comparison,proto3,enum=policy.ConditionComparisonOperatorEnum" json:"comparison,omitempty"`
+ // when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ // BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ CaseInsensitive *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=case_insensitive,json=caseInsensitive,proto3" json:"case_insensitive,omitempty"`
+}
+
+func (x *DynamicValueResolver) Reset() {
+ *x = DynamicValueResolver{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_objects_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DynamicValueResolver) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DynamicValueResolver) ProtoMessage() {}
+
+func (x *DynamicValueResolver) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_objects_proto_msgTypes[8]
+ 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 DynamicValueResolver.ProtoReflect.Descriptor instead.
+func (*DynamicValueResolver) Descriptor() ([]byte, []int) {
+ return file_policy_objects_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *DynamicValueResolver) GetSubjectExternalSelectorValue() string {
+ if x != nil {
+ return x.SubjectExternalSelectorValue
+ }
+ return ""
+}
+
+func (x *DynamicValueResolver) GetComparison() ConditionComparisonOperatorEnum {
+ if x != nil {
+ return x.Comparison
+ }
+ return ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+}
+
+func (x *DynamicValueResolver) GetCaseInsensitive() *wrapperspb.BoolValue {
+ if x != nil {
+ return x.CaseInsensitive
+ }
+ return nil
+}
+
+// Dynamic Value Mapping: a Policy assigning permitted action(s) to
+// dynamically-requested values under an Attribute Definition. It raises entitlement
+// authority from a concrete Attribute Value to the Attribute Definition: at decision time
+// the value_resolver compares the requested resource value segment against the entity
+// representation, avoiding pre-provisioning a value + subject mapping per discrete value.
+type DynamicValueMapping struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // the Attribute Definition whose values are entitled dynamically
+ AttributeDefinition *Attribute `protobuf:"bytes,2,opt,name=attribute_definition,json=attributeDefinition,proto3" json:"attribute_definition,omitempty"`
+ // the dynamic resolver matched against the requested resource value segment
+ ValueResolver *DynamicValueResolver `protobuf:"bytes,3,opt,name=value_resolver,json=valueResolver,proto3" json:"value_resolver,omitempty"`
+ // optional static pre-gate on the entity, evaluated with normal SubjectConditionSet
+ // semantics (no dynamic overload). When present, both the gate and the resolver must
+ // pass for entitlement.
+ SubjectConditionSet *SubjectConditionSet `protobuf:"bytes,4,opt,name=subject_condition_set,json=subjectConditionSet,proto3" json:"subject_condition_set,omitempty"`
+ // the actions permitted by subjects in this mapping
+ Actions []*Action `protobuf:"bytes,5,rep,name=actions,proto3" json:"actions,omitempty"`
+ // the namespace containing this mapping
+ Namespace *Namespace `protobuf:"bytes,6,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Metadata *common.Metadata `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"`
+}
+
+func (x *DynamicValueMapping) Reset() {
+ *x = DynamicValueMapping{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_objects_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DynamicValueMapping) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DynamicValueMapping) ProtoMessage() {}
+
+func (x *DynamicValueMapping) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_objects_proto_msgTypes[9]
+ 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 DynamicValueMapping.ProtoReflect.Descriptor instead.
+func (*DynamicValueMapping) Descriptor() ([]byte, []int) {
+ return file_policy_objects_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *DynamicValueMapping) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *DynamicValueMapping) GetAttributeDefinition() *Attribute {
+ if x != nil {
+ return x.AttributeDefinition
+ }
+ return nil
+}
+
+func (x *DynamicValueMapping) GetValueResolver() *DynamicValueResolver {
+ if x != nil {
+ return x.ValueResolver
+ }
+ return nil
+}
+
+func (x *DynamicValueMapping) GetSubjectConditionSet() *SubjectConditionSet {
+ if x != nil {
+ return x.SubjectConditionSet
+ }
+ return nil
+}
+
+func (x *DynamicValueMapping) GetActions() []*Action {
+ if x != nil {
+ return x.Actions
+ }
+ return nil
+}
+
+func (x *DynamicValueMapping) GetNamespace() *Namespace {
+ if x != nil {
+ return x.Namespace
+ }
+ return nil
+}
+
+func (x *DynamicValueMapping) GetMetadata() *common.Metadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
// *
// A Condition defines a rule of
@@ -1342,18 +1640,28 @@ type Condition struct {
// a selector for a field value on a flattened Entity Representation (such as
// from idP/LDAP)
SubjectExternalSelectorValue string `protobuf:"bytes,1,opt,name=subject_external_selector_value,json=subjectExternalSelectorValue,proto3" json:"subject_external_selector_value,omitempty"`
- // the evaluation operator of relation
+ // Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ // decomposed fields in the service layer for backward compatibility.
+ //
+ // Deprecated: Marked as deprecated in policy/objects.proto.
Operator SubjectMappingOperatorEnum `protobuf:"varint,2,opt,name=operator,proto3,enum=policy.SubjectMappingOperatorEnum" json:"operator,omitempty"`
// list of comparison values for the result of applying the
// subject_external_selector_value on a flattened Entity Representation
// (Subject), evaluated by the operator
SubjectExternalValues []string `protobuf:"bytes,3,rep,name=subject_external_values,json=subjectExternalValues,proto3" json:"subject_external_values,omitempty"`
+ // how each selector result is compared to subject_external_values entries
+ Comparison ConditionComparisonOperatorEnum `protobuf:"varint,4,opt,name=comparison,proto3,enum=policy.ConditionComparisonOperatorEnum" json:"comparison,omitempty"`
+ // how matches are aggregated across subject_external_values
+ Quantifier ConditionQuantifierEnum `protobuf:"varint,5,opt,name=quantifier,proto3,enum=policy.ConditionQuantifierEnum" json:"quantifier,omitempty"`
+ // when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ // BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ CaseInsensitive *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=case_insensitive,json=caseInsensitive,proto3" json:"case_insensitive,omitempty"`
}
func (x *Condition) Reset() {
*x = Condition{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[8]
+ mi := &file_policy_objects_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1366,7 +1674,7 @@ func (x *Condition) String() string {
func (*Condition) ProtoMessage() {}
func (x *Condition) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[8]
+ mi := &file_policy_objects_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1379,7 +1687,7 @@ func (x *Condition) ProtoReflect() protoreflect.Message {
// Deprecated: Use Condition.ProtoReflect.Descriptor instead.
func (*Condition) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{8}
+ return file_policy_objects_proto_rawDescGZIP(), []int{10}
}
func (x *Condition) GetSubjectExternalSelectorValue() string {
@@ -1389,6 +1697,7 @@ func (x *Condition) GetSubjectExternalSelectorValue() string {
return ""
}
+// Deprecated: Marked as deprecated in policy/objects.proto.
func (x *Condition) GetOperator() SubjectMappingOperatorEnum {
if x != nil {
return x.Operator
@@ -1403,6 +1712,27 @@ func (x *Condition) GetSubjectExternalValues() []string {
return nil
}
+func (x *Condition) GetComparison() ConditionComparisonOperatorEnum {
+ if x != nil {
+ return x.Comparison
+ }
+ return ConditionComparisonOperatorEnum_CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED
+}
+
+func (x *Condition) GetQuantifier() ConditionQuantifierEnum {
+ if x != nil {
+ return x.Quantifier
+ }
+ return ConditionQuantifierEnum_CONDITION_QUANTIFIER_ENUM_UNSPECIFIED
+}
+
+func (x *Condition) GetCaseInsensitive() *wrapperspb.BoolValue {
+ if x != nil {
+ return x.CaseInsensitive
+ }
+ return nil
+}
+
// A collection of Conditions evaluated by the boolean_operator provided
type ConditionGroup struct {
state protoimpl.MessageState
@@ -1417,7 +1747,7 @@ type ConditionGroup struct {
func (x *ConditionGroup) Reset() {
*x = ConditionGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[9]
+ mi := &file_policy_objects_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1430,7 +1760,7 @@ func (x *ConditionGroup) String() string {
func (*ConditionGroup) ProtoMessage() {}
func (x *ConditionGroup) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[9]
+ mi := &file_policy_objects_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1443,7 +1773,7 @@ func (x *ConditionGroup) ProtoReflect() protoreflect.Message {
// Deprecated: Use ConditionGroup.ProtoReflect.Descriptor instead.
func (*ConditionGroup) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{9}
+ return file_policy_objects_proto_rawDescGZIP(), []int{11}
}
func (x *ConditionGroup) GetConditions() []*Condition {
@@ -1473,7 +1803,7 @@ type SubjectSet struct {
func (x *SubjectSet) Reset() {
*x = SubjectSet{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[10]
+ mi := &file_policy_objects_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1486,7 +1816,7 @@ func (x *SubjectSet) String() string {
func (*SubjectSet) ProtoMessage() {}
func (x *SubjectSet) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[10]
+ mi := &file_policy_objects_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1499,7 +1829,7 @@ func (x *SubjectSet) ProtoReflect() protoreflect.Message {
// Deprecated: Use SubjectSet.ProtoReflect.Descriptor instead.
func (*SubjectSet) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{10}
+ return file_policy_objects_proto_rawDescGZIP(), []int{12}
}
func (x *SubjectSet) GetConditionGroups() []*ConditionGroup {
@@ -1531,7 +1861,7 @@ type SubjectConditionSet struct {
func (x *SubjectConditionSet) Reset() {
*x = SubjectConditionSet{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[11]
+ mi := &file_policy_objects_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1544,7 +1874,7 @@ func (x *SubjectConditionSet) String() string {
func (*SubjectConditionSet) ProtoMessage() {}
func (x *SubjectConditionSet) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[11]
+ mi := &file_policy_objects_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1557,7 +1887,7 @@ func (x *SubjectConditionSet) ProtoReflect() protoreflect.Message {
// Deprecated: Use SubjectConditionSet.ProtoReflect.Descriptor instead.
func (*SubjectConditionSet) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{11}
+ return file_policy_objects_proto_rawDescGZIP(), []int{13}
}
func (x *SubjectConditionSet) GetId() string {
@@ -1610,7 +1940,7 @@ type SubjectProperty struct {
func (x *SubjectProperty) Reset() {
*x = SubjectProperty{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[12]
+ mi := &file_policy_objects_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1623,7 +1953,7 @@ func (x *SubjectProperty) String() string {
func (*SubjectProperty) ProtoMessage() {}
func (x *SubjectProperty) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[12]
+ mi := &file_policy_objects_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1636,7 +1966,7 @@ func (x *SubjectProperty) ProtoReflect() protoreflect.Message {
// Deprecated: Use SubjectProperty.ProtoReflect.Descriptor instead.
func (*SubjectProperty) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{12}
+ return file_policy_objects_proto_rawDescGZIP(), []int{14}
}
func (x *SubjectProperty) GetExternalSelectorValue() string {
@@ -1675,7 +2005,7 @@ type ResourceMappingGroup struct {
func (x *ResourceMappingGroup) Reset() {
*x = ResourceMappingGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[13]
+ mi := &file_policy_objects_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1688,7 +2018,7 @@ func (x *ResourceMappingGroup) String() string {
func (*ResourceMappingGroup) ProtoMessage() {}
func (x *ResourceMappingGroup) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[13]
+ mi := &file_policy_objects_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1701,7 +2031,7 @@ func (x *ResourceMappingGroup) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResourceMappingGroup.ProtoReflect.Descriptor instead.
func (*ResourceMappingGroup) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{13}
+ return file_policy_objects_proto_rawDescGZIP(), []int{15}
}
func (x *ResourceMappingGroup) GetId() string {
@@ -1760,7 +2090,7 @@ type ResourceMapping struct {
func (x *ResourceMapping) Reset() {
*x = ResourceMapping{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[14]
+ mi := &file_policy_objects_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1773,7 +2103,7 @@ func (x *ResourceMapping) String() string {
func (*ResourceMapping) ProtoMessage() {}
func (x *ResourceMapping) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[14]
+ mi := &file_policy_objects_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1786,7 +2116,7 @@ func (x *ResourceMapping) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResourceMapping.ProtoReflect.Descriptor instead.
func (*ResourceMapping) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{14}
+ return file_policy_objects_proto_rawDescGZIP(), []int{16}
}
func (x *ResourceMapping) GetId() string {
@@ -1856,7 +2186,7 @@ type KeyAccessServer struct {
func (x *KeyAccessServer) Reset() {
*x = KeyAccessServer{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[15]
+ mi := &file_policy_objects_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1869,7 +2199,7 @@ func (x *KeyAccessServer) String() string {
func (*KeyAccessServer) ProtoMessage() {}
func (x *KeyAccessServer) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[15]
+ mi := &file_policy_objects_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1882,7 +2212,7 @@ func (x *KeyAccessServer) ProtoReflect() protoreflect.Message {
// Deprecated: Use KeyAccessServer.ProtoReflect.Descriptor instead.
func (*KeyAccessServer) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{15}
+ return file_policy_objects_proto_rawDescGZIP(), []int{17}
}
func (x *KeyAccessServer) GetId() string {
@@ -1952,7 +2282,7 @@ type Key struct {
func (x *Key) Reset() {
*x = Key{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[16]
+ mi := &file_policy_objects_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1965,7 +2295,7 @@ func (x *Key) String() string {
func (*Key) ProtoMessage() {}
func (x *Key) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[16]
+ mi := &file_policy_objects_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1978,7 +2308,7 @@ func (x *Key) ProtoReflect() protoreflect.Message {
// Deprecated: Use Key.ProtoReflect.Descriptor instead.
func (*Key) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{16}
+ return file_policy_objects_proto_rawDescGZIP(), []int{18}
}
func (x *Key) GetId() string {
@@ -2043,7 +2373,7 @@ type KasPublicKey struct {
func (x *KasPublicKey) Reset() {
*x = KasPublicKey{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[17]
+ mi := &file_policy_objects_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2056,7 +2386,7 @@ func (x *KasPublicKey) String() string {
func (*KasPublicKey) ProtoMessage() {}
func (x *KasPublicKey) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[17]
+ mi := &file_policy_objects_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2069,7 +2399,7 @@ func (x *KasPublicKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use KasPublicKey.ProtoReflect.Descriptor instead.
func (*KasPublicKey) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{17}
+ return file_policy_objects_proto_rawDescGZIP(), []int{19}
}
func (x *KasPublicKey) GetPem() string {
@@ -2106,7 +2436,7 @@ type KasPublicKeySet struct {
func (x *KasPublicKeySet) Reset() {
*x = KasPublicKeySet{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[18]
+ mi := &file_policy_objects_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2119,7 +2449,7 @@ func (x *KasPublicKeySet) String() string {
func (*KasPublicKeySet) ProtoMessage() {}
func (x *KasPublicKeySet) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[18]
+ mi := &file_policy_objects_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2132,7 +2462,7 @@ func (x *KasPublicKeySet) ProtoReflect() protoreflect.Message {
// Deprecated: Use KasPublicKeySet.ProtoReflect.Descriptor instead.
func (*KasPublicKeySet) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{18}
+ return file_policy_objects_proto_rawDescGZIP(), []int{20}
}
func (x *KasPublicKeySet) GetKeys() []*KasPublicKey {
@@ -2158,7 +2488,7 @@ type PublicKey struct {
func (x *PublicKey) Reset() {
*x = PublicKey{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[19]
+ mi := &file_policy_objects_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2171,7 +2501,7 @@ func (x *PublicKey) String() string {
func (*PublicKey) ProtoMessage() {}
func (x *PublicKey) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[19]
+ mi := &file_policy_objects_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2184,7 +2514,7 @@ func (x *PublicKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use PublicKey.ProtoReflect.Descriptor instead.
func (*PublicKey) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{19}
+ return file_policy_objects_proto_rawDescGZIP(), []int{21}
}
func (m *PublicKey) GetPublicKey() isPublicKey_PublicKey {
@@ -2242,7 +2572,7 @@ type RegisteredResource struct {
func (x *RegisteredResource) Reset() {
*x = RegisteredResource{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[20]
+ mi := &file_policy_objects_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2255,7 +2585,7 @@ func (x *RegisteredResource) String() string {
func (*RegisteredResource) ProtoMessage() {}
func (x *RegisteredResource) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[20]
+ mi := &file_policy_objects_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2268,7 +2598,7 @@ func (x *RegisteredResource) ProtoReflect() protoreflect.Message {
// Deprecated: Use RegisteredResource.ProtoReflect.Descriptor instead.
func (*RegisteredResource) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{20}
+ return file_policy_objects_proto_rawDescGZIP(), []int{22}
}
func (x *RegisteredResource) GetId() string {
@@ -2323,7 +2653,7 @@ type RegisteredResourceValue struct {
func (x *RegisteredResourceValue) Reset() {
*x = RegisteredResourceValue{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[21]
+ mi := &file_policy_objects_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2336,7 +2666,7 @@ func (x *RegisteredResourceValue) String() string {
func (*RegisteredResourceValue) ProtoMessage() {}
func (x *RegisteredResourceValue) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[21]
+ mi := &file_policy_objects_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2349,7 +2679,7 @@ func (x *RegisteredResourceValue) ProtoReflect() protoreflect.Message {
// Deprecated: Use RegisteredResourceValue.ProtoReflect.Descriptor instead.
func (*RegisteredResourceValue) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{21}
+ return file_policy_objects_proto_rawDescGZIP(), []int{23}
}
func (x *RegisteredResourceValue) GetId() string {
@@ -2405,7 +2735,7 @@ type PolicyEnforcementPoint struct {
func (x *PolicyEnforcementPoint) Reset() {
*x = PolicyEnforcementPoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[22]
+ mi := &file_policy_objects_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2418,7 +2748,7 @@ func (x *PolicyEnforcementPoint) String() string {
func (*PolicyEnforcementPoint) ProtoMessage() {}
func (x *PolicyEnforcementPoint) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[22]
+ mi := &file_policy_objects_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2431,7 +2761,7 @@ func (x *PolicyEnforcementPoint) ProtoReflect() protoreflect.Message {
// Deprecated: Use PolicyEnforcementPoint.ProtoReflect.Descriptor instead.
func (*PolicyEnforcementPoint) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{22}
+ return file_policy_objects_proto_rawDescGZIP(), []int{24}
}
func (x *PolicyEnforcementPoint) GetClientId() string {
@@ -2453,7 +2783,7 @@ type RequestContext struct {
func (x *RequestContext) Reset() {
*x = RequestContext{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[23]
+ mi := &file_policy_objects_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2466,7 +2796,7 @@ func (x *RequestContext) String() string {
func (*RequestContext) ProtoMessage() {}
func (x *RequestContext) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[23]
+ mi := &file_policy_objects_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2479,7 +2809,7 @@ func (x *RequestContext) ProtoReflect() protoreflect.Message {
// Deprecated: Use RequestContext.ProtoReflect.Descriptor instead.
func (*RequestContext) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{23}
+ return file_policy_objects_proto_rawDescGZIP(), []int{25}
}
func (x *RequestContext) GetPep() *PolicyEnforcementPoint {
@@ -2505,7 +2835,7 @@ type Obligation struct {
func (x *Obligation) Reset() {
*x = Obligation{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[24]
+ mi := &file_policy_objects_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2518,7 +2848,7 @@ func (x *Obligation) String() string {
func (*Obligation) ProtoMessage() {}
func (x *Obligation) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[24]
+ mi := &file_policy_objects_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2531,7 +2861,7 @@ func (x *Obligation) ProtoReflect() protoreflect.Message {
// Deprecated: Use Obligation.ProtoReflect.Descriptor instead.
func (*Obligation) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{24}
+ return file_policy_objects_proto_rawDescGZIP(), []int{26}
}
func (x *Obligation) GetId() string {
@@ -2592,7 +2922,7 @@ type ObligationValue struct {
func (x *ObligationValue) Reset() {
*x = ObligationValue{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[25]
+ mi := &file_policy_objects_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2605,7 +2935,7 @@ func (x *ObligationValue) String() string {
func (*ObligationValue) ProtoMessage() {}
func (x *ObligationValue) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[25]
+ mi := &file_policy_objects_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2618,7 +2948,7 @@ func (x *ObligationValue) ProtoReflect() protoreflect.Message {
// Deprecated: Use ObligationValue.ProtoReflect.Descriptor instead.
func (*ObligationValue) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{25}
+ return file_policy_objects_proto_rawDescGZIP(), []int{27}
}
func (x *ObligationValue) GetId() string {
@@ -2681,7 +3011,7 @@ type ObligationTrigger struct {
func (x *ObligationTrigger) Reset() {
*x = ObligationTrigger{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[26]
+ mi := &file_policy_objects_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2694,7 +3024,7 @@ func (x *ObligationTrigger) String() string {
func (*ObligationTrigger) ProtoMessage() {}
func (x *ObligationTrigger) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[26]
+ mi := &file_policy_objects_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2707,7 +3037,7 @@ func (x *ObligationTrigger) ProtoReflect() protoreflect.Message {
// Deprecated: Use ObligationTrigger.ProtoReflect.Descriptor instead.
func (*ObligationTrigger) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{26}
+ return file_policy_objects_proto_rawDescGZIP(), []int{28}
}
func (x *ObligationTrigger) GetId() string {
@@ -2772,7 +3102,7 @@ type KasKey struct {
func (x *KasKey) Reset() {
*x = KasKey{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[27]
+ mi := &file_policy_objects_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2785,7 +3115,7 @@ func (x *KasKey) String() string {
func (*KasKey) ProtoMessage() {}
func (x *KasKey) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[27]
+ mi := &file_policy_objects_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2798,7 +3128,7 @@ func (x *KasKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use KasKey.ProtoReflect.Descriptor instead.
func (*KasKey) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{27}
+ return file_policy_objects_proto_rawDescGZIP(), []int{29}
}
func (x *KasKey) GetKasId() string {
@@ -2834,7 +3164,7 @@ type PublicKeyCtx struct {
func (x *PublicKeyCtx) Reset() {
*x = PublicKeyCtx{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[28]
+ mi := &file_policy_objects_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2847,7 +3177,7 @@ func (x *PublicKeyCtx) String() string {
func (*PublicKeyCtx) ProtoMessage() {}
func (x *PublicKeyCtx) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[28]
+ mi := &file_policy_objects_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2860,7 +3190,7 @@ func (x *PublicKeyCtx) ProtoReflect() protoreflect.Message {
// Deprecated: Use PublicKeyCtx.ProtoReflect.Descriptor instead.
func (*PublicKeyCtx) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{28}
+ return file_policy_objects_proto_rawDescGZIP(), []int{30}
}
func (x *PublicKeyCtx) GetPem() string {
@@ -2884,7 +3214,7 @@ type PrivateKeyCtx struct {
func (x *PrivateKeyCtx) Reset() {
*x = PrivateKeyCtx{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[29]
+ mi := &file_policy_objects_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2897,7 +3227,7 @@ func (x *PrivateKeyCtx) String() string {
func (*PrivateKeyCtx) ProtoMessage() {}
func (x *PrivateKeyCtx) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[29]
+ mi := &file_policy_objects_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2910,7 +3240,7 @@ func (x *PrivateKeyCtx) ProtoReflect() protoreflect.Message {
// Deprecated: Use PrivateKeyCtx.ProtoReflect.Descriptor instead.
func (*PrivateKeyCtx) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{29}
+ return file_policy_objects_proto_rawDescGZIP(), []int{31}
}
func (x *PrivateKeyCtx) GetKeyId() string {
@@ -2957,7 +3287,7 @@ type AsymmetricKey struct {
func (x *AsymmetricKey) Reset() {
*x = AsymmetricKey{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[30]
+ mi := &file_policy_objects_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2970,7 +3300,7 @@ func (x *AsymmetricKey) String() string {
func (*AsymmetricKey) ProtoMessage() {}
func (x *AsymmetricKey) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[30]
+ mi := &file_policy_objects_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2983,7 +3313,7 @@ func (x *AsymmetricKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use AsymmetricKey.ProtoReflect.Descriptor instead.
func (*AsymmetricKey) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{30}
+ return file_policy_objects_proto_rawDescGZIP(), []int{32}
}
func (x *AsymmetricKey) GetId() string {
@@ -3074,7 +3404,7 @@ type SymmetricKey struct {
func (x *SymmetricKey) Reset() {
*x = SymmetricKey{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[31]
+ mi := &file_policy_objects_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3087,7 +3417,7 @@ func (x *SymmetricKey) String() string {
func (*SymmetricKey) ProtoMessage() {}
func (x *SymmetricKey) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[31]
+ mi := &file_policy_objects_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3100,7 +3430,7 @@ func (x *SymmetricKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use SymmetricKey.ProtoReflect.Descriptor instead.
func (*SymmetricKey) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{31}
+ return file_policy_objects_proto_rawDescGZIP(), []int{33}
}
func (x *SymmetricKey) GetId() string {
@@ -3167,7 +3497,7 @@ type RegisteredResourceValue_ActionAttributeValue struct {
func (x *RegisteredResourceValue_ActionAttributeValue) Reset() {
*x = RegisteredResourceValue_ActionAttributeValue{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_objects_proto_msgTypes[32]
+ mi := &file_policy_objects_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3180,7 +3510,7 @@ func (x *RegisteredResourceValue_ActionAttributeValue) String() string {
func (*RegisteredResourceValue_ActionAttributeValue) ProtoMessage() {}
func (x *RegisteredResourceValue_ActionAttributeValue) ProtoReflect() protoreflect.Message {
- mi := &file_policy_objects_proto_msgTypes[32]
+ mi := &file_policy_objects_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3193,7 +3523,7 @@ func (x *RegisteredResourceValue_ActionAttributeValue) ProtoReflect() protorefle
// Deprecated: Use RegisteredResourceValue_ActionAttributeValue.ProtoReflect.Descriptor instead.
func (*RegisteredResourceValue_ActionAttributeValue) Descriptor() ([]byte, []int) {
- return file_policy_objects_proto_rawDescGZIP(), []int{21, 0}
+ return file_policy_objects_proto_rawDescGZIP(), []int{23, 0}
}
func (x *RegisteredResourceValue_ActionAttributeValue) GetId() string {
@@ -3378,455 +3708,539 @@ var file_policy_objects_proto_rawDesc = []byte{
0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c,
0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe9, 0x01, 0x0a,
- 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x1f, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x1c, 0x73, 0x75, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x6f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70,
- 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x42,
- 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x17, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08,
- 0x01, 0x52, 0x15, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e,
- 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6e,
- 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3b, 0x0a, 0x0a, 0x63,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0a, 0x63, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x6c,
- 0x65, 0x61, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65,
- 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10,
- 0x01, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x6f, 0x72, 0x22, 0x59, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x74,
- 0x12, 0x4b, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0f, 0x63, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xc5, 0x01,
- 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x74,
- 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x17, 0x65, 0x78, 0x74, 0x65,
- 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01,
- 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x15, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e,
- 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x0c,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x22, 0x8a, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
- 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d,
- 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0xba,
- 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70,
- 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12,
+ 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x82, 0x02, 0x0a,
+ 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73,
+ 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x1f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x1c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45,
+ 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x12, 0x54, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61,
+ 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75,
+ 0x6d, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a,
+ 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x61,
+ 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x52, 0x0f, 0x63, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76,
+ 0x65, 0x22, 0x8a, 0x03, 0x0a, 0x13, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x14, 0x61, 0x74, 0x74,
+ 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x13, 0x61, 0x74, 0x74, 0x72,
+ 0x69, 0x62, 0x75, 0x74, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x43, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65,
+ 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73,
+ 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x6f,
+ 0x6c, 0x76, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x75, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74,
+ 0x52, 0x13, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x22, 0x85, 0x05, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x87, 0x03, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0xf4, 0x02, 0xba, 0x48, 0xf0, 0x02, 0xba, 0x01, 0xec, 0x02, 0x0a, 0x0a, 0x75,
- 0x72, 0x69, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xcf, 0x01, 0x55, 0x52, 0x49, 0x20,
- 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20,
- 0x55, 0x52, 0x4c, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70,
- 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x27, 0x29, 0x20,
- 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x64, 0x64, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e,
- 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75,
- 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64,
- 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75,
- 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c,
- 0x20, 0x63, 0x61, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x68, 0x79, 0x70,
- 0x68, 0x65, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72,
- 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61,
- 0x6e, 0x64, 0x20, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x2e, 0x1a, 0x8b, 0x01, 0x74, 0x68,
- 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3f, 0x3a, 0x2f, 0x2f, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39,
- 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d,
- 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39,
- 0x5d, 0x29, 0x3f, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d,
- 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d,
- 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d,
- 0x39, 0x5d, 0x29, 0x3f, 0x29, 0x2a, 0x28, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f,
- 0x28, 0x2f, 0x2e, 0x2a, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x30,
- 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x75, 0x62, 0x6c,
- 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
- 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6b, 0x61, 0x73, 0x5f, 0x6b, 0x65, 0x79,
- 0x73, 0x18, 0x05, 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, 0x07, 0x6b,
- 0x61, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x14,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08,
- 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x02, 0x0a, 0x03, 0x4b, 0x65, 0x79,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
- 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x77, 0x61, 0x73,
- 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x77, 0x61, 0x73, 0x4d, 0x61,
- 0x70, 0x70, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
- 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09,
- 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x6b, 0x61, 0x73,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
- 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52,
- 0x03, 0x6b, 0x61, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x22, 0x84, 0x01, 0x0a, 0x0c, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
- 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x03, 0x70, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x40, 0x52, 0x03, 0x70, 0x65,
- 0x6d, 0x12, 0x1b, 0x0a, 0x03, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09,
- 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x03, 0x6b, 0x69, 0x64, 0x12, 0x39,
- 0x0a, 0x03, 0x61, 0x6c, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
- 0x79, 0x41, 0x6c, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04,
- 0x10, 0x01, 0x20, 0x00, 0x52, 0x03, 0x61, 0x6c, 0x67, 0x22, 0x3b, 0x0a, 0x0f, 0x4b, 0x61, 0x73,
- 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04,
- 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
- 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0xe0, 0x03, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x4b, 0x65, 0x79, 0x12, 0x84, 0x03, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xe9, 0x02, 0xba, 0x48, 0xe5, 0x02, 0xba, 0x01, 0xe1, 0x02,
- 0x0a, 0x0a, 0x75, 0x72, 0x69, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xcf, 0x01, 0x55,
- 0x52, 0x49, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c,
- 0x69, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, 0x27, 0x68,
- 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x27, 0x29, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61,
- 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e,
- 0x74, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74,
- 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20,
- 0x65, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
- 0x65, 0x72, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20,
- 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75,
- 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73,
- 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x2e, 0x1a, 0x80,
- 0x01, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
- 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c,
- 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
- 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a,
- 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c,
- 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a,
- 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x29, 0x2a, 0x28, 0x2f, 0x2e, 0x2a, 0x29, 0x3f, 0x24, 0x27,
- 0x29, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63,
- 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
- 0x79, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x0c,
- 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x02,
- 0x10, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x22, 0xd0, 0x01, 0x0a, 0x12, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x0a,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c,
+ 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd0,
+ 0x03, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x1f,
+ 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+ 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x1c, 0x73,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x6f,
+ 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75,
+ 0x6d, 0x42, 0x0d, 0xba, 0x48, 0x08, 0xd8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x18, 0x01,
+ 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x17, 0x73, 0x75,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x15, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78,
+ 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x0a,
+ 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01,
+ 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12,
+ 0x49, 0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
+ 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a,
+ 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x61,
+ 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x52, 0x0f, 0x63, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76,
+ 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x58, 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f,
+ 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x0b, 0xba,
+ 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c,
+ 0x65, 0x61, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x59, 0x0a, 0x0a, 0x53,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x10, 0x63, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2f,
+ 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x3f, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01,
+ 0x02, 0x08, 0x01, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73,
+ 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7c,
+ 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+ 0x79, 0x12, 0x42, 0x0a, 0x17, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x15,
+ 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
+ 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65,
+ 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xad, 0x01, 0x0a,
+ 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03,
+ 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64,
+ 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03,
+ 0x66, 0x71, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x2c,
0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xdc, 0x03, 0x0a,
- 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36,
- 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41,
- 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x1a, 0xb4, 0x01, 0x0a, 0x14, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41,
- 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a,
- 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
- 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d,
- 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61,
- 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a,
+ 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8a, 0x02, 0x0a,
+ 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e,
+ 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e,
+ 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14,
+ 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74,
+ 0x65, 0x72, 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x85, 0x05, 0x0a, 0x0f, 0x4b, 0x65,
+ 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x87, 0x03,
+ 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xf4, 0x02, 0xba, 0x48,
+ 0xf0, 0x02, 0xba, 0x01, 0xec, 0x02, 0x0a, 0x0a, 0x75, 0x72, 0x69, 0x5f, 0x66, 0x6f, 0x72, 0x6d,
+ 0x61, 0x74, 0x12, 0xcf, 0x01, 0x55, 0x52, 0x49, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65,
+ 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x28, 0x65, 0x2e,
+ 0x67, 0x2e, 0x2c, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x65, 0x6d,
+ 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x27, 0x29, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20,
+ 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73,
+ 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61,
+ 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63,
+ 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x2c, 0x20, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6c, 0x61, 0x73,
+ 0x68, 0x65, 0x73, 0x2e, 0x1a, 0x8b, 0x01, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x2f, 0x2f, 0x5b,
+ 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41,
+ 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b,
+ 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x28, 0x5c, 0x5c, 0x2e,
+ 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a,
+ 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d,
+ 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x29, 0x2a, 0x28,
+ 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x28, 0x2f, 0x2e, 0x2a, 0x29, 0x3f, 0x24,
+ 0x27, 0x29, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69,
+ 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09,
+ 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
+ 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79,
+ 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f,
+ 0x0a, 0x08, 0x6b, 0x61, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x05, 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, 0x07, 0x6b, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
+ 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x22, 0x97, 0x02, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x5f,
+ 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
+ 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x77, 0x61, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x52, 0x09, 0x77, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x12, 0x33, 0x0a,
+ 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75,
+ 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
+ 0x65, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x6b, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x61, 0x73, 0x12, 0x2c, 0x0a,
0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x16, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74,
- 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10,
- 0x01, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x38, 0x0a,
- 0x03, 0x70, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63,
- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8,
- 0x01, 0x01, 0x52, 0x03, 0x70, 0x65, 0x70, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x84, 0x01, 0x0a, 0x0c,
+ 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x03,
+ 0x70, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05,
+ 0x10, 0x01, 0x18, 0x80, 0x40, 0x52, 0x03, 0x70, 0x65, 0x6d, 0x12, 0x1b, 0x0a, 0x03, 0x6b, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01,
+ 0x18, 0x20, 0x52, 0x03, 0x6b, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x03, 0x61, 0x6c, 0x67, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61,
+ 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x45, 0x6e, 0x75,
+ 0x6d, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x03, 0x61,
+ 0x6c, 0x67, 0x22, 0x3b, 0x0a, 0x0f, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
+ 0x65, 0x79, 0x53, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73,
+ 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22,
+ 0xe0, 0x03, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x84, 0x03,
+ 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xe9,
+ 0x02, 0xba, 0x48, 0xe5, 0x02, 0xba, 0x01, 0xe1, 0x02, 0x0a, 0x0a, 0x75, 0x72, 0x69, 0x5f, 0x66,
+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xcf, 0x01, 0x55, 0x52, 0x49, 0x20, 0x6d, 0x75, 0x73, 0x74,
+ 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20,
+ 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
+ 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x27, 0x29, 0x20, 0x66, 0x6f, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63,
+ 0x68, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69,
+ 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x63, 0x61, 0x6e,
+ 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73,
+ 0x2c, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63,
+ 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73,
+ 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x2e, 0x1a, 0x80, 0x01, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
+ 0x2f, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d,
+ 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31,
+ 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x28, 0x5c,
+ 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61,
+ 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36,
+ 0x31, 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x29,
+ 0x2a, 0x28, 0x2f, 0x2e, 0x2a, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65,
+ 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61,
+ 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52,
+ 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69,
+ 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x63,
+ 0x61, 0x6c, 0x22, 0xd0, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a,
+ 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03,
- 0x66, 0x71, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x2c,
- 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x01, 0x0a,
- 0x0f, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xdc, 0x03, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
+ 0x6c, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74,
+ 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x10, 0x0a,
+ 0x03, 0x66, 0x71, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12,
+ 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xb4, 0x01,
+ 0x0a, 0x14, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36,
+ 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x16, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e,
+ 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24,
+ 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x65, 0x70, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f,
+ 0x69, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x65, 0x70,
+ 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x01, 0x0a, 0x0f, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71,
+ 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x2c, 0x0a, 0x08,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd8, 0x02, 0x0a, 0x11, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x66, 0x71, 0x6e, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0xd8, 0x02, 0x0a, 0x11, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
- 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61, 0x74, 0x74,
- 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x63,
- 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e,
- 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c,
- 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x06,
- 0x4b, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x61, 0x73, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x61, 0x73, 0x49, 0x64, 0x12, 0x27, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x41, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4b, 0x65,
- 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x61, 0x73, 0x5f, 0x75, 0x72,
- 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x61, 0x73, 0x55, 0x72, 0x69, 0x22,
- 0x29, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12,
- 0x19, 0x0a, 0x03, 0x70, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48,
- 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x70, 0x65, 0x6d, 0x22, 0x50, 0x0a, 0x0d, 0x50, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12, 0x1e, 0x0a, 0x06, 0x6b,
- 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04,
- 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77,
- 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x22, 0xd1, 0x03, 0x0a,
- 0x0d, 0x41, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15,
- 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x6c, 0x67,
- 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52,
- 0x0c, 0x6b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x30, 0x0a,
- 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x6f,
- 0x64, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0e, 0x70,
- 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x74, 0x78, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x52, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12, 0x3d, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x74, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
- 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
- 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65,
- 0x67, 0x61, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x65, 0x67, 0x61,
- 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4b, 0x65,
- 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
- 0x09, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65,
- 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6b,
- 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x74,
- 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12,
+ 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0f,
+ 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x06, 0x4b, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x12,
+ 0x15, 0x0a, 0x06, 0x6b, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x6b, 0x61, 0x73, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x73, 0x79,
+ 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x17, 0x0a, 0x07, 0x6b, 0x61, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x6b, 0x61, 0x73, 0x55, 0x72, 0x69, 0x22, 0x29, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c,
+ 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12, 0x19, 0x0a, 0x03, 0x70, 0x65, 0x6d, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03,
+ 0x70, 0x65, 0x6d, 0x22, 0x50, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65,
+ 0x79, 0x43, 0x74, 0x78, 0x12, 0x1e, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6b,
+ 0x65, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f,
+ 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x72, 0x61, 0x70, 0x70,
+ 0x65, 0x64, 0x4b, 0x65, 0x79, 0x22, 0xd1, 0x03, 0x0a, 0x0d, 0x41, 0x73, 0x79, 0x6d, 0x6d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x36,
+ 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41,
+ 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x41, 0x6c, 0x67,
+ 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x30, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x6b,
+ 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f,
+ 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79,
+ 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
+ 0x65, 0x79, 0x5f, 0x63, 0x74, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43,
+ 0x74, 0x78, 0x52, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78,
+ 0x12, 0x3d, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f,
+ 0x63, 0x74, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78,
+ 0x52, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12,
0x42, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x2a, 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52,
- 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x24, 0x41,
- 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59,
- 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55,
- 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55,
- 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54,
- 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x12,
- 0x26, 0x0a, 0x22, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c,
- 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x49, 0x45, 0x52,
- 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03, 0x2a, 0xca, 0x01, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43,
- 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54,
- 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54,
- 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f,
- 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x53,
- 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f,
- 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x54,
- 0x5f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54,
- 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f,
- 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
- 0x4e, 0x53, 0x10, 0x03, 0x2a, 0x90, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75,
- 0x6d, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42,
- 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d,
+ 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,
+ 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x53, 0x79,
+ 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49,
+ 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b,
+ 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b,
+ 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12,
+ 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x74, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c,
+ 0x52, 0x06, 0x6b, 0x65, 0x79, 0x43, 0x74, 0x78, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x08,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2a, 0xb3, 0x01, 0x0a, 0x15, 0x41,
+ 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65,
+ 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54,
+ 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d,
0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23,
- 0x0a, 0x1f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c,
- 0x45, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e,
- 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e,
- 0x55, 0x4d, 0x5f, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x5d, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
- 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14,
- 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45,
- 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x2a, 0x9b, 0x03, 0x0a, 0x13, 0x4b, 0x61, 0x73, 0x50, 0x75,
- 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27,
- 0x0a, 0x23, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59,
- 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x4b, 0x41, 0x53, 0x5f, 0x50,
- 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e,
- 0x55, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x01, 0x12, 0x24, 0x0a,
- 0x20, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
- 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x34, 0x30, 0x39,
- 0x36, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49,
- 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45,
- 0x43, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x52, 0x31, 0x10, 0x05, 0x12, 0x28, 0x0a,
- 0x24, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
- 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x50,
- 0x33, 0x38, 0x34, 0x52, 0x31, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x41, 0x53, 0x5f, 0x50,
- 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e,
- 0x55, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x35, 0x32, 0x31, 0x52, 0x31, 0x10,
- 0x07, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f,
- 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x50, 0x51,
- 0x54, 0x5f, 0x58, 0x57, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x33, 0x0a, 0x2f, 0x4b, 0x41, 0x53,
+ 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x4f,
+ 0x46, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45,
+ 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
+ 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x54, 0x54, 0x52,
+ 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03,
+ 0x2a, 0xca, 0x01, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70,
+ 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+ 0x2d, 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49,
+ 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d,
+ 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24,
+ 0x0a, 0x20, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e,
+ 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
+ 0x49, 0x4e, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f,
+ 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52,
+ 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x2d,
+ 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e,
+ 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
+ 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x03, 0x2a, 0x90, 0x01,
+ 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x65,
+ 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4f,
+ 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
+ 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4f, 0x4e, 0x44, 0x49,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e,
+ 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41,
+ 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4f, 0x52, 0x10, 0x02,
+ 0x2a, 0x9b, 0x02, 0x0a, 0x1f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
+ 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45,
+ 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x43, 0x4f, 0x4e, 0x44,
+ 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e,
+ 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45,
+ 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x2f, 0x0a, 0x2b, 0x43, 0x4f, 0x4e, 0x44, 0x49,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f,
+ 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x43, 0x4f,
+ 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4f, 0x4e, 0x44,
+ 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e,
+ 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x53,
+ 0x54, 0x41, 0x52, 0x54, 0x53, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x10, 0x03, 0x12, 0x30, 0x0a, 0x2c,
+ 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52,
+ 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e,
+ 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x44, 0x53, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x10, 0x04, 0x2a, 0xae,
+ 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6e,
+ 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x4f,
+ 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4e, 0x54, 0x49, 0x46, 0x49,
+ 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x45, 0x4e,
+ 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4e, 0x44,
+ 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x45, 0x52,
+ 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x43,
+ 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4e, 0x54, 0x49, 0x46,
+ 0x49, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x2a,
+ 0x5d, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a,
+ 0x17, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x4f,
+ 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e,
+ 0x41, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x2a, 0x9b,
+ 0x03, 0x0a, 0x13, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x41,
+ 0x6c, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x23, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55,
+ 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55,
+ 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x24, 0x0a, 0x20, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45,
+ 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x32,
+ 0x30, 0x34, 0x38, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42,
+ 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d,
+ 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x4b,
+ 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c,
+ 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35,
+ 0x36, 0x52, 0x31, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42,
+ 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d,
+ 0x5f, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, 0x31, 0x10, 0x06, 0x12,
+ 0x28, 0x0a, 0x24, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45,
+ 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x53, 0x45,
+ 0x43, 0x50, 0x35, 0x32, 0x31, 0x52, 0x31, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x41, 0x53,
0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f,
- 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35,
- 0x36, 0x52, 0x31, 0x5f, 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x37, 0x36, 0x38, 0x10, 0x0b, 0x12, 0x34,
- 0x0a, 0x30, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59,
- 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53,
- 0x45, 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, 0x31, 0x5f, 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x31, 0x30,
- 0x32, 0x34, 0x10, 0x0c, 0x2a, 0x84, 0x02, 0x0a, 0x09, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74,
- 0x68, 0x6d, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f,
- 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a,
- 0x12, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x32,
- 0x30, 0x34, 0x38, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54,
- 0x48, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x02, 0x12, 0x15, 0x0a,
- 0x11, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x50, 0x32,
- 0x35, 0x36, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48,
- 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x50, 0x33, 0x38, 0x34, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x41,
- 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x50, 0x35, 0x32, 0x31,
- 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f,
- 0x48, 0x50, 0x51, 0x54, 0x5f, 0x58, 0x57, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21,
- 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53,
- 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x52, 0x31, 0x5f, 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x37, 0x36,
- 0x38, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d,
- 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, 0x31, 0x5f,
- 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x31, 0x30, 0x32, 0x34, 0x10, 0x08, 0x2a, 0x56, 0x0a, 0x09, 0x4b,
- 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
- 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54,
- 0x55, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4b,
- 0x45, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45,
- 0x44, 0x10, 0x02, 0x2a, 0x94, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12,
- 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
- 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x45, 0x59,
- 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x52, 0x4f, 0x4f,
- 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x45, 0x59, 0x5f, 0x4d,
- 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4f,
- 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x45, 0x59, 0x5f, 0x4d,
- 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18,
- 0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f,
- 0x4b, 0x45, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x42, 0x82, 0x01, 0x0a, 0x0a, 0x63,
- 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0c, 0x4f, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 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, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa,
- 0x02, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xca, 0x02, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0xe2, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62,
- 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x58, 0x57, 0x49, 0x4e, 0x47, 0x10,
+ 0x0a, 0x12, 0x33, 0x0a, 0x2f, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f,
+ 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x50, 0x51,
+ 0x54, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x52, 0x31, 0x5f, 0x4d, 0x4c, 0x4b, 0x45,
+ 0x4d, 0x37, 0x36, 0x38, 0x10, 0x0b, 0x12, 0x34, 0x0a, 0x30, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55,
+ 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55,
+ 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, 0x31,
+ 0x5f, 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0c, 0x2a, 0x84, 0x02, 0x0a,
+ 0x09, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x4c,
+ 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54,
+ 0x48, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x01, 0x12, 0x16, 0x0a,
+ 0x12, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x34,
+ 0x30, 0x39, 0x36, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54,
+ 0x48, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x50, 0x32, 0x35, 0x36, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11,
+ 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x50, 0x33, 0x38,
+ 0x34, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d,
+ 0x5f, 0x45, 0x43, 0x5f, 0x50, 0x35, 0x32, 0x31, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x4c,
+ 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x58, 0x57, 0x49,
+ 0x4e, 0x47, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48,
+ 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x52, 0x31,
+ 0x5f, 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x37, 0x36, 0x38, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x41,
+ 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x48, 0x50, 0x51, 0x54, 0x5f, 0x53, 0x45,
+ 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, 0x31, 0x5f, 0x4d, 0x4c, 0x4b, 0x45, 0x4d, 0x31, 0x30, 0x32,
+ 0x34, 0x10, 0x08, 0x2a, 0x56, 0x0a, 0x09, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x12, 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55,
+ 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11,
+ 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56,
+ 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x94, 0x01, 0x0a, 0x07,
+ 0x4b, 0x65, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x4d,
+ 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
+ 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f,
+ 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x01, 0x12,
+ 0x1e, 0x0a, 0x1a, 0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x56,
+ 0x49, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x02, 0x12,
+ 0x13, 0x0a, 0x0f, 0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f,
+ 0x54, 0x45, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45,
+ 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59,
+ 0x10, 0x04, 0x42, 0x82, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x42, 0x0c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
+ 0x01, 0x5a, 0x2e, 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, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0xca, 0x02, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xe2, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
+ 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3841,149 +4255,164 @@ func file_policy_objects_proto_rawDescGZIP() []byte {
return file_policy_objects_proto_rawDescData
}
-var file_policy_objects_proto_enumTypes = make([]protoimpl.EnumInfo, 9)
-var file_policy_objects_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
+var file_policy_objects_proto_enumTypes = make([]protoimpl.EnumInfo, 11)
+var file_policy_objects_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_policy_objects_proto_goTypes = []interface{}{
- (AttributeRuleTypeEnum)(0), // 0: policy.AttributeRuleTypeEnum
- (SubjectMappingOperatorEnum)(0), // 1: policy.SubjectMappingOperatorEnum
- (ConditionBooleanTypeEnum)(0), // 2: policy.ConditionBooleanTypeEnum
- (SourceType)(0), // 3: policy.SourceType
- (KasPublicKeyAlgEnum)(0), // 4: policy.KasPublicKeyAlgEnum
- (Algorithm)(0), // 5: policy.Algorithm
- (KeyStatus)(0), // 6: policy.KeyStatus
- (KeyMode)(0), // 7: policy.KeyMode
- (Action_StandardAction)(0), // 8: policy.Action.StandardAction
- (*SimpleKasPublicKey)(nil), // 9: policy.SimpleKasPublicKey
- (*SimpleKasKey)(nil), // 10: policy.SimpleKasKey
- (*KeyProviderConfig)(nil), // 11: policy.KeyProviderConfig
- (*Namespace)(nil), // 12: policy.Namespace
- (*Attribute)(nil), // 13: policy.Attribute
- (*Value)(nil), // 14: policy.Value
- (*Action)(nil), // 15: policy.Action
- (*SubjectMapping)(nil), // 16: policy.SubjectMapping
- (*Condition)(nil), // 17: policy.Condition
- (*ConditionGroup)(nil), // 18: policy.ConditionGroup
- (*SubjectSet)(nil), // 19: policy.SubjectSet
- (*SubjectConditionSet)(nil), // 20: policy.SubjectConditionSet
- (*SubjectProperty)(nil), // 21: policy.SubjectProperty
- (*ResourceMappingGroup)(nil), // 22: policy.ResourceMappingGroup
- (*ResourceMapping)(nil), // 23: policy.ResourceMapping
- (*KeyAccessServer)(nil), // 24: policy.KeyAccessServer
- (*Key)(nil), // 25: policy.Key
- (*KasPublicKey)(nil), // 26: policy.KasPublicKey
- (*KasPublicKeySet)(nil), // 27: policy.KasPublicKeySet
- (*PublicKey)(nil), // 28: policy.PublicKey
- (*RegisteredResource)(nil), // 29: policy.RegisteredResource
- (*RegisteredResourceValue)(nil), // 30: policy.RegisteredResourceValue
- (*PolicyEnforcementPoint)(nil), // 31: policy.PolicyEnforcementPoint
- (*RequestContext)(nil), // 32: policy.RequestContext
- (*Obligation)(nil), // 33: policy.Obligation
- (*ObligationValue)(nil), // 34: policy.ObligationValue
- (*ObligationTrigger)(nil), // 35: policy.ObligationTrigger
- (*KasKey)(nil), // 36: policy.KasKey
- (*PublicKeyCtx)(nil), // 37: policy.PublicKeyCtx
- (*PrivateKeyCtx)(nil), // 38: policy.PrivateKeyCtx
- (*AsymmetricKey)(nil), // 39: policy.AsymmetricKey
- (*SymmetricKey)(nil), // 40: policy.SymmetricKey
- (*RegisteredResourceValue_ActionAttributeValue)(nil), // 41: policy.RegisteredResourceValue.ActionAttributeValue
- (*common.Metadata)(nil), // 42: common.Metadata
- (*wrapperspb.BoolValue)(nil), // 43: google.protobuf.BoolValue
+ (AttributeRuleTypeEnum)(0), // 0: policy.AttributeRuleTypeEnum
+ (SubjectMappingOperatorEnum)(0), // 1: policy.SubjectMappingOperatorEnum
+ (ConditionBooleanTypeEnum)(0), // 2: policy.ConditionBooleanTypeEnum
+ (ConditionComparisonOperatorEnum)(0), // 3: policy.ConditionComparisonOperatorEnum
+ (ConditionQuantifierEnum)(0), // 4: policy.ConditionQuantifierEnum
+ (SourceType)(0), // 5: policy.SourceType
+ (KasPublicKeyAlgEnum)(0), // 6: policy.KasPublicKeyAlgEnum
+ (Algorithm)(0), // 7: policy.Algorithm
+ (KeyStatus)(0), // 8: policy.KeyStatus
+ (KeyMode)(0), // 9: policy.KeyMode
+ (Action_StandardAction)(0), // 10: policy.Action.StandardAction
+ (*SimpleKasPublicKey)(nil), // 11: policy.SimpleKasPublicKey
+ (*SimpleKasKey)(nil), // 12: policy.SimpleKasKey
+ (*KeyProviderConfig)(nil), // 13: policy.KeyProviderConfig
+ (*Namespace)(nil), // 14: policy.Namespace
+ (*Attribute)(nil), // 15: policy.Attribute
+ (*Value)(nil), // 16: policy.Value
+ (*Action)(nil), // 17: policy.Action
+ (*SubjectMapping)(nil), // 18: policy.SubjectMapping
+ (*DynamicValueResolver)(nil), // 19: policy.DynamicValueResolver
+ (*DynamicValueMapping)(nil), // 20: policy.DynamicValueMapping
+ (*Condition)(nil), // 21: policy.Condition
+ (*ConditionGroup)(nil), // 22: policy.ConditionGroup
+ (*SubjectSet)(nil), // 23: policy.SubjectSet
+ (*SubjectConditionSet)(nil), // 24: policy.SubjectConditionSet
+ (*SubjectProperty)(nil), // 25: policy.SubjectProperty
+ (*ResourceMappingGroup)(nil), // 26: policy.ResourceMappingGroup
+ (*ResourceMapping)(nil), // 27: policy.ResourceMapping
+ (*KeyAccessServer)(nil), // 28: policy.KeyAccessServer
+ (*Key)(nil), // 29: policy.Key
+ (*KasPublicKey)(nil), // 30: policy.KasPublicKey
+ (*KasPublicKeySet)(nil), // 31: policy.KasPublicKeySet
+ (*PublicKey)(nil), // 32: policy.PublicKey
+ (*RegisteredResource)(nil), // 33: policy.RegisteredResource
+ (*RegisteredResourceValue)(nil), // 34: policy.RegisteredResourceValue
+ (*PolicyEnforcementPoint)(nil), // 35: policy.PolicyEnforcementPoint
+ (*RequestContext)(nil), // 36: policy.RequestContext
+ (*Obligation)(nil), // 37: policy.Obligation
+ (*ObligationValue)(nil), // 38: policy.ObligationValue
+ (*ObligationTrigger)(nil), // 39: policy.ObligationTrigger
+ (*KasKey)(nil), // 40: policy.KasKey
+ (*PublicKeyCtx)(nil), // 41: policy.PublicKeyCtx
+ (*PrivateKeyCtx)(nil), // 42: policy.PrivateKeyCtx
+ (*AsymmetricKey)(nil), // 43: policy.AsymmetricKey
+ (*SymmetricKey)(nil), // 44: policy.SymmetricKey
+ (*RegisteredResourceValue_ActionAttributeValue)(nil), // 45: policy.RegisteredResourceValue.ActionAttributeValue
+ (*common.Metadata)(nil), // 46: common.Metadata
+ (*wrapperspb.BoolValue)(nil), // 47: google.protobuf.BoolValue
}
var file_policy_objects_proto_depIdxs = []int32{
- 5, // 0: policy.SimpleKasPublicKey.algorithm:type_name -> policy.Algorithm
- 9, // 1: policy.SimpleKasKey.public_key:type_name -> policy.SimpleKasPublicKey
- 42, // 2: policy.KeyProviderConfig.metadata:type_name -> common.Metadata
- 43, // 3: policy.Namespace.active:type_name -> google.protobuf.BoolValue
- 42, // 4: policy.Namespace.metadata:type_name -> common.Metadata
- 24, // 5: policy.Namespace.grants:type_name -> policy.KeyAccessServer
- 10, // 6: policy.Namespace.kas_keys:type_name -> policy.SimpleKasKey
- 12, // 7: policy.Attribute.namespace:type_name -> policy.Namespace
- 0, // 8: policy.Attribute.rule:type_name -> policy.AttributeRuleTypeEnum
- 14, // 9: policy.Attribute.values:type_name -> policy.Value
- 24, // 10: policy.Attribute.grants:type_name -> policy.KeyAccessServer
- 43, // 11: policy.Attribute.active:type_name -> google.protobuf.BoolValue
- 10, // 12: policy.Attribute.kas_keys:type_name -> policy.SimpleKasKey
- 43, // 13: policy.Attribute.allow_traversal:type_name -> google.protobuf.BoolValue
- 42, // 14: policy.Attribute.metadata:type_name -> common.Metadata
- 13, // 15: policy.Value.attribute:type_name -> policy.Attribute
- 24, // 16: policy.Value.grants:type_name -> policy.KeyAccessServer
- 43, // 17: policy.Value.active:type_name -> google.protobuf.BoolValue
- 16, // 18: policy.Value.subject_mappings:type_name -> policy.SubjectMapping
- 10, // 19: policy.Value.kas_keys:type_name -> policy.SimpleKasKey
- 23, // 20: policy.Value.resource_mappings:type_name -> policy.ResourceMapping
- 33, // 21: policy.Value.obligations:type_name -> policy.Obligation
- 42, // 22: policy.Value.metadata:type_name -> common.Metadata
- 8, // 23: policy.Action.standard:type_name -> policy.Action.StandardAction
- 12, // 24: policy.Action.namespace:type_name -> policy.Namespace
- 42, // 25: policy.Action.metadata:type_name -> common.Metadata
- 14, // 26: policy.SubjectMapping.attribute_value:type_name -> policy.Value
- 20, // 27: policy.SubjectMapping.subject_condition_set:type_name -> policy.SubjectConditionSet
- 15, // 28: policy.SubjectMapping.actions:type_name -> policy.Action
- 12, // 29: policy.SubjectMapping.namespace:type_name -> policy.Namespace
- 42, // 30: policy.SubjectMapping.metadata:type_name -> common.Metadata
- 1, // 31: policy.Condition.operator:type_name -> policy.SubjectMappingOperatorEnum
- 17, // 32: policy.ConditionGroup.conditions:type_name -> policy.Condition
- 2, // 33: policy.ConditionGroup.boolean_operator:type_name -> policy.ConditionBooleanTypeEnum
- 18, // 34: policy.SubjectSet.condition_groups:type_name -> policy.ConditionGroup
- 12, // 35: policy.SubjectConditionSet.namespace:type_name -> policy.Namespace
- 19, // 36: policy.SubjectConditionSet.subject_sets:type_name -> policy.SubjectSet
- 42, // 37: policy.SubjectConditionSet.metadata:type_name -> common.Metadata
- 42, // 38: policy.ResourceMappingGroup.metadata:type_name -> common.Metadata
- 42, // 39: policy.ResourceMapping.metadata:type_name -> common.Metadata
- 14, // 40: policy.ResourceMapping.attribute_value:type_name -> policy.Value
- 22, // 41: policy.ResourceMapping.group:type_name -> policy.ResourceMappingGroup
- 12, // 42: policy.ResourceMapping.namespace:type_name -> policy.Namespace
- 28, // 43: policy.KeyAccessServer.public_key:type_name -> policy.PublicKey
- 3, // 44: policy.KeyAccessServer.source_type:type_name -> policy.SourceType
- 10, // 45: policy.KeyAccessServer.kas_keys:type_name -> policy.SimpleKasKey
- 42, // 46: policy.KeyAccessServer.metadata:type_name -> common.Metadata
- 43, // 47: policy.Key.is_active:type_name -> google.protobuf.BoolValue
- 43, // 48: policy.Key.was_mapped:type_name -> google.protobuf.BoolValue
- 26, // 49: policy.Key.public_key:type_name -> policy.KasPublicKey
- 24, // 50: policy.Key.kas:type_name -> policy.KeyAccessServer
- 42, // 51: policy.Key.metadata:type_name -> common.Metadata
- 4, // 52: policy.KasPublicKey.alg:type_name -> policy.KasPublicKeyAlgEnum
- 26, // 53: policy.KasPublicKeySet.keys:type_name -> policy.KasPublicKey
- 27, // 54: policy.PublicKey.cached:type_name -> policy.KasPublicKeySet
- 30, // 55: policy.RegisteredResource.values:type_name -> policy.RegisteredResourceValue
- 12, // 56: policy.RegisteredResource.namespace:type_name -> policy.Namespace
- 42, // 57: policy.RegisteredResource.metadata:type_name -> common.Metadata
- 29, // 58: policy.RegisteredResourceValue.resource:type_name -> policy.RegisteredResource
- 41, // 59: policy.RegisteredResourceValue.action_attribute_values:type_name -> policy.RegisteredResourceValue.ActionAttributeValue
- 42, // 60: policy.RegisteredResourceValue.metadata:type_name -> common.Metadata
- 31, // 61: policy.RequestContext.pep:type_name -> policy.PolicyEnforcementPoint
- 12, // 62: policy.Obligation.namespace:type_name -> policy.Namespace
- 34, // 63: policy.Obligation.values:type_name -> policy.ObligationValue
- 42, // 64: policy.Obligation.metadata:type_name -> common.Metadata
- 33, // 65: policy.ObligationValue.obligation:type_name -> policy.Obligation
- 35, // 66: policy.ObligationValue.triggers:type_name -> policy.ObligationTrigger
- 42, // 67: policy.ObligationValue.metadata:type_name -> common.Metadata
- 34, // 68: policy.ObligationTrigger.obligation_value:type_name -> policy.ObligationValue
- 15, // 69: policy.ObligationTrigger.action:type_name -> policy.Action
- 14, // 70: policy.ObligationTrigger.attribute_value:type_name -> policy.Value
- 32, // 71: policy.ObligationTrigger.context:type_name -> policy.RequestContext
- 12, // 72: policy.ObligationTrigger.namespace:type_name -> policy.Namespace
- 42, // 73: policy.ObligationTrigger.metadata:type_name -> common.Metadata
- 39, // 74: policy.KasKey.key:type_name -> policy.AsymmetricKey
- 5, // 75: policy.AsymmetricKey.key_algorithm:type_name -> policy.Algorithm
- 6, // 76: policy.AsymmetricKey.key_status:type_name -> policy.KeyStatus
- 7, // 77: policy.AsymmetricKey.key_mode:type_name -> policy.KeyMode
- 37, // 78: policy.AsymmetricKey.public_key_ctx:type_name -> policy.PublicKeyCtx
- 38, // 79: policy.AsymmetricKey.private_key_ctx:type_name -> policy.PrivateKeyCtx
- 11, // 80: policy.AsymmetricKey.provider_config:type_name -> policy.KeyProviderConfig
- 42, // 81: policy.AsymmetricKey.metadata:type_name -> common.Metadata
- 6, // 82: policy.SymmetricKey.key_status:type_name -> policy.KeyStatus
- 7, // 83: policy.SymmetricKey.key_mode:type_name -> policy.KeyMode
- 11, // 84: policy.SymmetricKey.provider_config:type_name -> policy.KeyProviderConfig
- 42, // 85: policy.SymmetricKey.metadata:type_name -> common.Metadata
- 15, // 86: policy.RegisteredResourceValue.ActionAttributeValue.action:type_name -> policy.Action
- 14, // 87: policy.RegisteredResourceValue.ActionAttributeValue.attribute_value:type_name -> policy.Value
- 42, // 88: policy.RegisteredResourceValue.ActionAttributeValue.metadata:type_name -> common.Metadata
- 89, // [89:89] is the sub-list for method output_type
- 89, // [89:89] is the sub-list for method input_type
- 89, // [89:89] is the sub-list for extension type_name
- 89, // [89:89] is the sub-list for extension extendee
- 0, // [0:89] is the sub-list for field type_name
+ 7, // 0: policy.SimpleKasPublicKey.algorithm:type_name -> policy.Algorithm
+ 11, // 1: policy.SimpleKasKey.public_key:type_name -> policy.SimpleKasPublicKey
+ 46, // 2: policy.KeyProviderConfig.metadata:type_name -> common.Metadata
+ 47, // 3: policy.Namespace.active:type_name -> google.protobuf.BoolValue
+ 46, // 4: policy.Namespace.metadata:type_name -> common.Metadata
+ 28, // 5: policy.Namespace.grants:type_name -> policy.KeyAccessServer
+ 12, // 6: policy.Namespace.kas_keys:type_name -> policy.SimpleKasKey
+ 14, // 7: policy.Attribute.namespace:type_name -> policy.Namespace
+ 0, // 8: policy.Attribute.rule:type_name -> policy.AttributeRuleTypeEnum
+ 16, // 9: policy.Attribute.values:type_name -> policy.Value
+ 28, // 10: policy.Attribute.grants:type_name -> policy.KeyAccessServer
+ 47, // 11: policy.Attribute.active:type_name -> google.protobuf.BoolValue
+ 12, // 12: policy.Attribute.kas_keys:type_name -> policy.SimpleKasKey
+ 47, // 13: policy.Attribute.allow_traversal:type_name -> google.protobuf.BoolValue
+ 46, // 14: policy.Attribute.metadata:type_name -> common.Metadata
+ 15, // 15: policy.Value.attribute:type_name -> policy.Attribute
+ 28, // 16: policy.Value.grants:type_name -> policy.KeyAccessServer
+ 47, // 17: policy.Value.active:type_name -> google.protobuf.BoolValue
+ 18, // 18: policy.Value.subject_mappings:type_name -> policy.SubjectMapping
+ 12, // 19: policy.Value.kas_keys:type_name -> policy.SimpleKasKey
+ 27, // 20: policy.Value.resource_mappings:type_name -> policy.ResourceMapping
+ 37, // 21: policy.Value.obligations:type_name -> policy.Obligation
+ 46, // 22: policy.Value.metadata:type_name -> common.Metadata
+ 10, // 23: policy.Action.standard:type_name -> policy.Action.StandardAction
+ 14, // 24: policy.Action.namespace:type_name -> policy.Namespace
+ 46, // 25: policy.Action.metadata:type_name -> common.Metadata
+ 16, // 26: policy.SubjectMapping.attribute_value:type_name -> policy.Value
+ 24, // 27: policy.SubjectMapping.subject_condition_set:type_name -> policy.SubjectConditionSet
+ 17, // 28: policy.SubjectMapping.actions:type_name -> policy.Action
+ 14, // 29: policy.SubjectMapping.namespace:type_name -> policy.Namespace
+ 46, // 30: policy.SubjectMapping.metadata:type_name -> common.Metadata
+ 3, // 31: policy.DynamicValueResolver.comparison:type_name -> policy.ConditionComparisonOperatorEnum
+ 47, // 32: policy.DynamicValueResolver.case_insensitive:type_name -> google.protobuf.BoolValue
+ 15, // 33: policy.DynamicValueMapping.attribute_definition:type_name -> policy.Attribute
+ 19, // 34: policy.DynamicValueMapping.value_resolver:type_name -> policy.DynamicValueResolver
+ 24, // 35: policy.DynamicValueMapping.subject_condition_set:type_name -> policy.SubjectConditionSet
+ 17, // 36: policy.DynamicValueMapping.actions:type_name -> policy.Action
+ 14, // 37: policy.DynamicValueMapping.namespace:type_name -> policy.Namespace
+ 46, // 38: policy.DynamicValueMapping.metadata:type_name -> common.Metadata
+ 1, // 39: policy.Condition.operator:type_name -> policy.SubjectMappingOperatorEnum
+ 3, // 40: policy.Condition.comparison:type_name -> policy.ConditionComparisonOperatorEnum
+ 4, // 41: policy.Condition.quantifier:type_name -> policy.ConditionQuantifierEnum
+ 47, // 42: policy.Condition.case_insensitive:type_name -> google.protobuf.BoolValue
+ 21, // 43: policy.ConditionGroup.conditions:type_name -> policy.Condition
+ 2, // 44: policy.ConditionGroup.boolean_operator:type_name -> policy.ConditionBooleanTypeEnum
+ 22, // 45: policy.SubjectSet.condition_groups:type_name -> policy.ConditionGroup
+ 14, // 46: policy.SubjectConditionSet.namespace:type_name -> policy.Namespace
+ 23, // 47: policy.SubjectConditionSet.subject_sets:type_name -> policy.SubjectSet
+ 46, // 48: policy.SubjectConditionSet.metadata:type_name -> common.Metadata
+ 46, // 49: policy.ResourceMappingGroup.metadata:type_name -> common.Metadata
+ 46, // 50: policy.ResourceMapping.metadata:type_name -> common.Metadata
+ 16, // 51: policy.ResourceMapping.attribute_value:type_name -> policy.Value
+ 26, // 52: policy.ResourceMapping.group:type_name -> policy.ResourceMappingGroup
+ 14, // 53: policy.ResourceMapping.namespace:type_name -> policy.Namespace
+ 32, // 54: policy.KeyAccessServer.public_key:type_name -> policy.PublicKey
+ 5, // 55: policy.KeyAccessServer.source_type:type_name -> policy.SourceType
+ 12, // 56: policy.KeyAccessServer.kas_keys:type_name -> policy.SimpleKasKey
+ 46, // 57: policy.KeyAccessServer.metadata:type_name -> common.Metadata
+ 47, // 58: policy.Key.is_active:type_name -> google.protobuf.BoolValue
+ 47, // 59: policy.Key.was_mapped:type_name -> google.protobuf.BoolValue
+ 30, // 60: policy.Key.public_key:type_name -> policy.KasPublicKey
+ 28, // 61: policy.Key.kas:type_name -> policy.KeyAccessServer
+ 46, // 62: policy.Key.metadata:type_name -> common.Metadata
+ 6, // 63: policy.KasPublicKey.alg:type_name -> policy.KasPublicKeyAlgEnum
+ 30, // 64: policy.KasPublicKeySet.keys:type_name -> policy.KasPublicKey
+ 31, // 65: policy.PublicKey.cached:type_name -> policy.KasPublicKeySet
+ 34, // 66: policy.RegisteredResource.values:type_name -> policy.RegisteredResourceValue
+ 14, // 67: policy.RegisteredResource.namespace:type_name -> policy.Namespace
+ 46, // 68: policy.RegisteredResource.metadata:type_name -> common.Metadata
+ 33, // 69: policy.RegisteredResourceValue.resource:type_name -> policy.RegisteredResource
+ 45, // 70: policy.RegisteredResourceValue.action_attribute_values:type_name -> policy.RegisteredResourceValue.ActionAttributeValue
+ 46, // 71: policy.RegisteredResourceValue.metadata:type_name -> common.Metadata
+ 35, // 72: policy.RequestContext.pep:type_name -> policy.PolicyEnforcementPoint
+ 14, // 73: policy.Obligation.namespace:type_name -> policy.Namespace
+ 38, // 74: policy.Obligation.values:type_name -> policy.ObligationValue
+ 46, // 75: policy.Obligation.metadata:type_name -> common.Metadata
+ 37, // 76: policy.ObligationValue.obligation:type_name -> policy.Obligation
+ 39, // 77: policy.ObligationValue.triggers:type_name -> policy.ObligationTrigger
+ 46, // 78: policy.ObligationValue.metadata:type_name -> common.Metadata
+ 38, // 79: policy.ObligationTrigger.obligation_value:type_name -> policy.ObligationValue
+ 17, // 80: policy.ObligationTrigger.action:type_name -> policy.Action
+ 16, // 81: policy.ObligationTrigger.attribute_value:type_name -> policy.Value
+ 36, // 82: policy.ObligationTrigger.context:type_name -> policy.RequestContext
+ 14, // 83: policy.ObligationTrigger.namespace:type_name -> policy.Namespace
+ 46, // 84: policy.ObligationTrigger.metadata:type_name -> common.Metadata
+ 43, // 85: policy.KasKey.key:type_name -> policy.AsymmetricKey
+ 7, // 86: policy.AsymmetricKey.key_algorithm:type_name -> policy.Algorithm
+ 8, // 87: policy.AsymmetricKey.key_status:type_name -> policy.KeyStatus
+ 9, // 88: policy.AsymmetricKey.key_mode:type_name -> policy.KeyMode
+ 41, // 89: policy.AsymmetricKey.public_key_ctx:type_name -> policy.PublicKeyCtx
+ 42, // 90: policy.AsymmetricKey.private_key_ctx:type_name -> policy.PrivateKeyCtx
+ 13, // 91: policy.AsymmetricKey.provider_config:type_name -> policy.KeyProviderConfig
+ 46, // 92: policy.AsymmetricKey.metadata:type_name -> common.Metadata
+ 8, // 93: policy.SymmetricKey.key_status:type_name -> policy.KeyStatus
+ 9, // 94: policy.SymmetricKey.key_mode:type_name -> policy.KeyMode
+ 13, // 95: policy.SymmetricKey.provider_config:type_name -> policy.KeyProviderConfig
+ 46, // 96: policy.SymmetricKey.metadata:type_name -> common.Metadata
+ 17, // 97: policy.RegisteredResourceValue.ActionAttributeValue.action:type_name -> policy.Action
+ 16, // 98: policy.RegisteredResourceValue.ActionAttributeValue.attribute_value:type_name -> policy.Value
+ 46, // 99: policy.RegisteredResourceValue.ActionAttributeValue.metadata:type_name -> common.Metadata
+ 100, // [100:100] is the sub-list for method output_type
+ 100, // [100:100] is the sub-list for method input_type
+ 100, // [100:100] is the sub-list for extension type_name
+ 100, // [100:100] is the sub-list for extension extendee
+ 0, // [0:100] is the sub-list for field type_name
}
func init() { file_policy_objects_proto_init() }
@@ -4089,7 +4518,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Condition); i {
+ switch v := v.(*DynamicValueResolver); i {
case 0:
return &v.state
case 1:
@@ -4101,7 +4530,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConditionGroup); i {
+ switch v := v.(*DynamicValueMapping); i {
case 0:
return &v.state
case 1:
@@ -4113,7 +4542,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubjectSet); i {
+ switch v := v.(*Condition); i {
case 0:
return &v.state
case 1:
@@ -4125,7 +4554,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubjectConditionSet); i {
+ switch v := v.(*ConditionGroup); i {
case 0:
return &v.state
case 1:
@@ -4137,7 +4566,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubjectProperty); i {
+ switch v := v.(*SubjectSet); i {
case 0:
return &v.state
case 1:
@@ -4149,7 +4578,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceMappingGroup); i {
+ switch v := v.(*SubjectConditionSet); i {
case 0:
return &v.state
case 1:
@@ -4161,7 +4590,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceMapping); i {
+ switch v := v.(*SubjectProperty); i {
case 0:
return &v.state
case 1:
@@ -4173,7 +4602,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KeyAccessServer); i {
+ switch v := v.(*ResourceMappingGroup); i {
case 0:
return &v.state
case 1:
@@ -4185,7 +4614,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Key); i {
+ switch v := v.(*ResourceMapping); i {
case 0:
return &v.state
case 1:
@@ -4197,7 +4626,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KasPublicKey); i {
+ switch v := v.(*KeyAccessServer); i {
case 0:
return &v.state
case 1:
@@ -4209,7 +4638,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KasPublicKeySet); i {
+ switch v := v.(*Key); i {
case 0:
return &v.state
case 1:
@@ -4221,7 +4650,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PublicKey); i {
+ switch v := v.(*KasPublicKey); i {
case 0:
return &v.state
case 1:
@@ -4233,7 +4662,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegisteredResource); i {
+ switch v := v.(*KasPublicKeySet); i {
case 0:
return &v.state
case 1:
@@ -4245,7 +4674,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegisteredResourceValue); i {
+ switch v := v.(*PublicKey); i {
case 0:
return &v.state
case 1:
@@ -4257,7 +4686,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyEnforcementPoint); i {
+ switch v := v.(*RegisteredResource); i {
case 0:
return &v.state
case 1:
@@ -4269,7 +4698,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RequestContext); i {
+ switch v := v.(*RegisteredResourceValue); i {
case 0:
return &v.state
case 1:
@@ -4281,7 +4710,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Obligation); i {
+ switch v := v.(*PolicyEnforcementPoint); i {
case 0:
return &v.state
case 1:
@@ -4293,7 +4722,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ObligationValue); i {
+ switch v := v.(*RequestContext); i {
case 0:
return &v.state
case 1:
@@ -4305,7 +4734,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ObligationTrigger); i {
+ switch v := v.(*Obligation); i {
case 0:
return &v.state
case 1:
@@ -4317,7 +4746,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KasKey); i {
+ switch v := v.(*ObligationValue); i {
case 0:
return &v.state
case 1:
@@ -4329,7 +4758,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PublicKeyCtx); i {
+ switch v := v.(*ObligationTrigger); i {
case 0:
return &v.state
case 1:
@@ -4341,7 +4770,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PrivateKeyCtx); i {
+ switch v := v.(*KasKey); i {
case 0:
return &v.state
case 1:
@@ -4353,7 +4782,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AsymmetricKey); i {
+ switch v := v.(*PublicKeyCtx); i {
case 0:
return &v.state
case 1:
@@ -4365,7 +4794,7 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SymmetricKey); i {
+ switch v := v.(*PrivateKeyCtx); i {
case 0:
return &v.state
case 1:
@@ -4377,6 +4806,30 @@ func file_policy_objects_proto_init() {
}
}
file_policy_objects_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AsymmetricKey); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_objects_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SymmetricKey); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_objects_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegisteredResourceValue_ActionAttributeValue); i {
case 0:
return &v.state
@@ -4393,7 +4846,7 @@ func file_policy_objects_proto_init() {
(*Action_Standard)(nil),
(*Action_Custom)(nil),
}
- file_policy_objects_proto_msgTypes[19].OneofWrappers = []interface{}{
+ file_policy_objects_proto_msgTypes[21].OneofWrappers = []interface{}{
(*PublicKey_Remote)(nil),
(*PublicKey_Cached)(nil),
}
@@ -4402,8 +4855,8 @@ func file_policy_objects_proto_init() {
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_policy_objects_proto_rawDesc,
- NumEnums: 9,
- NumMessages: 33,
+ NumEnums: 11,
+ NumMessages: 35,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/service/policy/dynamicvaluemapping/dynamic_value_mapping.proto b/service/policy/dynamicvaluemapping/dynamic_value_mapping.proto
new file mode 100644
index 0000000000..5a2242bdb4
--- /dev/null
+++ b/service/policy/dynamicvaluemapping/dynamic_value_mapping.proto
@@ -0,0 +1,178 @@
+syntax = "proto3";
+
+package policy.dynamicvaluemapping;
+
+import "buf/validate/validate.proto";
+import "common/common.proto";
+import "policy/objects.proto";
+import "policy/selectors.proto";
+import "policy/subjectmapping/subject_mapping.proto";
+
+/*
+ Dynamic Value Mapping CRUD operations
+
+ A DynamicValueMapping raises entitlement authority from a concrete AttributeValue to the
+ AttributeDefinition: at decision time the value_resolver compares the requested resource
+ value segment against the entity representation, avoiding pre-provisioning a value +
+ subject mapping per discrete value.
+*/
+
+message GetDynamicValueMappingRequest {
+ // Required
+ string id = 1 [(buf.validate.field).string.uuid = true];
+}
+message GetDynamicValueMappingResponse {
+ policy.DynamicValueMapping dynamic_value_mapping = 1;
+}
+
+enum SortDynamicValueMappingsType {
+ SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UNSPECIFIED = 0;
+ SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_CREATED_AT = 1;
+ SORT_DYNAMIC_VALUE_MAPPINGS_TYPE_UPDATED_AT = 2;
+}
+
+message DynamicValueMappingsSort {
+ SortDynamicValueMappingsType field = 1 [(buf.validate.field).enum.defined_only = true];
+ policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true];
+}
+
+message ListDynamicValueMappingsRequest {
+ // Optional: Namespace ID or FQN to filter by
+ option (buf.validate.message).oneof = {
+ fields: ["namespace_id", "namespace_fqn"]
+ required: false
+ };
+ string namespace_id = 1 [(buf.validate.field).string.uuid = true];
+ string namespace_fqn = 2 [
+ (buf.validate.field).string = {
+ min_len: 1
+ uri: true
+ }
+ ];
+
+ // Optional: Attribute Definition ID to filter by
+ string attribute_definition_id = 3 [(buf.validate.field).cel = {
+ id: "optional_uuid_format"
+ message: "Optional field must be a valid UUID"
+ expression: "size(this) == 0 || this.matches('[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}')"
+ }];
+
+ // Optional
+ policy.PageRequest pagination = 10;
+
+ // Optional - CONSTRAINT: max 1 item
+ repeated DynamicValueMappingsSort sort = 11 [(buf.validate.field).repeated.max_items = 1];
+}
+message ListDynamicValueMappingsResponse {
+ repeated policy.DynamicValueMapping dynamic_value_mappings = 1;
+
+ policy.PageResponse pagination = 10;
+}
+
+message CreateDynamicValueMappingRequest {
+ // Required: Attribute Definition ID or FQN to scope the mapping to
+ option (buf.validate.message).oneof = {
+ fields: ["attribute_definition_id", "attribute_definition_fqn"]
+ required: true
+ };
+ // Optional: Namespace ID or FQN to scope the mapping to
+ option (buf.validate.message).oneof = {
+ fields: ["namespace_id", "namespace_fqn"]
+ required: false
+ };
+
+ string attribute_definition_id = 1 [(buf.validate.field).string.uuid = true];
+ string attribute_definition_fqn = 2 [
+ (buf.validate.field).string = {
+ min_len: 1
+ uri: true
+ }
+ ];
+
+ // Required: the dynamic resolver comparing entity selector result to the resource value segment
+ policy.DynamicValueResolver value_resolver = 3 [(buf.validate.field).required = true];
+
+ // Required: actions permitted on a matched value
+ repeated policy.Action actions = 4 [
+ (buf.validate.field).repeated.min_items = 1,
+ (buf.validate.field).cel = {
+ id: "action_name_or_id_not_empty"
+ message: "Action name or ID must not be empty if provided"
+ expression: "this.all(item, item.name != '' || item.id != '')"
+ }
+ ];
+
+ // Optional static pre-gate. Reuse an existing SubjectConditionSet (prioritized) ...
+ string existing_subject_condition_set_id = 5 [(buf.validate.field).cel = {
+ id: "optional_uuid_format"
+ message: "Optional field must be a valid UUID"
+ expression: "size(this) == 0 || this.matches('[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}')"
+ }];
+ // ... or create a new one (ignored if existing_subject_condition_set_id is provided)
+ policy.subjectmapping.SubjectConditionSetCreate new_subject_condition_set = 6;
+
+ // Optional: namespace ID or FQN for the mapping
+ string namespace_id = 7 [(buf.validate.field).string.uuid = true];
+ string namespace_fqn = 8 [
+ (buf.validate.field).string = {
+ min_len: 1
+ uri: true
+ }
+ ];
+
+ // Optional
+ common.MetadataMutable metadata = 100;
+}
+message CreateDynamicValueMappingResponse {
+ policy.DynamicValueMapping dynamic_value_mapping = 1;
+}
+
+message UpdateDynamicValueMappingRequest {
+ // Required
+ string id = 1 [(buf.validate.field).string.uuid = true];
+
+ // Optional: replace the dynamic resolver
+ policy.DynamicValueResolver value_resolver = 2;
+
+ // Optional: replace the static pre-gate SubjectConditionSet by id
+ string subject_condition_set_id = 3 [(buf.validate.field).cel = {
+ id: "optional_uuid_format"
+ message: "Optional field must be a valid UUID"
+ expression: "size(this) == 0 || this.matches('[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}')"
+ }];
+
+ // Optional: replace the entire list of actions
+ repeated policy.Action actions = 4 [(buf.validate.field).cel = {
+ id: "action_name_or_id_not_empty"
+ message: "Action name or ID must not be empty if provided"
+ expression: "this.size() == 0 || this.all(item, item.name != '' || item.id != '')"
+ }];
+
+ // Common metadata
+ common.MetadataMutable metadata = 100;
+ common.MetadataUpdateEnum metadata_update_behavior = 101;
+}
+message UpdateDynamicValueMappingResponse {
+ policy.DynamicValueMapping dynamic_value_mapping = 1;
+}
+
+message DeleteDynamicValueMappingRequest {
+ // Required
+ string id = 1 [(buf.validate.field).string.uuid = true];
+}
+message DeleteDynamicValueMappingResponse {
+ // Only ID of the deleted mapping provided
+ policy.DynamicValueMapping dynamic_value_mapping = 1;
+}
+
+service DynamicValueMappingService {
+ rpc ListDynamicValueMappings(ListDynamicValueMappingsRequest) returns (ListDynamicValueMappingsResponse) {
+ option idempotency_level = NO_SIDE_EFFECTS;
+ }
+ rpc GetDynamicValueMapping(GetDynamicValueMappingRequest) returns (GetDynamicValueMappingResponse) {
+ option idempotency_level = NO_SIDE_EFFECTS;
+ }
+ rpc CreateDynamicValueMapping(CreateDynamicValueMappingRequest) returns (CreateDynamicValueMappingResponse) {}
+ rpc UpdateDynamicValueMapping(UpdateDynamicValueMappingRequest) returns (UpdateDynamicValueMappingResponse) {}
+ rpc DeleteDynamicValueMapping(DeleteDynamicValueMappingRequest) returns (DeleteDynamicValueMappingResponse) {}
+}
diff --git a/service/policy/objects.proto b/service/policy/objects.proto
index 2bf66902ae..5a241e72ea 100644
--- a/service/policy/objects.proto
+++ b/service/policy/objects.proto
@@ -180,6 +180,32 @@ enum ConditionBooleanTypeEnum {
CONDITION_BOOLEAN_TYPE_ENUM_OR = 2;
}
+// How a selector result is compared against a comparison value. Replaces the all-in-one
+// SubjectMappingOperatorEnum by separating the comparison from the quantifier (see
+// ConditionQuantifierEnum) and case sensitivity.
+enum ConditionComparisonOperatorEnum {
+ CONDITION_COMPARISON_OPERATOR_ENUM_UNSPECIFIED = 0;
+ // exact string equality
+ CONDITION_COMPARISON_OPERATOR_ENUM_EQUALS = 1;
+ // substring containment
+ CONDITION_COMPARISON_OPERATOR_ENUM_CONTAINS = 2;
+ // prefix match
+ CONDITION_COMPARISON_OPERATOR_ENUM_STARTS_WITH = 3;
+ // suffix match; the safe operator for domain matching (e.g. email domains)
+ CONDITION_COMPARISON_OPERATOR_ENUM_ENDS_WITH = 4;
+}
+
+// How matches are aggregated across the comparison set (subject_external_values).
+enum ConditionQuantifierEnum {
+ CONDITION_QUANTIFIER_ENUM_UNSPECIFIED = 0;
+ // at least one match (legacy IN behavior)
+ CONDITION_QUANTIFIER_ENUM_ANY = 1;
+ // every expected value matches
+ CONDITION_QUANTIFIER_ENUM_ALL = 2;
+ // no matches (legacy NOT_IN behavior)
+ CONDITION_QUANTIFIER_ENUM_NONE = 3;
+}
+
/*
Subject Mapping: A Policy assigning Subject Set(s) to a permitted attribute
value + action(s) combination
@@ -204,6 +230,59 @@ message SubjectMapping {
common.Metadata metadata = 100;
}
+/*
+ Dynamic Value Resolver: the dynamic half of a DynamicValueMapping. It resolves a selector
+ against the entity representation, then tests whether any resolved entity value matches the
+ requested resource value segment under comparison. The match is inherently existential over
+ the resolved entity values, so no quantifier is carried here.
+*/
+message DynamicValueResolver {
+ // a selector for a field value on a flattened Entity Representation (such as from
+ // idP/LDAP), e.g. ".patientAssignments[]"
+ string subject_external_selector_value = 1 [(buf.validate.field).required = true];
+
+ // how the requested resource value segment is compared against each value the selector
+ // resolves from the entity representation
+ ConditionComparisonOperatorEnum comparison = 2 [
+ (buf.validate.field).enum.defined_only = true,
+ (buf.validate.field).required = true
+ ];
+
+ // when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ // BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ google.protobuf.BoolValue case_insensitive = 3;
+}
+
+/*
+ Dynamic Value Mapping: a Policy assigning permitted action(s) to
+ dynamically-requested values under an Attribute Definition. It raises entitlement
+ authority from a concrete Attribute Value to the Attribute Definition: at decision time
+ the value_resolver compares the requested resource value segment against the entity
+ representation, avoiding pre-provisioning a value + subject mapping per discrete value.
+*/
+message DynamicValueMapping {
+ string id = 1;
+
+ // the Attribute Definition whose values are entitled dynamically
+ Attribute attribute_definition = 2;
+
+ // the dynamic resolver matched against the requested resource value segment
+ DynamicValueResolver value_resolver = 3;
+
+ // optional static pre-gate on the entity, evaluated with normal SubjectConditionSet
+ // semantics (no dynamic overload). When present, both the gate and the resolver must
+ // pass for entitlement.
+ SubjectConditionSet subject_condition_set = 4;
+
+ // the actions permitted by subjects in this mapping
+ repeated Action actions = 5;
+
+ // the namespace containing this mapping
+ Namespace namespace = 6;
+
+ common.Metadata metadata = 100;
+}
+
/**
A Condition defines a rule of
@@ -213,16 +292,28 @@ message Condition {
// from idP/LDAP)
string subject_external_selector_value = 1 [(buf.validate.field).required = true];
- // the evaluation operator of relation
+ // Deprecated: use comparison + quantifier (+ case_insensitive) instead. Normalized to the
+ // decomposed fields in the service layer for backward compatibility.
SubjectMappingOperatorEnum operator = 2 [
+ deprecated = true,
(buf.validate.field).enum.defined_only = true,
- (buf.validate.field).required = true
+ (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE
];
// list of comparison values for the result of applying the
// subject_external_selector_value on a flattened Entity Representation
// (Subject), evaluated by the operator
repeated string subject_external_values = 3 [(buf.validate.field).repeated.min_items = 1];
+
+ // how each selector result is compared to subject_external_values entries
+ ConditionComparisonOperatorEnum comparison = 4 [(buf.validate.field).enum.defined_only = true];
+
+ // how matches are aggregated across subject_external_values
+ ConditionQuantifierEnum quantifier = 5 [(buf.validate.field).enum.defined_only = true];
+
+ // when set true, comparison is case-insensitive; unset is treated as case-sensitive. Modeled as
+ // BoolValue so an explicit false is distinguishable from unset, leaving room to change the default.
+ google.protobuf.BoolValue case_insensitive = 6;
}
// A collection of Conditions evaluated by the boolean_operator provided
|